Kaynakta benzersiz olmayan kayıtlara sahip DBT Anlık görüntüleri

0

Soru

Buradaki birisinin dbt'deki anlık görüntülerle uğraşırken kaynağın her zaman benzersiz olmadığı bir durumla karşılaşıp karşılaşmadığını bilmek istiyorum.
Verilerin yalnızca ek olarak geldiği bir veri gölüm var. Kaynak her güncellendiğinde, veri gölündeki ilgili tabloda yeni bir kayıt oluşturulur.
DBT çözümü çalıştırıldığında, veriler son çalıştırmadan bu yana bir kereden fazla değiştiği için kaynağım benzersiz kimliğe sahip 1'den fazla satıra sahip olabilir.
İdeal olarak, anlık görüntü tablosundaki ilgili dbt_valıd_to sütunlarını kaynaktan en erken updated_at kaydıyla güncellemek ve daha sonra en son updated_at kaydını geçerli hale getiren anlık görüntü tablosuna yeni kayıtları eklemek istiyorum. Bunu pencere işlevlerini kullanarak nasıl başaracağımı biliyorum, ancak dbt ile böyle bir durumun nasıl ele alınacağından emin değilim. Eğer biri daha önce aynı sorunla karşı karşıya olup olmadığını merak ediyorum.

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

En iyi cevabı

0

Standart anlık görüntüler, anlık görüntülediğimiz kaynak tablonun geçmişi depolamadan değiştirildiği varsayımıyla çalışır. Bu, burada sahip olduğumuz davranışa karşıdır (temel olarak snapshotting yaptığımız kaynak tablo, yalnızca olayların bir günlüğünü eklemekten başka bir şey değildir) - bu da sıkıcı bir eskiyi kullanmaktan kurtulabileceğimiz anlamına gelir incremental anlık görüntülerin bize verdiği aynı SCD2 sonucunu elde etmek için model.

Burada yaptığım bazı örnek kodlarım var, bu biraz yardımcı olabilir https://gist.github.com/jeremyyeo/3a23f3fbcb72f10a17fc4d31b8a47854

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

Dbt anlık görüntülerinin tekilleştirmeyi içerebilecek bir stratejiye sahip olmasının çok uygun olacağını kabul ediyorum, ancak bugün desteklenmiyor.

En kolay geçici çözüm, açıkladığınız pencere işlevine sahip kaynağın akış aşağısındaki bir sahne alanı görünümü olacaktır. Sonra bu görünümün anlık görüntüsünü alırsınız.

Bununla birlikte, yalnızca kaynakları ekleyen yeni bir anlık görüntü stratejisi için potansiyel görüyorum. Belki de yeni bir tane yapmak isteyip istemediğinizi görmek için mevcut stratejilerdeki dbt Anlık Görüntü belgelerini ve stratejileri kaynak kodunu incelemek istersiniz!

2021-11-24 01:37:58

Diğer dillerde

Bu sayfa diğer dillerde

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