DBT快照不是独特的记录在来源

0

的问题

我有兴趣知道如果有人在这里有没有碰到过的情况下,来源并不总是唯一在处理中的快照DBT.
我有一个数据湖那里的数据达在一种追加的唯一基础。 每次的源被更新,一个新的记录是建立在相应的表格中的数据湖。
通过时间DBT解决方案是跑了,我来源可能有超过1行的唯一标识作为该数据已经改变了多次由于过去运行。
理想情况下,我想更新各自的dbt_valid_to列的快照表最早的updated_at记录的来源,并随后添加新的记录,以快照表作出最新的updated_at记录目前一个。 我知道如何实现这一使用窗口的功能但不知道该如何处理这种情况dbt. 我不知道,如果任何人面临这一问题之前。

Snapshot Table

| **id** |   **some_attribute** |   **valid_from**      |   **valid_to**          |
|  123   |      ABCD            |   2021-01-01 00:00:00 |    2021-06-30 00:00:00  | 
|  123   |      ZABC            |   2021-06-30 00:00:00 |      null               |

Source Table

|**id**|**some_attribute**|   **updated_at**    |
| 123  |   ABCD           | 2021-01-01 00:00:00 |-> already been loaded to snapshot
| 123  |   ZABC           | 2021-06-30 00:00:00 |-> already been loaded to snapshot
 -------------------------------------------
| 123  |   ZZAB           | 2021-11-21 00:10:00 |
| 123  |   FXAB           | 2021-11-21 15:11:00 |

Snapshot Desired Result

| **id** |   **some_attribute** |   **valid_from**      |   **valid_to**          |
|  123   |      ABCD            |   2021-01-01 00:00:00 |    2021-06-30 00:00:00  | 
|  123   |      ZABC            |   2021-06-30 00:00:00 |    2021-11-21 00:10:00  |
|  123   |      ZZAB            |   2021-11-21 00:10:00 |    2021-11-21 15:11:00  | 
|  123   |      FXAB            |   2021-11-21 15:11:00 |    null                 | 
dbt google-bigquery
2021-11-24 00:37:24
2

最好的答案

0

标准的快照下运作的假定来源表我们是快照正在改变,而不储存的历史。 这是反对的行为,我们在这里的(基本上源表我们是快照是没有超过追加日志的活动),这意味着,我们可以逃脱,只需使用一种无聊的老 incremental 模型来实现相同的SCD2结果,快照给我们。

我有一些样品代码在这里我就是这样做的, 可能 会有所帮助 https://gist.github.com/jeremyyeo/3a23f3fbcb72f10a17fc4d31b8a47854

2021-11-30 22:19:55
-1

我同意这将是非常方便,如果dbt快照有一个战略,可能涉及删除重复,但它不支持今天。

最简单的工作将是一个阶段景下游的来源,具有窗口的功能你描述。 然后你快照这一观点。

然而,我看到潜在的新的快照战略,处理追加的唯一来源。 也许你会喜欢阅读的 dbt快照文件战略,源代码 在现有的战略来看,如果你想让一个新的!

2021-11-24 01:37:58

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................