Post-挂钩到 DBT_CLOUD_PR 模式(DBT Cloud CI)
Post-hook to DBT_CLOUD_PR Schemas (DBT Cloud CI)
我想知道是否可以将 post 挂钩附加到 DBT_CLOUD_PR 模式(由 dbt Cloud CI 生成)以便只有开发人员才能看到生成的 PR 表在数据库上。
我想做如下事情:
dbt_cloud_pr:
+post-hook:
- "revoke select on {{ this }} from role reporter"
现在,我们的 dbt_cloud_pr 模式可以被 Snowflake 上的多个角色看到,并且它将数据库与一些我们宁愿隐藏的非必要模式聚集在一起。
感谢您的帮助!
这个主意很酷!
您可以配置您的 dbt Cloud CI 作业以使用自定义“目标”名称(它是“作业”>“编辑设置”页面)。假设您将其设置为 ci
然后我认为在你的代码中你应该能够添加一个 post-hook like
models:
+post-hook: {% if target.name == 'ci' %} revoke select on {{ this }} from role reporter {% else %} select 1 {% endif %}
如果 post-hook 本身不允许 if..else 语法,您可以将其包装在宏中,然后从 post-hook:
中调用该宏
models:
+post-hook: {{ revoke_select_on_ci(this) }}
并且在您的宏目录中:
{%- macro revoke_select_on_ci(model, ci_target='ci') -%}
{%- if target.name == ci_target -%}
revoke select on {{ model }} from role reporter
{%- else -%}
select 1
{%- endif -%}
{%- endmacro -%}
我想知道是否可以将 post 挂钩附加到 DBT_CLOUD_PR 模式(由 dbt Cloud CI 生成)以便只有开发人员才能看到生成的 PR 表在数据库上。
我想做如下事情:
dbt_cloud_pr:
+post-hook:
- "revoke select on {{ this }} from role reporter"
现在,我们的 dbt_cloud_pr 模式可以被 Snowflake 上的多个角色看到,并且它将数据库与一些我们宁愿隐藏的非必要模式聚集在一起。
感谢您的帮助!
这个主意很酷!
您可以配置您的 dbt Cloud CI 作业以使用自定义“目标”名称(它是“作业”>“编辑设置”页面)。假设您将其设置为 ci
然后我认为在你的代码中你应该能够添加一个 post-hook like
models:
+post-hook: {% if target.name == 'ci' %} revoke select on {{ this }} from role reporter {% else %} select 1 {% endif %}
如果 post-hook 本身不允许 if..else 语法,您可以将其包装在宏中,然后从 post-hook:
中调用该宏models:
+post-hook: {{ revoke_select_on_ci(this) }}
并且在您的宏目录中:
{%- macro revoke_select_on_ci(model, ci_target='ci') -%}
{%- if target.name == ci_target -%}
revoke select on {{ model }} from role reporter
{%- else -%}
select 1
{%- endif -%}
{%- endmacro -%}