【问题标题】:how to use --selector & --defer in getdbt. Please share some examples如何在 getdbt 中使用 --selector 和 --defer。请分享一些例子
【发布时间】:2022-07-30 07:25:17
【问题描述】:

我在 redshift 上使用 getdbt 进行数据分析操作。任何人都可以建议如何使用 --selector & --defer 和“dbt run”命令。 语法是什么? selectors.yml 文件有什么用? 请分享一些例子。

谢谢

【问题讨论】:

    标签: analytics data-warehouse dbt


    【解决方案1】:

    我对@9​​87654326@ 的解释是一种利用 dbt cli 处理模型的当前和未来状态定义版本的未构建或差异版本。

    您可能希望在此处与之交互的示例:#2740 - Automating Non Regression Test


    selectors 是一个相对较新的功能,我也没有看到太多的文档来支持它,但它实际上是一组逻辑标准(多个标签、多个目录等)的命名约定

    我一般推荐这篇文章来了解典型 dbt 运行的构建路径生成:How we made dbt runs 30% faster

    从那里,您可以想象在一个大型项目中,您拥有的每个原始 -> 分析就绪转换管道都有巨大的互连链。

    我们以 Gitlab 的 open dbt project 为例。

    Gitlab 目前不使用选择器,但它们确实使用了标签。 所以他们可以使用如下逻辑定义建立一个selectors.yml 文件:

    selectors.yml

    selectors:
      - name: sales_funnel
        definition: 
            tag: salesforce
            tag: sales_funnel
      - name: arr
        description: builds all arr models to current state + all upstream dependencies (zoho, zuora subscriptions, etc.)
        default: true
        definition: 
             tag: zuora_revenue
             tag: arr
      - name: month_end_process
        description: builds reporting models about customer segments based on subscription activity for latest closed month
        definition:
          - union:
              - method: fqn
                value: rpt_available_to_renew_month_end
                greedy: eager  # default: will include all tests that touch selected model
              - method: fqn
                value: rpt_possible_to_churn_month_end
                greedy: eager
    

    有效选择器定义的完整列表:https://docs.getdbt.com/reference/node-selection/yaml-selectors#default

    让他们能够做的是在 cron 作业上、通过气流或其他一些编排器简单地执行:

    dbt run --selector month_end_process --full-refresh

    并且确信为该过程运行的模型的逻辑选择是 100% 准确复制的,而不是另一种更容易出错的方法,例如假设所有需要的模型都在一个目录中:

    dbt run --models marts.finance.restricted_safe.reports --full-refresh


    从架构上讲,您可能不需要选择器,直到您达到在一次运行中需要注意多层标签和/或多层用例目录的水平。

    示例:模型功能的标签、来源的标签、双/分析师消费者的标签、materialization schedule 的标签等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2019-11-11
      相关资源
      最近更新 更多