crosschain-models/macros/utils.sql
drethereum 59dec0dd02
AN-4377/prices-update (#267)
* test tables

* draft

* unique id

* streamline reorg and silver join

* folder

* asset metadata

* folders

* legacy models

* tags

* comment

* json

* streamline models 2

* asset metadata streamline tests

* complete model

* comments

* asset metadata incremental

* realtime params and filter

* incremental logic on assets

* spacing

* inserted timestamp in complete

* workers

* configured realtime, history, complete and bronze

* inserted timestamp from info schema

* history vars, calls, silver impute logic

* comments

* asset metadata source in v1

* cast

* workflow changes

* typo

* stats in workflow

* integrate changes for fsc-utils

* ref

* dbt_project config

* dbt project

* v1.20.1

* history sched

* bump fsc-utils to 1.20.2

* limits

---------

Co-authored-by: shah <info@shahnewazkhan.ca>
2024-03-05 13:45:02 -07:00

118 lines
3.4 KiB
SQL

{% macro if_data_call_function(
func,
target
) %}
{% if var(
"STREAMLINE_INVOKE_STREAMS"
) %}
{% if execute %}
{{ log(
"Running macro `if_data_call_function`: Calling udf " ~ func ~ " on " ~ target,
True
) }}
{% endif %}
SELECT
{{ func }}
WHERE
EXISTS(
SELECT
1
FROM
{{ target }}
LIMIT
1
)
{% else %}
{% if execute %}
{{ log(
"Running macro `if_data_call_function`: NOOP",
False
) }}
{% endif %}
SELECT
NULL
{% endif %}
{% endmacro %}
{% macro if_data_call_wait() %}
{% if var(
"STREAMLINE_INVOKE_STREAMS"
) %}
{% set query %}
SELECT
1
WHERE
EXISTS(
SELECT
1
FROM
{{ model.schema ~ "." ~ model.alias }}
LIMIT
1
) {% endset %}
{% if execute %}
{% set results = run_query(
query
) %}
{% if results %}
{{ log(
"Waiting...",
info = True
) }}
{% set wait_query %}
SELECT
system$wait(
{{ var(
"WAIT",
600
) }}
) {% endset %}
{% do run_query(wait_query) %}
{% else %}
SELECT
NULL;
{% endif %}
{% endif %}
{% endif %}
{% endmacro %}
-- macro used to run a sql query and log the results
-- TODO: Move this to fsc-utils package
{% macro run_and_log_sql(sql_query, log_level='info') %}
{% set result_var = 'result_' ~ sql_query[:8] %}
{% set log_message = 'Executing SQL query: ' ~ sql_query %}
{% do log(log_message,info=True) %}
{% set query_result = run_query(sql_query) %}
{% set result_str = query_result.columns[0].values()[0] if query_result.columns else None %}
{% set log_message = 'SQL query result: ' ~ result_str %}
{% do log(log_message, info=True) %}
{{ result_var }}
{% endmacro %}
-- macro used to grant streamline priveleges to a role
{% macro grant_streamline_privileges(role) %}
{{ log("Granting privileges to role: " ~ role, info=True) }}
{% set sql %}
grant usage on database {{ target.database }} to role {{ role }};
grant usage on schema {{ target.schema }} to role {{ role }};
grant usage on warehouse {{ target.warehouse }} to role {{ role }};
grant select on all tables in schema {{ target.schema }} to role {{ role }};
grant select on all views in schema {{ target.schema }} to role {{ role }};
grant select on future views in schema {{ target.schema }} to role {{ role }};
grant usage on database streamline to role {{ role }};
grant usage on schema streamline.{{ target.schema }} to role {{ role }};
grant select on all tables in schema streamline.{{ target.schema }} to role {{ role }};
grant usage on schema {{target.database}}.bronze to role {{ role }};
{% endset %}
{% do run_and_log_sql(sql) %}
{% do log("Privileges granted", info=True) %}
{% endmacro %}