1

如何做到这一点,以便每次运行 dbt 中的增量负载时,它只会更新上次运行时的新行?

{% if is_incremental() %}

    /* code */

    {% endif %}
4

1 回答 1

4

您执行此操作的两个主要资源将在 dbt 文档中:

  1. 如何在 dbt 中构建增量模型: https ://docs.getdbt.com/docs/building-a-dbt-project/building-models/configuring-incremental-models/

  2. bigquery 特有的增量模型: https ://docs.getdbt.com/reference/resource-configs/bigquery-configs/#merge-behavior-incremental-models

该模型很可能看起来像:

{{
    config(
        materialized='incremental'
    )
}}

select <columns>
from <my_table>
{% if is_incremental() %}
  where <my_table>.<record_update_timestamp> >= (
      select max(<my_table>.<record_update_timestamp>) from {{ this }}
  )
  {% endif %}

来自文档的完整示例: https ://docs.getdbt.com/docs/building-a-dbt-project/building-models/configuring-incremental-models/#defining-a-uniqueness-constraint-optional

于 2020-08-07T15:33:22.140 回答