GH GambleHub

Pochodzenie danych

Rodowód

1) Czym jest rodowód i dlaczego jest potrzebny

Data Lineage jest formalnym zapisem "skąd pochodzą dane, jak zostały one przekształcone, gdzie i przez kogo zostały wykorzystane. "Rezultatem jest kierowany wykres zależności z atrybutami (czas, wersje, właściciele, transformacje, zasady dostępu, jakość), co sprawia, że system danych jest zrozumiały i audytowy.

Wartość biznesowa:
  • Przejrzystość mierników (finanse, produkt, ryzyko): "Dlaczego liczba X = 1234? ».
  • Szybka analiza wpływu zmian (schemat/praca): „co złamie się, jeśli”....
  • Zgodność i audyt (RODO/ISO/SOC): sprawdzalna ścieżka pola.
  • Przyspieszenie wsiadania na pokład i zmniejszenie siły (wiedza samoobsługowa).
  • Poprawa jakości: ukierunkowane kontrole, w których ryzyko jest wyższe.

2) Obszary zasięgu i poziomy szczegółowości

Poziom strumienia (rurociąg/praca): Które zadania/orkiestra tarła zbiory danych.
Poziom zbioru danych (tabela/widok/temat/plik): wejścia → wyjścia, wersje/migawki.
Column/feature-level - jak oblicza się każde pole, z którego źródła.
Warstwa zużycia: raporty BI, interfejsy API, modele ML, deski rozdzielcze i wpisy.

W przypadku podmiotów krytycznych (pieniądze, regulacje) wymagana jest szczegółowość na poziomie kolumn.

3) Model danych Lineage - kluczowe podmioty

Zestaw danych: '{urn, type, schemat, właściciele, pii_class, retencja, tagi}'

Zadanie: '{urn, code_ref, wersja, czas trwania, harmonogram, właściciele}'

Run/Execution: '{run _ id, job_urn, start/end, status, inputs [], outputs [], code_sha, infra}'

Pole: '{dataset _ urn, name, type, derivation}' (pochodna - expression/AST/operator).

Polityka: '{dataset _ urn/field, access_rules, masking, consent_scope}'

Kontrola jakości: '{check _ id, scope, rule, severity, result}'

4) Źródła rodowodowe: aktywny zespół pasywny vs

Aktywne (na bazie zdarzeń): orkiestratory/silniki instrumentalne (silniki Spark/DBT/SQL/Kafka) do wydawania wydarzeń „job started/finished, inputs/outputs, column-mapping”.

Plusy: dokładność, znaczenie, minimalizacja postparsing.
Pasywne (wnioskowanie): DAG parsim, żądania SQL/DDL/log, katalog/dzienniki pamięci masowej; budować zależności z mocą wsteczną.

Plusy: szybkie objęcie dziedzictwem; minus: niższa dokładność na poziomie kolumny.

Zazwyczaj stosuje się hybrydę: aktywne zdarzenia tam, gdzie to możliwe, oraz bierną analizę jako „siatkę ubezpieczeniową”.

5) Architektura rozwiązań (odniesienie)

Producenci (orkiestry/silniki) → Autobus Lineage event → Normalizator → Przechowywanie wykresu → Indeks/wyszukiwanie → UI/API/alerty → Eksport/katalog.

Zdarzenia: ujednolicone (job/run/dataset/column-lineage), z URN i wersjami semantycznymi.
Przechowywanie wykresu: wykres na poziomie kolumny (na przykład na podstawie bazy danych wykresu lub indeksu relacyjnego + odwróconego).
Interfejs użytkownika: interaktywna wizualizacja najkrótszych ścieżek, uderzenie/przyczyna, „sygnały jakości” na krawędziach i węzłach.
Integracje: katalog danych, system jakości (DQ), kontrola dostępu (ABAC), audyt (dzienniki tylko do dodatku).

6) Identyfikatory i wersioning

URN/Global ID dla każdego zbioru danych/zadań/pól: stabilny, czytelny dla ludzi, w tym dla platformy/przestrzeni nazw/nazwy/wersji.
SchemaVersion i wersja kodowa (kod SHA, trawienie obrazu).
Rodowód w czasie podróży: powtarzalność dochodzeń.

7) Rodowód na poziomie kolumn: jak uzyskać niezawodność

SQL parsing z budową AspAT i normalizacją pseudonimów/CTE/blizzard.
Adnotacje w kodzie transformacji (testy DBT, komentarze prymitywne, metadane UDF).

Zdarzenia z silników: określenie "cel. col = f (src. a, src. b) "

Zasady semantyczne: UDF/agregacje są oznaczone jako „lossy” (z utratą ziarnistości) lub „sensitive-preserving” (transfery znaczników PII).

8) Powiązanie lineage z prywatnością i bezpieczeństwem

Prywatność według projektu: etykiety polowe „pii _ class”, „consent _ scope”, „retention”. Podczas promowania kolumn etykiety są przesyłane zgodnie z zasadami (na przykład, 'email → hash_email' PII-derived remains).
tokenizacja PII: sklepy lineage tokenizacja/detokenizacja faktu i węzły usługi token; każda detokenizacja jest wydarzeniem audytu.
Szyfrowanie: dla pól AEAD/FPE, rodowód przechwytuje „stan krypto” i obszar kluczowy (najemca/zakres) - bez ujawniania kluczowych informacji.
Audyt i WORM - zdarzenia lineage i zmiany zasad są przechowywane w niezmodyfikowalnym dzienniku (tylko dodatek z łańcuchami hash).

9) Jakość danych i oparte na lineage SLO

Kontrole krawędzi: świeżość, kompletność, wyjątkowość/klucze, dryf rozkładu.
SLO/SLI: „95% miejsc pracy karmiących mierniki raportu finalnego ukończone ≤ 06:00 UTC”.
Przyczyna: wykres + czasy wykonania dają szybką definicję „pierwszego złamanego węzła”.

10) Analiza skutków i zarządzanie zmianami

W przypadku planowanej zmiany schematu/logiki: przez kolumnę poniżej (poniżej) - listę dotkniętych raportów/modeli/klientów API.
Polityka dotycząca przełamywania zmian: obowiązkowe powiadamianie właścicieli artefaktów znajdujących się poniżej, okres karencji, wersje równoległe („v1 ”/„ v2”) oraz flaga daty zachodu słońca.
Automatyczne PR/bilety z listą konsumentów i listą kontrolną migracji.

11) Integracja z orkiestratorami i silnikami

Orkiestratorzy: imprezy „RunStarted/Run Completed” z wejściami/wyjściami są emitowane przed/po wykonaniu zadania.
SQL/ELT: złącza do silników (magazyn, lakehouse) w celu uzyskania rzeczywistego planu wykonania i mapowania kolumn.
Przetwarzanie strumieniowe: rodowód wiadomości (temat → temat, klucz/nagłówek), Avro/Protobuf schematy, ewolucja systemów poprzez rejestr.
ML: funkcje lineage/zbiory danych, wersje modelowe, artefakty treningowe, źródła funkcji.

12) Modelowanie zasad rozpowszechniania etykiet (umowy o dane)

Umowa zbioru danych: schemat + semantyka terenowa (klucze, PII, agregacja, licencje/podstawy prawne, zatrzymanie).

Zasady propagacji:
  • 'WYBIERZ a, b z T' → przesuń etykiety'a, b '.
  • „hash (e-mail)” → etykieta „PII-derived (pseudonimized)” z zakazem detokenizacji.
  • „suma (kwota)” → utrata indywidualności; join's nie są dozwolone w polu wyników.
  • Umowy są zatwierdzane w CI (bloker w przypadku niezgodności), a naruszenia są zdarzeniami w audycie.

13) Wydajność i skala

Stopniowe wtryskiwanie zdarzeń rodowodowych; deduplikowanie przez '(run_id, job_urn)'.
Przechowywanie kolumn: oddzielenie gorącego indeksu (ostatnie 30-90 dni) i archiwum; migawki.
Buforowanie ścieżek dla częstych zapytań (krótkie ścieżki do „złotych” metryk).
Shading przez neimspaces/najemców; ochrona przed „węzłami potwornymi” (ograniczenie wentylacji).

14) Wizualizacja i UX

Tryby:
  • Ścieżka do metryki: „z której zmontowana jest metryka”.
  • Wpływ ze źródła: „kto będzie dotknięty zmianą”.
  • Linia pola: „jak oblicza się pole”.
  • Nakładki: statusy pracy, jakość, znaczniki PII, retencje, właściciele.
  • Akcje: otwórz umowę, utwórz bilet na migrację, zapisz się do zmiany wpisów.

15) Bezpieczeństwo dostępu do wykresu

ABAC: Widoczność węzła/krawędzi jest ograniczona do lokatorów/ról.
Redakcja: ukrywanie wrażliwych nazw pól (lub ich aliasowanie) w interfejsie użytkownika w odniesieniu do niewyszkolonych ról.
mTLS/OIDC dla zdarzeń lineage API są podpisywane z identycznymi usługami.
WORM i kontrola odczytu: czytanie krytycznych segmentów wykresu jest również rejestrowane.

16) Działanie: SLO, monitoring, alerty

Wykres SLO: opóźnienie zdarzenia <5 min; kompletność pokrycia> 98% rurociągów krytycznych; 100% „złotych metryk” ma linię na poziomie kolumn.
Wpisy: break chain, run without completion events, niespójne schematy, osierocone zbiory danych, fan out growth/cycles.
Raporty: tygodniowy „stan pokrycia linii”, top 10 węzłów ryzyka.

17) Prywatność i zgodność (pakiety)

RODO/PbD: podstawy przetwarzania i retencji magazynu jako znaczniki; lineage zapewnia szybkie DSAR pathfinding i „prawo do usunięcia” poprzez kaskadowe usunięcie krypto odpowiednich segmentów.
Tajne zarządzanie: źródła dostępu do surowców nigdy nie wpadają w rodowód jako otwarte kredyty; przechowuje się tylko odniesienie do roli/polityki.
Audyt/niezmodyfikowane dzienniki - wszystkie zdarzenia związane z lineage są podpisywane i przypinane do repozytorium tylko w dodatku (patrz odpowiedni artykuł).

18) Listy kontrolne

Przed rozpoczęciem leczenia:
  • Umowy URN zdefiniowane dla zbiorów danych/miejsc pracy/pól.
  • Umożliwiona emisja imprez lineage z orkiestry i silników.
  • Parser SQL/DDL i normalizator schematu.
  • Zatwierdza się przepisy dotyczące kontraktów na dane i PII/propagacji retencji.
  • Skonfigurowany dziennik zdarzeń WORM i kopie zapasowe wykresu.
  • BI/ML są połączone jako konsumenci linii (raporty, modele, funkcje).
Działanie:
  • Pokrycie linii dla domen krytycznych ≥ 98%, poziom kolumny dla „pieniędzy” = 100%.
  • Włączone są wpisy dotyczące przerw, osieroconych zbiorów danych, dryfów obwodów.
  • Kwartalne audyty znaczników i umów PII.
  • Przepływ dokumentów zmian (łamanie) i dystrybucja do konsumentów.

19) Mini przepisy kulinarne

Zakończone zdarzenie RunCompleted (pseudo-JSON):
json
{
"event": "RunCompleted",
"run": {
"id": "run_2025-10-31T14:20:00Z_42",
"job": "urn:job:etl:finance:close_books_v3",
"status": "SUCCESS",
"code_sha": "b3f9…",
"started_at": "2025-10-31T14:05:00Z",
"ended_at": "2025-10-31T14:19:52Z"
},
"inputs": [
"urn:dataset:lake:bank_txn_v2",
"urn:dataset:warehouse:fx_rates_d+1"
],
"outputs": [
"urn:dataset:warehouse:pnl_daily_v3"
],
"column_lineage": [
{
"output": "pnl_daily_v3. pnl_usd",
"expr": "SUM(txn. amount_local fx. rate)",
"inputs": ["bank_txn_v2. amount_local", "fx_rates_d+1. rate"],
"lossy": true
}
]
}
Zasada propagacji PII (idea):

if input. field. pii in {email, phone, id} and transform in {hash, tokenize}:
output. field. pii = "pseudonymized"
elif transform in {aggregate, anonymize_k}:
output. field. pii = "anonymous"
else:
output. field. pii = input. field. pii
Impact quaris „co złamie”:

affected = downstream(urn:"urn:dataset:warehouse:users_v4", depth=4)
filter affected where kind in {"dashboard","model","api"} and owner not in {"team-exp"}

20) Częste błędy i jak ich uniknąć

Rodowód „na zdjęciu” bez formalnego modelu. Potrzebne są zdarzenia/schematy/URN, w przeciwnym razie wykres nie jest skalowany.
Nie ma poziomu kolumn, gdzie jest "pieniądze. "Obliczeń nie można wyjaśnić bez poziomu kolumny.
Niekompletne zdarzenia (bez schematów code_sha/versii). Odtwarzalność nie jest możliwa.
Ignoruj prywatność. Tagi PII muszą żyć i być przenoszone z polami.
Jedna duża baza wykresów bez strzyżenia. Podziel według przestrzeni nazw, przechowywać migawki.
Ślepa wiara w parserów. W kontrowersyjnych przypadkach - aktywne zdarzenia z silników.

21) Runbook 'а

Incydent: Metryczny „skoczył”.

1. Otwórz „Ścieżka do metryki” → sprawdź ostatnie węzły 'Run' na ścieżce.
2. Sprawdź wersje kodu/schematu, sprawdź stan DQ na krawędziach.
3. Jeśli złamany link zostanie znaleziony, utwórz bilet dla właściciela, włącz tymczasowe „trzymaj” publikacji metrycznej.
4. Po ustaleniu - zaznaczyć RCA i skojarzyć z węzłami wykresu.

Modyfikacja schematu źródłowego.

1. Poproś o następne uderzenie.
2. Wyślij powiadomienia do właścicieli, utwórz migrację PRS.
3. Podnieś równoległe 'v _ next', zachowaj obie wersje do zachodu.
4. Zamknij 'v _ em', zaktualizuj kontrakty i wykres linii.

Materiały pokrewne:
  • „Prywatność według projektu (RODO)”
  • „Tokenizacja danych PII”
  • „Tajne zarządzanie”
  • „Audyt i niezmienne kłody”
  • „W odpoczynku/w tranzycie szyfrowanie”
  • „Kluczowe zarządzanie i rotacja”
Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.