DBT Instantâneos com não exclusiva de registros na fonte de

0

Pergunta

Estou interessado em saber se alguém aqui já se deparar com uma situação em que a fonte não é sempre exclusivo ao lidar com instantâneos em DBT.
Eu tenho dados de um lago, onde os dados chegam em um acréscimo única base. Cada vez que a fonte é atualizada, um novo gravado é criado na respectiva tabela de dados lago.
Pelo tempo que o DBT solução é executado, a minha origem pode ter mais de 1 linha com o id exclusivo como os dados foram alterados mais de uma vez desde a última execução.
Idealmente, eu gostaria de atualizar o respectivo dbt_valid_to colunas a partir do instantâneo tabela com as primeiras updated_at registro de origem e, posteriormente, adicionar novos registros para o instantâneo tabela fazendo com que as últimas updated_at registro atual. Eu sei como conseguir isso usando funções de janela, mas não tem a certeza de como lidar com essa situação com o dbt. Gostaria de saber se alguém já enfrentou esse mesmo problema de antes.

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

Melhor resposta

0

Padrão instantâneos operar sob a suposição de que a tabela de origem estamos instantâneo, estão sendo alteradas sem armazenar o histórico. Isto opõe-se ao comportamento que nós temos aqui (basicamente a tabela de origem estamos instantâneo, nada mais é do que um acréscimo apenas de log de eventos) - o que significa que podemos conseguir com simplesmente usando um velho chato incremental modelo para atingir o mesmo SCD2 resultados instantâneos nos dar.

Eu tenho um código de exemplo aqui onde fiz apenas o que pode ser de alguma ajuda https://gist.github.com/jeremyyeo/3a23f3fbcb72f10a17fc4d31b8a47854

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

Concordo que seria muito conveniente se dbt instantâneos de uma estratégia que poderia implicar a eliminação de dados duplicados, mas não é suportado atualmente.

O mais fácil contornar seria uma fase de vista de jusante da fonte que tem a função de janela de você descrever. Em seguida, você instantâneo que ver.

No entanto, eu vejo potencial para um novo instantâneo estratégia que trata de acrescentar apenas fontes. Talvez você gostaria de ler o dbt Instantâneo docs e estratégias de código-fonte sobre as estratégias existentes para ver se você gostaria de fazer um novo!

2021-11-24 01:37:58

Em outros idiomas

Esta página está em outros idiomas

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