카테고리:

테이블 함수

GET_LINEAGE (SNOWFLAKE.CORE)

Snowflake 오브젝트가 주어지면 해당 오브젝트의 업스트림 또는 다운스트림 데이터 계보 정보를 반환합니다. 업스트림은 오브젝트를 생성하게 된 오브젝트의 경로를 의미하며, 다운스트림은 오브젝트로부터 생성된 오브젝트의 경로를 의미합니다.

구문

SNOWFLAKE.CORE.GET_LINEAGE(
    '<object_name>',
    '<object_domain>',
    '<direction>',
    [ <distance>, ]
    [ '<object_version>' ]
)
Copy

인자

필수:

'object_name'

데이터 계보 정보가 검색되는 오브젝트의 이름입니다. 오브젝트가 세션의 현재 스키마와 다른 스키마에 있는 경우 정규화된 이름을 사용합니다.

'object_domain'

오브젝트의 도메인입니다. 지원되는 도메인은 ‘COLUMN’, ‘TABLE’(뷰 및 동적 테이블을 포함한 모든 테이블형 오브젝트 포함) 및 ‘STAGE’입니다. ML 계보의 경우 기능 뷰(내부적으로 동적 테이블 및 뷰)는 TABLE, 모델은 ‘DATASET’ 또는 ‘MODULE’를 사용합니다.

'direction'

계보를 유지해야 하는 방향입니다. 지원되는 방향은 ‘UPSTREAM’ 및 ‘DOWNSTREAM’입니다.

선택 사항:

distance

검색할 계보의 레벨 수입니다. 최대값은 5개이며 기본값이기도 합니다.

'object_version'

데이터세트 및 모델과 같이 버전이 있는 오브젝트의 경우 계보가 검색되는 오브젝트의 버전입니다. 지정하지 않으면 기본 버전이 사용됩니다.

출력

출력은 계보 경로의 오브젝트 관계당 하나의 행이 있는 테이블(즉, 계보 그래프의 에지)입니다. 관계는 각 행에서 소스와 대상으로 지정된 오브젝트 간의 관계입니다. 테이블에는 다음 열이 포함됩니다.

타입

설명

SOURCE_OBJECT_DATABASE

VARCHAR

소스 오브젝트가 포함된 데이터베이스.

SOURCE_OBJECT_SCHEMA

VARCHAR

소스 오브젝트를 포함하는 스키마.

SOURCE_OBJECT_NAME

VARCHAR

소스 오브젝트의 정규화되지 않은 이름.

SOURCE_OBJECT_DOMAIN

VARCHAR

대상 오브젝트의 도메인. 사용 가능한 값은 COLUMN’, ‘TABLE’, ‘DATASET’, ‘MODULE’(ML 모델의 경우) 및 ‘STAGE’입니다.

SOURCE_OBJECT_VERSION

VARCHAR

데이터 세트 및 모델과 같이 버전이 지정된 오브젝트의 경우 소스 오브젝트의 버전입니다. 소스 오브젝트의 버전이 지정되지 않은 경우 NULL 입니다.

SOURCE_COLUMN_NAME

VARCHAR

소스 오브젝트가 열인 경우 소스 열의 이름입니다. 소스 오브젝트가 열이 아닌 경우 NULL 입니다.

SOURCE_STATUS

VARCHAR

소스 오브젝트의 상태입니다. 가능한 값은 ‘ACTIVE’ 및 ‘MASKED’ 입니다.

TARGET_OBJECT_DATABASE

VARCHAR

대상 오브젝트가 포함된 데이터베이스.

TARGET_OBJECT_SCHEMA

VARCHAR

대상 오브젝트를 포함하는 스키마.

TARGET_OBJECT_NAME

VARCHAR

대상 오브젝트의 정규화되지 않은 이름.

TARGET_OBJECT_DOMAIN

VARCHAR

대상 오브젝트의 도메인. 사용 가능한 값은 COLUMN’, ‘TABLE’, ‘DATASET’, ‘MODULE’(ML 모델의 경우) 및 ‘STAGE’입니다.

TARGET_OBJECT_VERSION

VARCHAR

데이터 세트 및 모델과 같이 버전이 지정된 오브젝트의 경우 대상 오브젝트의 버전. 대상 오브젝트가 버전이 없는 경우 NULL 입니다.

TARGET_COLUMN_NAME

VARCHAR

대상 오브젝트가 열인 경우 대상 열의 이름입니다. 대상 오브젝트가 열이 아닌 경우 NULL 입니다.

TARGET_STATUS

VARCHAR

대상 오브젝트의 상태입니다. 가능한 값은 ‘ACTIVE’ 및 ‘MASKED’ 입니다.

DISTANCE

INTEGER

계보 경로에서 소스 오브젝트에서 대상 오브젝트까지의 거리입니다. 직접 관계의 거리는 1입니다.

PROCESS

VARIANT

소스 오브젝트와 대상 오브젝트 간의 계보가 설정된 방법에 대한 세부 정보를 제공합니다. 예를 들어, SQL 쿼리의 쿼리 ID 또는 소스 오브젝트에서 대상 오브젝트로 데이터를 이동한 저장 프로시저의 이름이 포함될 수 있습니다.

사용법 노트

  • 오브젝트가 존재하지 않거나, 현재 사용자가 액세스할 수 없는 경우, 오브젝트가 데이터 계보를 지원하지 않거나, 지정된 도메인에 없는 경우 오류 메시지가 표시됩니다.

  • 지정된 오브젝트에 대한 계보 정보를 사용할 수 없는 경우 출력 테이블에 행이 포함되지 않으며 이는 오류가 아닙니다.

  • GET_LINEAGE 는 최대 천만 개의 행을 반환하며, 각 행은 계보 그래프에서 에지(관계)를 나타냅니다. 출력에 천만 개 이상의 행이 있는 경우, 함수는 출력을 천만 행으로 자동으로 잘라냅니다.

  • 이 함수 사용에 적용되는 제한 사항 및 고려 사항은 계보 제한 사항 및 고려 사항 섹션을 참조하십시오.

CREATE TABLE AS SELECT 를 사용하여 TABLE_A 에서 TABLE_B 라는 테이블을 생성한 다음, 비슷한 방식으로 TABLE_B 에서 TABLE_C 라는 테이블을 만들었다고 가정합니다. 다음 SQL 쿼리는 TABLE_A 에서 두 단계의 다운스트림 계보를 검색합니다.

SELECT
    DISTANCE,
    SOURCE_OBJECT_DOMAIN,
    SOURCE_OBJECT_DATABASE,
    SOURCE_OBJECT_SCHEMA,
    SOURCE_OBJECT_NAME,
    SOURCE_STATUS,
    TARGET_OBJECT_DOMAIN,
    TARGET_OBJECT_DATABASE,
    TARGET_OBJECT_SCHEMA,
    TARGET_OBJECT_NAME,
    TARGET_STATUS,
FROM TABLE (SNOWFLAKE.CORE.GET_LINEAGE('my_database.sch.table_a', 'TABLE', 'DOWNSTREAM', 2));
Copy

출력은 다음과 유사합니다.

+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+
| DISTANCE | SOURCE_OBJECT_DOMAIN | SOURCE_OBJECT_DATABASE | SOURCE_OBJECT_SCHEMA | SOURCE_OBJECT_NAME | SOURCE_STATUS | TARGET_OBJECT_DOMAIN | TARGET_OBJECT_DATABASE | TARGET_OBJECT_SCHEMA | TARGET_OBJECT_NAME | TARGET_STATUS |
|----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------|
|        1 | TABLE                | MY_DATABASE            | SCH                  | TABLE_A            | ACTIVE        | TABLE                | MY_DATABASE            | SCH                  | TABLE_B            | ACTIVE        |
|        2 | TABLE                | MY_DATABASE            | SCH                  | TABLE_B            | ACTIVE        | TABLE                | MY_DATABASE            | SCH                  | TABLE_C            | ACTIVE        |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+