DBT Instantanee cu nu unic înregistrările din sursa

0

Problema

Sunt interesat sa stiu daca cineva de aici a venit într-o situație în cazul în care sursa nu este întotdeauna unic atunci când se ocupă cu instantanee în DBT.
Am un date cu lac, în cazul în care datele ajung pe o adăuga doar baza. De fiecare dată când sursă este actualizat, un nou înregistrate este creat pe tabelul respectiv în datele de lac.
De data DBT soluție este verificat, sursa mea ar putea avea mai mult de 1 rand cu id-ul unic de date s-a schimbat de mai multe ori de la ultima cursa.
În mod ideal, aș dori pentru a actualiza respective dbt_valid_to coloane din imagine tabel cu primele updated_at record de la sursă și, ulterior, se adaugă înregistrări noi la snapshot masa de luare cele mai recente updated_at înregistra cel actual. Știu cum de a realiza acest lucru, folosind fereastra de funcții, dar nu sunt sigur cum să se ocupe de o astfel de situație cu dbt. Mă întreb dacă cineva s-a confruntat cu aceeași problemă înainte.

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

Cel mai bun răspuns

0

Standard instantanee operează în ipoteza că sursa de masă suntem snapshotting sunt schimbate fără stocarea istorie. Acest lucru este spre deosebire de comportamentul avem aici (practic sursa de masă suntem snapshotting nu este nimic mai mult decât o adăugați numai jurnal de evenimente) - ceea ce înseamnă că am putea obține departe cu doar folosind un vechi plictisitor incremental model pentru a obține același SCD2 rezultat că instantanee a ne da.

Am niste mostre de cod aici, unde am făcut doar că poate fi de ajutor https://gist.github.com/jeremyyeo/3a23f3fbcb72f10a17fc4d31b8a47854

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

Sunt de acord că ar fi foarte convenabil dacă dbt instantanee a avut o strategie care ar putea implica deduplicarea, dar acesta nu este acceptat astăzi.

Cel mai simplu lucru ar fi o etapă vedere din aval de sursa care are funcția de fereastră te descrie. Apoi instantaneu acest punct de vedere.

Cu toate acestea, eu văd potențial pentru un nou instantaneu strategie care se ocupă adăuga doar surse. Poate doriți să ia cunoștință de dbt Instantaneu documente și strategii de cod sursă pe strategiile existente pentru a vedea dacă doriți pentru a face unul nou!

2021-11-24 01:37:58

În alte limbi

Această pagină este în alte limbi

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