카테고리:

테이블 함수

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

소스 오브젝트의 상태입니다. 가능한 값은 ‘DELETED’, ‘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

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

DISTANCE

INTEGER

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

사용법 노트

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

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

  • 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        |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+