From ab3c73e994bc74a3944f60ef6b838a123702708e Mon Sep 17 00:00:00 2001 From: desmond-hui <97470747+desmond-hui@users.noreply.github.com> Date: Thu, 30 Jun 2022 18:07:25 -0700 Subject: [PATCH] An 1709/make dev refresh dbt cloud op (#38) * dev refresh will now run on dbt cloud * remove unintended file commit --- dbt_project.yml | 7 +++---- macros/create_tasks.sql | 7 ------- macros/run_sp_create_prod_clone.sql | 7 +++++++ macros/sp_create_prod_clone.sql | 26 +++++++++++++++++++++--- macros/task_run_sp_create_prod_clone.sql | 9 -------- 5 files changed, 33 insertions(+), 23 deletions(-) delete mode 100644 macros/create_tasks.sql create mode 100644 macros/run_sp_create_prod_clone.sql delete mode 100644 macros/task_run_sp_create_prod_clone.sql diff --git a/dbt_project.yml b/dbt_project.yml index 61432fa..749a1bd 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -25,10 +25,9 @@ clean-targets: # directories to be removed by `dbt clean` - "dbt_packages" on-run-start: - - "{{create_sps()}}" - - "{{create_tasks()}}" - - "{{create_udfs()}}" - - "{{sp_create_bulk_get_topshot_moments_minted_metadata()}}" + - '{{create_sps()}}' + - '{{create_udfs()}}' + - '{{sp_create_bulk_get_topshot_moments_minted_metadata()}}' # Configuring models # Full documentation: https://docs.getdbt.com/docs/configuring-models diff --git a/macros/create_tasks.sql b/macros/create_tasks.sql deleted file mode 100644 index 1dcdbe4..0000000 --- a/macros/create_tasks.sql +++ /dev/null @@ -1,7 +0,0 @@ -{% macro create_tasks() %} - {% if target.database == 'FLOW' %} - CREATE SCHEMA IF NOT EXISTS _internal; - {{ task_run_sp_create_prod_clone('_internal') }}; - {% endif %} - -{% endmacro %} \ No newline at end of file diff --git a/macros/run_sp_create_prod_clone.sql b/macros/run_sp_create_prod_clone.sql new file mode 100644 index 0000000..7412e12 --- /dev/null +++ b/macros/run_sp_create_prod_clone.sql @@ -0,0 +1,7 @@ +{% macro run_sp_create_prod_clone() %} +{% set clone_query %} +call flow._internal.create_prod_clone('flow', 'flow_dev', 'internal_dev'); +{% endset %} + +{% do run_query(clone_query) %} +{% endmacro %} \ No newline at end of file diff --git a/macros/sp_create_prod_clone.sql b/macros/sp_create_prod_clone.sql index c17e526..2a1fa7b 100644 --- a/macros/sp_create_prod_clone.sql +++ b/macros/sp_create_prod_clone.sql @@ -33,13 +33,33 @@ $$ snowflake.execute({sqlText: `GRANT OWNERSHIP ON TABLE ${DESTINATION_DB_NAME}.${schema}.${table_name} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`}); } - var existing_procedures = snowflake.execute({sqlText: `SELECT stage_schema, stage_name + var existing_stages = snowflake.execute({sqlText: `SELECT stage_schema, stage_name FROM ${DESTINATION_DB_NAME}.INFORMATION_SCHEMA.STAGES;`}); + while (existing_stages.next()) { + var schema = existing_stages.getColumnValue(1) + var stage_name = existing_stages.getColumnValue(2) + snowflake.execute({sqlText: `GRANT OWNERSHIP ON STAGE ${DESTINATION_DB_NAME}.${schema}.${stage_name} to role ${ROLE_NAME} REVOKE CURRENT GRANTS;`}); + } + + var existing_functions = snowflake.execute({sqlText: `SELECT function_schema, function_name, concat('(',array_to_string(regexp_substr_all(argument_signature, 'VARCHAR|NUMBER|FLOAT|ARRAY|VARIANT|OBJECT|DOUBLE'),','),')') as argument_signature + FROM ${DESTINATION_DB_NAME}.INFORMATION_SCHEMA.FUNCTIONS;`}); + + while (existing_functions.next()) { + var schema = existing_functions.getColumnValue(1) + var function_name = existing_functions.getColumnValue(2) + var argument_signature = existing_functions.getColumnValue(3) + snowflake.execute({sqlText: `GRANT OWNERSHIP ON FUNCTION ${DESTINATION_DB_NAME}.${schema}.${function_name}${argument_signature} to role ${ROLE_NAME} REVOKE CURRENT GRANTS;`}); + } + + var existing_procedures = snowflake.execute({sqlText: `SELECT procedure_schema, procedure_name, concat('(',array_to_string(regexp_substr_all(argument_signature, 'VARCHAR|NUMBER|FLOAT|ARRAY|VARIANT|OBJECT|DOUBLE'),','),')') as argument_signature + FROM ${DESTINATION_DB_NAME}.INFORMATION_SCHEMA.PROCEDURES;`}); + while (existing_procedures.next()) { var schema = existing_procedures.getColumnValue(1) - var stage_name = existing_procedures.getColumnValue(2) - snowflake.execute({sqlText: `GRANT OWNERSHIP ON STAGE ${DESTINATION_DB_NAME}.${schema}.${stage_name} to role ${ROLE_NAME} REVOKE CURRENT GRANTS;`}); + var procedure_name = existing_procedures.getColumnValue(2) + var argument_signature = existing_procedures.getColumnValue(3) + snowflake.execute({sqlText: `GRANT OWNERSHIP ON PROCEDURE ${DESTINATION_DB_NAME}.${schema}.${procedure_name}${argument_signature} to role ${ROLE_NAME} REVOKE CURRENT GRANTS;`}); } snowflake.execute({sqlText: `GRANT OWNERSHIP ON DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME};`}) diff --git a/macros/task_run_sp_create_prod_clone.sql b/macros/task_run_sp_create_prod_clone.sql deleted file mode 100644 index 01fc81b..0000000 --- a/macros/task_run_sp_create_prod_clone.sql +++ /dev/null @@ -1,9 +0,0 @@ -{% macro task_run_sp_create_prod_clone(target_schema) -%} - create or replace task {{target_schema}}.run_sp_create_prod_clone - warehouse = dbt_cloud - schedule = 'USING CRON 15 10 * * * UTC' - as - call {{ target_schema }}.create_prod_clone('flow', 'flow_dev', 'internal_dev'); - - alter task {{ target_schema }}.run_sp_create_prod_clone resume -{%- endmacro %} \ No newline at end of file