solana-models/macros/helpers/helpers.sql
tarikceric b22caeab39
An 4528/events inner (#655)
* initial silver models

* create gold tables

* backfill

* incremental backfill runs

* update run interval

* update tests

* removed filter

* updated per pr comments

* update backfill and cluster/so

* update gold inc filter

* backfill updates

* clean up

* disable fr and update backfill date

* update backfill logic

* correct filter date
2024-09-19 10:53:14 -07:00

47 lines
2.9 KiB
SQL

{% macro get_batch_load_logic(model_name, batch_size_days, end_date) -%}
{% set query %}
select max(_inserted_timestamp)::date::string from {{ model_name }};
{% endset %}
{% set max_date = run_query(query).columns[0].values()[0] %}
{% if max_date < '2022-08-24' %}
{{ "and _inserted_timestamp between (select max(_inserted_timestamp) from " ~ model_name ~ ") and (select dateadd('hour',12,max(_inserted_timestamp)) from " ~ model_name ~ ")" }}
{% elif max_date >= '2022-08-24' and max_date < '2022-08-31' %}
{{ "and _inserted_timestamp between (select max(_inserted_timestamp) from " ~ model_name ~ ") and '2022-08-31 01:00:00.000' " }}
{% elif max_date == '2022-09-01' %}
{{ "and _inserted_timestamp between (select max(_inserted_timestamp) from " ~ model_name ~ ") and (select dateadd('hour',8,max(_inserted_timestamp)) from " ~ model_name ~ ")" }}
{% elif max_date >= '2022-08-31' and max_date < '2022-09-05' %}
{{ "and _inserted_timestamp between (select max(_inserted_timestamp) from " ~ model_name ~ ") and (select dateadd('hour',4,max(_inserted_timestamp)) from " ~ model_name ~ ")" }}
{% elif max_date >= '2022-09-05' and max_date < end_date %}
{{ "and _inserted_timestamp between (select max(_inserted_timestamp) from " ~ model_name ~ ") and (select dateadd('day',"~ batch_size_days ~",max(_inserted_timestamp)) from " ~ model_name ~ ")" }}
{% else %}
{{ "and _inserted_timestamp >= (select max(_inserted_timestamp) from " ~ model_name ~ ")"}}
{% endif %}
{%- endmacro %}
{% macro get_batch_load_logic_with_alias(model_name, batch_size_days, end_date, alias) -%}
{% set query %}
select max(_inserted_timestamp)::date::string from {{ model_name }};
{% endset %}
{% set max_date = run_query(query).columns[0].values()[0] %}
{% if max_date >= '2022-09-01' and max_date < '2022-09-05' %}
{{ "and " ~ alias ~ "._inserted_timestamp between (select max(_inserted_timestamp) from " ~ model_name ~ ") and (select dateadd('hour',4,max(_inserted_timestamp)) from " ~ model_name ~ ")" }}
{% elif max_date >= '2022-09-05' and max_date < end_date %}
{{ "and " ~ alias ~ "._inserted_timestamp between (select max(_inserted_timestamp) from " ~ model_name ~ ") and (select dateadd('day',"~ batch_size_days ~",max(_inserted_timestamp)) from " ~ model_name ~ ")" }}
{% else %}
{{ "and " ~ alias ~ "._inserted_timestamp >= (select max(_inserted_timestamp) from " ~ model_name ~ ")"}}
{% endif %}
{%- endmacro %}
{% macro dispatch_github_workflow(workflow_name) %}
{% set context_query %}
SET LIVEQUERY_CONTEXT = '{"userId":"SYSTEM"}';
{% endset %}
{% do run_query(context_query) %}
{% set query %}
SELECT github_actions.workflow_dispatches('FlipsideCrypto', 'solana-models', '{{ workflow_name }}.yml', NULL)
{% endset %}
{% do run_query(query) %}
{% endmacro %}