TCD Instantanés avec n'est pas unique enregistrements dans la source

0

La question

Je suis curieux de savoir si quelqu'un ici a jamais rencontré une situation où la source n'est pas toujours unique lorsque vous traitez avec des instantanés dans la TCD.
J'ai un data lake, où les données arrivent sur un ajout seule base. Chaque fois que la source est mise à jour, un nouveau est créé sur la table correspondante dans les données du lac.
Au moment où le TCD solution est couru, ma source pourrait avoir plus de 1 ligne avec l'id unique que les données ont changé plus d'une fois depuis la dernière exécution.
Idéalement, j'aimerais mettre à jour les respectifs dbt_valid_to colonnes de la capture d'écran de la table avec les premiers updated_at enregistrement de la source et par la suite ajouter les nouveaux fichiers à l'instantané de la table de prise de la dernière updated_at enregistrement de l'actuel. Je sais comment y parvenir en utilisant des fonctions de la fenêtre, mais ne savez pas comment gérer cette situation avec la tcd. Je me demande si quelqu'un a été confronté à ce même problème avant.

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

La meilleure réponse

0

Standard instantanés de fonctionner sous l'hypothèse que la source de la table, nous sommes instantanés sont en train d'être modifié sans stockage de l'histoire. C'est par opposition au comportement que nous avons ici (en gros la table source nous sont instantanés n'est rien de plus qu'un ajouter uniquement les journaux d'événements) - ce qui signifie que nous pouvons sortir avec simplement l'aide d'un ennuyeux incremental modèle pour obtenir le même DRÉPANOCYTOSE2 résultat que les instantanés de nous donner.

J'ai un exemple de code ici où je n'ai que ça qui peut être de quelque secours https://gist.github.com/jeremyyeo/3a23f3fbcb72f10a17fc4d31b8a47854

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

Je suis d'accord, il serait très pratique si tcd instantanés avait une stratégie qui pourrait impliquer de déduplication, mais il n'est pas pris en charge aujourd'hui.

La méthode la plus simple contourner serait une vue de la scène en aval de la source de la fenêtre de la fonction que vous décrivez. Ensuite, vous instantané de ce point de vue.

Cependant, je ne vois potentiel pour une nouvelle capture stratégie qui gère ajouter que des sources. Peut-être que vous aimeriez consulter le tcd Instantané docs et les stratégies de code source sur les stratégies existantes pour voir si vous souhaitez faire un nouveau!

2021-11-24 01:37:58

Dans d'autres langues

Cette page est dans d'autres langues

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