DBT Istantanee con non è l'unica, record nell'origine

0

Domanda

Mi interessa sapere se qualcuno qui ha mai incontrato una situazione in cui la fonte non è sempre unico quando si tratta con le istantanee in DBT.
Ho un dati lago in cui i dati arrivano in una aggiungere solo base. Ogni volta che la fonte è aggiornato, una nuova registrazione viene creata la relativa tabella dati lago.
Dal momento in cui il DBT soluzione è ran, la mia fonte potrebbe avere più di 1 riga con id univoco, in quanto i dati sono cambiati più di una volta dall'ultima esecuzione.
Idealmente, mi piacerebbe aggiornare i rispettivi dbt_valid_to colonne di snapshot tabella con i primi updated_at registrare da sorgente e successivamente aggiungere il nuovo record per la snapshot tabella: le più recenti updated_at record corrente. Io so come ottenere questo utilizzando la finestra di funzioni, ma non sono sicuro di come gestire la situazione con dbt. Mi chiedo se qualcuno ha affrontato questo stesso problema di prima.

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

Migliore risposta

0

Standard istantanee operare sotto l'ipotesi che la tabella di origine ci sono snapshotting sono state modificate senza memorizzazione di storia. Questo è in opposizione con il comportamento che abbiamo qui (in pratica la tabella di origine ci sono snapshotting è niente di più che un'aggiunta solo per la registrazione di eventi), il che significa che si può ottenere via con l'utilizzo di un semplice vecchio noioso incremental modello per ottenere lo stesso SCD2 risultato che le istantanee che ci danno.

Ho qualche codice di esempio qui dove ho fatto solo quello che può essere di qualche aiuto https://gist.github.com/jeremyyeo/3a23f3fbcb72f10a17fc4d31b8a47854

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

Sono d'accordo, sarebbe molto comodo se dbt istantanee aveva una strategia che potrebbe coinvolgere la deduplicazione, ma non è supportata oggi.

Il modo più semplice aggirare sarebbe una scena vista a valle della sorgente, che ha la funzione di finestra che tu descrivi. Poi si snapshot di vista.

Tuttavia, vedo il potenziale per un nuovo snapshot strategia che gestisce aggiungere solo fonti. Forse vi piacerebbe leggere il dbt Snapshot documenti e strategie di codice sorgente su strategie esistenti per vedere se desideri effettuare una nuova!

2021-11-24 01:37:58

In altre lingue

Questa pagina è in altre lingue

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