osmosis-models/macros/snowflake_api/get_blockchain_api.sql

127 lines
3.1 KiB
MySQL
Raw Normal View History

{% macro get_blockchain_api() %}
{% set query %}
2024-11-17 12:51:51 +00:00
CREATE schema if NOT EXISTS {{ target.database }}.bronze_api;
{% endset %}
{% do run_query(query) %}
{% set query %}
2024-11-17 12:51:51 +00:00
CREATE TABLE if NOT EXISTS {{ target.database }}.bronze_api.blockchain(
call ARRAY,
DATA variant,
_inserted_timestamp timestamp_ntz
);
{% endset %}
{% do run_query(query) %}
{% set query %}
INSERT INTO
2024-11-17 12:51:51 +00:00
{{ target.database }}.bronze_api.blockchain(
call,
DATA,
_inserted_timestamp
) WITH base AS (
SELECT
*
FROM
(
SELECT
*,
conditional_true_event(
CASE
WHEN rn_mod_out = 1 THEN TRUE
ELSE FALSE
END
) over (
ORDER BY
2024-11-17 12:51:51 +00:00
min_block DESC
) groupID_out
FROM
(
SELECT
*,
MOD(ROW_NUMBER() over(
ORDER BY
2024-07-29 13:45:06 +00:00
min_block), 1) rn_mod_out
FROM
(
SELECT
MIN(block_id) min_block,
MAX(block_id) max_block,
ARRAY_AGG(block_id) blocks
FROM
(
SELECT
conditional_true_event(
CASE
WHEN rn_mod = 1 THEN TRUE
ELSE FALSE
END
) over (
ORDER BY
block_ID
) groupID,
block_id
FROM
(
SELECT
block_Id :: STRING block_Id,
MOD(ROW_NUMBER() over(
ORDER BY
block_id), 20) rn_mod
FROM
(
SELECT
DISTINCT block_id
FROM
2024-11-17 12:51:51 +00:00
{{ target.database }}.silver.blocks
EXCEPT
SELECT
block_id
FROM
2024-11-17 12:51:51 +00:00
{{ target.database }}.silver.blockchain
)
ORDER BY
2024-11-17 12:51:51 +00:00
block_id DESC
)
)
GROUP BY
groupID
)
)
)
WHERE
groupID_out < 11
),
calls AS (
SELECT
2024-07-29 13:45:06 +00:00
min_block,
ARRAY_AGG(
{ 'jsonrpc': '2.0',
'id': min_block :: INT,
'method': 'blockchain',
'params': [min_block::STRING,max_block::STRING] }
) call
FROM
base
GROUP BY
2024-07-29 13:45:06 +00:00
min_block
LIMIT
2024-11-12 16:28:06 +00:00
50
)
SELECT
call,
2024-03-05 16:20:17 +00:00
{{ target.database }}.live.udf_api (
'POST',
2024-11-12 16:07:57 +00:00
'{Service}/{Authentication}',
2024-03-05 16:20:17 +00:00
OBJECT_CONSTRUCT(
'Content-Type',
'application/json'
),
call,
2024-11-12 16:07:57 +00:00
'Vault/prod/osmosis/quicknode/mainnet_new'
) AS DATA,
SYSDATE()
FROM
calls;
{% endset %}
{% do run_query(query) %}
{% endmacro %}