Megosztás a következőn keresztül:


Az életútrendszer tábláinak referenciája

Fontos

Ez a rendszertábla nyilvános előzetes verzióban érhető el. A táblázat eléréséhez engedélyezni kell a sémát a system katalógusban. További információ: Rendszertábla-sémák engedélyezése.

Ez a cikk áttekintést nyújt a két életútrendszer-tábláról. Ezek a rendszertáblák a Unity Catalog adatkisorolási funkciójára épülnek, így programozott módon lekérdezheti az életútadatokat a döntéshozatalhoz és a jelentésekhez.

Feljegyzés

Mindkét életúttábla az összes olvasási/írási esemény egy részhalmazát jelöli, mivel nem mindig lehetséges az életút rögzítése. A rekordok csak akkor lesznek kibocsátva, ha az életútra lehet következtetni.

Table lineage table

A table lineage system table tartalmaz egy rekordot minden olvasási vagy írási eseményhez egy Unity Catalog-táblán vagy elérési úton. Ez magában foglalja a feladatfuttatásokat, a jegyzetfüzet-futtatásokat és az olvasási vagy írási eseményekkel frissített irányítópultokat.

Táblázat elérési útja: Ez a rendszertábla a következő helyen system.access.table_lineagetalálható: .

Oszlopleválasztási táblázat

Az oszlopsortábla nem tartalmaz olyan eseményeket, amelyek nem rendelkeznek forrással. Ha például explicit értékekkel szúr be egy oszlopba, az nem lesz rögzítve. Ha egy oszlopot olvas, a rendszer rögzíti, hogy megírja-e a kimenetet. Az oszlopkiválasztás nem támogatott a Delta Live Tables esetében.

Táblázat elérési útja: Ez a rendszertábla a következő helyen system.access.column_lineagetalálható: .

Vonalas rendszer táblaséma

Az életútrendszer-táblák a következő sémát használják. A táblasorséma nem tartalmazza source_column_name a következőt: .target_column_name

Oszlop neve Adattípus Leírás Példa
account_id húr Az Azure Databricks-fiók azonosítója. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id húr A Unity Catalog metaadattár azonosítója. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id húr A munkaterület azonosítója 123456789012345
entity_type húr Annak az entitásnak a típusa, amelyből a leágazási tranzakció rögzítve lett. Az érték : NOTEBOOK, JOB, PIPELINEDASHBOARD_V3 (Irányítópult), DBSQL_DASHBOARD (Örökölt irányítópult), DBSQL_QUERYVAGY NULL. NOTEBOOK
entity_id húr Annak az entitásnak az azonosítója, amelyről a leágazási tranzakciót rögzítették. Ha entity_type igenNULL, entity_id akkor az.NULL -Jegyzetfüzet: 23098402394234
-Foglalkozás: 23098402394234
- Databricks SQL-lekérdezés: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Műszerfal: 01ef070d110715f2b6d3061b8bda89ea
- Örökölt irányítópult: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Csővezeték: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id húr Azonosító az entitás egyedi futtatásának leírásához, vagy NULL. Ez minden entitástípus esetében eltér:

- Jegyzetfüzet: command_run_id
- Feladat: job_run_id
- Databricks SQL-lekérdezés: query_run_id
- Irányítópult: query_run_id
- Örökölt irányítópult: query_run_id
- Folyamat: pipeline_update_id

Ha entity_type igenNULL, entity_run_id akkor az.NULL
-Jegyzetfüzet: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
-Foglalkozás: 51090402394234
- Databricks SQL-lekérdezés: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Műszerfal: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
- Örökölt irányítópult: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
-Csővezeték: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name húr Háromrészes név a forrástábla azonosításához. catalog.schema.table
source_table_catalog húr A forrástábla katalógusa. catalog
source_table_schema húr A forrástábla sémája. catalog.schema
source_table_name húr A forrástábla neve. table
source_path húr A forrástábla felhőalapú tárolójában található hely, vagy az elérési út, ha közvetlenül a felhőbeli tárolóból olvas. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type húr A forrás típusa. Az érték az TABLE, PATHvagy VIEWSTREAMING_TABLE. TABLE
source_column_name húr A forrásoszlop neve. date
target_table_full_name húr Háromrészes név a céltábla azonosításához. catalog.schema.table
target_table_catalog húr A céltábla katalógusa. catalog
target_table_schema húr A céltábla sémája. catalog.schema
target_table_name húr A céltábla neve. table
target_path húr Hely a céltábla felhőalapú tárolójában. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type húr A cél típusa. Az érték az TABLE, PATH, VIEWvagy STREAMING TABLE. TABLE
target_column_name húr A céloszlop neve. date
created_by húr Az a felhasználó, aki létrehozta ezt az ágat. Ez lehet Egy Azure Databricks-felhasználónév, egy Azure Databricks-szolgáltatásnév azonosítója , "Rendszerfelhasználó", vagy NULL ha a felhasználói adatok nem rögzíthetők. crampton.rods@email.com
event_time időbélyeg Az időbélyeg, amikor a leállás létrejött. Az időzónára vonatkozó adatokat az érték végén rögzíti a rendszer az UTC-nek +00:00 megfelelően. 2023-06-20T19:47:21.194+00:00
event_date dátum: Az a dátum, amikor a leágazás létrejött. Ez egy particionált oszlop. 2023-06-20

Olvasóéletút-rendszertáblák

Vegye figyelembe a következő szempontokat a sorrendszertáblák elemzésekor:

  • Az Azure Databricks támogatja a Delta Live Tableset, a jegyzetfüzeteket, a feladatokat, a entity_typeDatabricks SQL-lekérdezéseket és az irányítópultokat. Más entitásokból származó események nem támogatottak.
  • Ha a következőt entity_type nulllátja, az azt jelenti, hogy az eseményben nincs Azure Databricks-entitás. Ez lehet például egy JDBC-lekérdezés eredménye, vagy egy felhasználó, aki az Azure Databricks felhasználói felületén a Mintaadatok lapra kattint.
  • Annak megállapításához, hogy az esemény olvasási vagy írási volt-e, megtekintheti a forrástípust és a céltípust.
    • Írásvédett: A forrástípus nem null, de a céltípus null.
    • Írásvédett: A céltípus nem null, de a forrás típusa null.
    • Olvasás és írás: A forrástípus és a céltípus nem null értékű.

Példa az életútrendszer táblázatára

Példa a rendszertáblákban való rögzítés módjára, íme egy példalekérdezés, amelyet a lekérdezés által létrehozott életútrekordok követnek:

CREATE OR REPLACE TABLE car_features
AS SELECT *,  in1+in2 as premium_feature_set
FROM car_features_exterior
JOIN car_features_interior
USING(id, model);

A betett system.access.table_lineage rekord a következőképpen nézne ki:

entity_type entity_id source_table_name target_table_name created_by event_time
NOTEBOOK 27080565267 car_features_exterior car_features crampton@email.com 2023-01-25T16:19:58.908+0000
NOTEBOOK 27080565267 car_features_interior car_features crampton@email.com 2023-01-25T16:19:58.908+0000

A betett system.access.column_lineage rekord a következőképpen nézne ki:

entity_type entity_id source_table_name target_table_name source_column_name target_column_name event_time
NOTEBOOK 27080565267 car_features_interior car_features in1 premium_feature_set 2023-01-25T16:19:58.908+0000
NOTEBOOK 27080565267 car_features_interior car_features in2 premium_feature_set 2023-01-25T16:19:58.908+0000

Feljegyzés

A fenti példában nem minden életútoszlop látható. A teljes sémáért tekintse meg a fenti vonalas sémát.

Külső tábla-lekérdezések hibaelhárítása

Ha egy külső táblára hivatkozik a felhőbeli tároló elérési útján, a társított sorrekord csak az elérési utat tartalmazza, a tábla nevét nem. Például a lekérdezéshez tartozó életútrekord az elérési út nevét tartalmazza, nem pedig a tábla nevét:

SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;

Ha egy elérési út alapján hivatkozott külső tábla sortörési rekordjait próbálja lekérdezni, akkor a lekérdezést az elérési út alapján source_path vagy helyett vagy target_path target_table_full_namehelyett source_table_full_name kell szűrnie. Az alábbi lekérdezés például lekéri egy külső tábla összes sorbajegyzését:

SELECT *
FROM system.access.table_lineage
WHERE
  source_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1" OR
  target_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1";

Példa: Az életútrekordok lekérése külső táblanév alapján

Ha nem szeretné manuálisan lekérni a felhőbeli tároló elérési útját az életút megkereséséhez, az alábbi függvénnyel lekérheti az adatsorokat a táblanév használatával. Ha oszlopsort system.access.column_lineage szeretne lekérdezni, a függvényben is lecserélheti a helyéresystem.access.table_lineage.

def getLineageForTable(table_name):
  table_path = spark.sql(f"describe detail {table_name}").select("location").head()[0]

  df = spark.read.table("system.access.table_lineage")
  return df.where(
    (df.source_table_full_name == table_name)
    | (df.target_table_full_name == table_name)
    | (df.source_path == table_path)
    | (df.target_path == table_path)
  )

Ezután a következő paranccsal hívja meg a függvényt, és megjelenítse a külső tábla sortörési rekordjait:

display(getLineageForTable("table_name"))