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 -%}