DBT wyzwania projektowe

Problem:

Ładowanie naszej hurtowni / lake house / data leake jest zrobione przy użyciu dbt. Ładowane są dane z wielu źródeł, które mają różne czasy odświeżania. W jaki sposób zaprojektować optymalne odświeżanie? Co jest naszym celem optymalizujemy czas przetwarzania? Czy chcemy, żeby nasze ładowanie było jak najbardziej niezawodne albo jak najbardziej spójne? I dlaczego według mnie te dwa światy są nie do pogodzenia w dbt i architekturze medalionu.

Rozwiązanie:

Skupiając się na optymalizacji czasu przetwarzania dojdziemy do momentu, że będziemy musieli powiedzieć, że niezawodności nie uda nam się osiągnąć w tej architekturze. Ładując dane z wielu źródeł i optymalizując jednocześnie czas i koszty znajdziemy się w miejscu, gdzie zadamy sobie pytanie, co jeżeli jedno ze źródeł się nie odświeżyło albo co jeżeli tylko jedna z tabel nie zawiera bieżących danych? Czy przerywać ładowanie? Ładować kolejne warstwy mimo błędów? Jeżeli nie usuwamy danych z tabel przed ładowanie, to jest optymalne rozwiązanie dla biznesu. Załadować wszystko co się da. Jeżeli coś się nie udało załadować, wtedy wziąć dane z poprzedniego dnia a brakujące dane załadować po poprawkach.

Zastosujemy wtedy strategię: Best as we could.

Więcej rozważeń i szersza perspektywa we wpisie poniżej.

Read More