다음을 통해 공유


계보 시스템 tables 참조

Important

이 시스템 table은 공개 미리 보기에 있습니다. table에 액세스하기 위해서는 systemcatalog의 schema을 사용하도록 설정해야 합니다. 자세한 내용은 시스템 스키마사용을 참조하세요.

이 문서에서는 두 계보 시스템 tables대한 개요를 제공합니다. 이러한 시스템은 Unity Catalog데이터 계보 기능기반으로 빌드할 tables 있으므로 계보 데이터를 프로그래밍 방식으로 쿼리하여 의사 결정 및 보고서에 연료를 공급할 수 있습니다.

참고 항목

두 계통 tables는 모든 읽기/쓰기 이벤트의 하위 집합을 나타내며, 이는 계통을 항상 캡처할 수 있는 것은 아니기 때문입니다. 계보를 유추할 수 있는 경우에만 레코드가 내보내집니다.

Table 계보 table

table 계통 시스템 table은 Unity Catalogtable 또는 경로의 각 읽기 또는 쓰기 이벤트에 대한 기록을 포함합니다. 여기에는 읽기 또는 쓰기 이벤트로 업데이트된 작업 실행, Notebook 실행 및 대시보드가 포함되나 이에 국한되지 않습니다.

Table 경로: 이 시스템 table은 system.access.table_lineage에 있습니다.

Table 계보 schema

table 계보 시스템 table 다음 schema사용합니다.

Column 이름 데이터 형식 설명 예시
account_id string Azure Databricks 계정의 ID입니다. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id string Unity Catalog 메타스토어의 ID입니다. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id string 작업 영역의 ID 123456789012345
entity_type string 계보 트랜잭션이 캡처된 엔터티의 형식입니다. 값은 NOTEBOOK, JOB, PIPELINE, DASHBOARD_V3 (대시보드), DBSQL_DASHBOARD (레거시 대시보드), DBSQL_QUERY 또는 NULL입니다. NOTEBOOK
entity_id string 계보 트랜잭션이 캡처된 엔터티의 ID입니다. entity_typeNULL면, entity_idNULL입니다. - ‬전자 필기장: 23098402394234
- 작업: 23098402394234
- Databricks SQL 쿼리: e9cd8a31-de2f-4206-adfa-4f6605d68d88
- 대시보드: 01ef070d110715f2b6d3061b8bda89ea
- 레거시 대시보드: e9cd8a31-de2f-4206-adfa-4f6605d68d88
- 파이프라인: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id string 엔터티의 고유한 실행을 설명하는 ID 또는 NULL 입니다. 각 엔터티 형식에 따라 다릅니다.

- ‬전자 필기장: command_run_id
- 작업: job_run_id
- Databricks SQL 쿼리: query_run_id
- 대시보드: query_run_id
- 레거시 대시보드: query_run_id
- 파이프라인: pipeline_update_id

entity_typeNULL면, entity_run_idNULL입니다.
- ‬전자 필기장: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
- 작업: 51090402394234
- Databricks SQL 쿼리: e9cd8a31-de2f-4206-adfa-4f6605d68d88
- 대시보드: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
- 레거시 대시보드: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
- 파이프라인: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name string 세 부분으로 구성된 이름은 소스 table을 식별합니다. catalog.schema.table
source_table_catalog string 소스 table의 catalog. catalog
source_table_schema string 원본 table의 schema. schema
source_table_name string 원본 table이름입니다. table
source_path string 클라우드 스토리지에 있는 원본 table의 위치 또는 클라우드 스토리지에서 직접 읽는 경우의 경로입니다. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type string 원본의 형식입니다. 값은 TABLE, PATH, VIEW 또는 STREAMING_TABLE입니다. TABLE
target_table_full_name string 대상 table을 식별하기 위한 세 부분으로 된 이름입니다. catalog.schema.table
target_table_catalog string 대상 table의 catalog. catalog
target_table_schema string 대상 table의 schema. schema
target_table_name string 대상인 table의 이름입니다. table
target_path string 대상 table클라우드 스토리지의 위치입니다. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type string 대상의 유형입니다. 값은 TABLE, PATH, VIEW 또는 STREAMING TABLE입니다. TABLE
created_by string 이 계보를 생성한 사용자입니다. Azure Databricks 사용자 이름, Azure Databricks 서비스 주체 ID, "System-User" 또는 사용자 정보를 캡처할 수 없는 경우 NULL 일 수 있습니다. crampton.rods@email.com
event_time timestamp 계보가 생성된 시간의 타임스탬프입니다. Timezone 정보는 UTC를 나타내는 +00:00과 함께 값의 끝에 기록됩니다. 2023-06-20T19:47:21.194+00:00
event_date date 계보가 생성된 날짜입니다. 분할된 column. 2023-06-20

Column 계보 table

column 계보 table 원본이 없는 이벤트는 포함되지 않습니다. 예를 들어 명시적 values를 사용하여 insert을(를) column로 변환하면 캡처되지 않습니다. column을 읽으면 출력 여부에 관계없이 캡처됩니다. Column 계보는 Delta Live Tables지원되지 않습니다.

Table 경로: 이 시스템 table는 system.access.column_lineage에 위치해 있습니다.

Column 계보 schema

column 계보 시스템 table 에서는 다음 schema를 사용합니다.

Column 이름 데이터 형식 설명 예시
account_id string Azure Databricks 계정의 ID입니다. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id string Unity Catalog 메타스토어의 ID입니다. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id string 작업 영역의 ID 123456789012345
entity_type string 계보 트랜잭션이 캡처된 엔터티의 형식입니다. 값은 NOTEBOOK, JOB, PIPELINE, DASHBOARD_V3 (대시보드), DBSQL_DASHBOARD (레거시 대시보드), DBSQL_QUERY 또는 NULL입니다. NOTEBOOK
entity_id string 계보 트랜잭션이 캡처된 엔터티의 ID입니다. entity_typeNULL면, entity_idNULL입니다. - ‬전자 필기장: 23098402394234
- 작업: 23098402394234
- Databricks SQL 쿼리: e9cd8a31-de2f-4206-adfa-4f6605d68d88
- 대시보드: 01ef070d110715f2b6d3061b8bda89ea
- 레거시 대시보드: e9cd8a31-de2f-4206-adfa-4f6605d68d88
- 파이프라인: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id string 엔터티의 고유한 실행을 설명하는 ID 또는 NULL 입니다. 각 엔터티 형식에 따라 다릅니다.

- ‬전자 필기장: command_run_id
- 작업: job_run_id
- Databricks SQL 쿼리: query_run_id
- 대시보드: query_run_id
- 레거시 대시보드: query_run_id
- 파이프라인: pipeline_update_id

entity_typeNULL면, entity_run_idNULL입니다.
- ‬전자 필기장: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
- 작업: 51090402394234
- Databricks SQL 쿼리: e9cd8a31-de2f-4206-adfa-4f6605d68d88
- 대시보드: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
- 레거시 대시보드: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
- 파이프라인: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name string 소스 table을 식별하기 위한 세 부분으로 구성된 이름입니다. catalog.schema.table
source_table_catalog string 소스 table의 catalog. catalog
source_table_schema string table의 원본 schema. schema
source_table_name string 원본 table이름입니다. table
source_path string 클라우드 스토리지의 원본 table의 위치 또는 클라우드 스토리지에서 직접 읽을 경우의 경로입니다. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type string 원본의 형식입니다. 값은 TABLE, PATH, VIEW 또는 STREAMING_TABLE입니다. TABLE
source_column_name string 원본의 이름은 column입니다. date
target_table_full_name string 대상 table을 식별하기 위한 세 부분으로 구성된 이름입니다. catalog.schema.table
target_table_catalog string 대상 table의 catalog. catalog
target_table_schema string 대상 table의 schema. schema
target_table_name string 대상의 이름은 table입니다. table
target_path string 대상 table클라우드 스토리지의 위치입니다. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type string 대상의 유형입니다. 값은 TABLE, PATH, VIEW 또는 STREAMING TABLE입니다. TABLE
target_column_name string 대상 column의 이름입니다. date
created_by string 이 계보를 생성한 사용자입니다. Azure Databricks 사용자 이름, Azure Databricks 서비스 주체 ID, "System-User" 또는 사용자 정보를 캡처할 수 없는 경우 NULL 일 수 있습니다. crampton.rods@email.com
event_time timestamp 계보가 생성된 시간의 타임스탬프입니다. Timezone 정보는 UTC를 나타내는 +00:00 사용하여 값의 끝에 기록됩니다. 2023-06-20T19:47:21.194+00:00
event_date date 계보가 생성된 날짜입니다. 이것은 분할된 column입니다. 2023-06-20

읽기 계보 시스템 tables

계보 시스템 tables분석할 때 다음 사항을 고려해야 합니다.

  • entity_typeAzure Databricks는 Delta Live Tables, Notebook, 작업, Databricks SQL 쿼리 및 대시보드를 지원합니다. 다른 엔터티의 이벤트는 지원되지 않습니다.
  • entity_typenull로 표시되는 경우는 Azure Databricks 엔터티가 이벤트에 관여하지 않음을 의미합니다. 예를 들어 JDBC 쿼리 또는 사용자가 Azure Databricks UI의 샘플 데이터 탭을 클릭한 결과일 수 있습니다.
  • 이벤트가 읽기인지 쓰기인지 확인하기 위해 소스 유형과 대상 유형을 볼 수 있습니다.
    • 읽기 전용: 소스 유형이 null이 아니지만 대상 유형은 null입니다.
    • 쓰기 전용: 대상 유형은 null이 아니지만 소스 유형은 null입니다.
    • 읽기 및 쓰기: 소스 유형 및 대상 유형이 null이 아닙니다.

계보 시스템 table 예제

시스템 tables에서 계보가 기록되는 방법을 보여주는 예로, 쿼리와 그에 따라 생성되는 계보 기록은 다음과 같습니다.

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);

레코드 system.access.table_lineage은 다음과 같습니다.

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

레코드 system.access.column_lineage은 다음과 같습니다.

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

참고 항목

위의 예제에서는 모든 계보 columns 표시되지 않습니다. 위의 계보 schema을(를) 참조하여 전체 schema을(를) 보십시오.

외부 table 쿼리 문제 해결

클라우드 스토리지 경로를 사용하여 외부 table를 참조하는 경우, 연결된 계보 레코드에는 경로 이름만 포함되고 table 이름은 포함되지 않습니다. 예를 들어, 이 쿼리의 이력 레코드에는 경로 이름만 포함되고 table 이름은 포함되지 않습니다.

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

경로에서 참조하는 외부 table의 계보 레코드에 대한 쿼리를 시도하는 경우, source_table_full_name 또는 target_table_full_name대신 source_path 또는 target_path를 사용하여 쿼리를 필터링해야 합니다. 예를 들어, 다음 쿼리가 외부 table에 대한 모든 계보 레코드를 가져옵니다.

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";

예: 외부 table 이름에 따라 계보 레코드 검색

직접 클라우드 스토리지 경로를 검색하지 않고 계보를 찾으려면, table 이름을 사용하여 다음 함수를 통해 get 계보 데이터를 확인할 수 있습니다. 함수에서 system.access.table_lineagesystem.access.column_lineage으로 대체하여 column 계보를 쿼리할 수도 있습니다.

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)
  )

그 후, 다음 명령을 사용하여 외부 table에 대한 계보 레코드를 표시하고 함수를 호출합니다.

display(getLineageForTable("table_name"))