小编job*_*oro的帖子

dbt_utils.surrogate_key() 包含除两个之外的所有字段

我目前正在使用 dbt 并尝试构建 PSA(持久暂存区域),在我看来,快照功能非常适合此目的。但是,我在源中没有时间戳,所以我必须使用“检查”策略。

对于“check_cols”,我想使用哈希值,所以我想到了 dbt_utils.surrogate_key()。

但我想计算除始终相同的两列之外的所有列的哈希值。

所以我的模型看起来像这样:

{% snapshot Item_hist %}
{{
    config(
      unique_key='item_id',
      strategy='check',
      check_cols=['diff_hash'],
      target_database='PSA',
      target_schema='sourceA',
      alias= 'Item',
      invalidate_hard_deletes=True
    )
}}

select {{ dbt_utils.surrogate_key(['Tenant','ItemNo']) }} as item_id,
{{ dbt_utils.surrogate_key( dbt_utils.star(from=source('sourceA', 'item'), except=["fieldA", "fieldB"]) ) }} as diff_hash,
* 
from {{ source('sourceA', 'item') }}
{% endsnapshot %}
Run Code Online (Sandbox Code Playgroud)

不幸的是,dbt_utils.surrogate_key() 无法处理 dbt_utils.star() 的返回值。我该如何继续,以便 surrogate_key() 可以根据返回值计算哈希值?

jinja2 dbt

4
推荐指数
1
解决办法
5670
查看次数

标签 统计

dbt ×1

jinja2 ×1