- 카테고리:
GET_LINEAGE (SNOWFLAKE.CORE)¶
Snowflake 오브젝트가 주어지면 해당 오브젝트의 업스트림 또는 다운스트림 데이터 계보 정보를 반환합니다. 업스트림은 오브젝트를 생성하게 된 오브젝트의 경로를 의미하며, 다운스트림은 오브젝트로부터 생성된 오브젝트의 경로를 의미합니다.
구문¶
SNOWFLAKE.CORE.GET_LINEAGE(
'<object_name>',
'<object_domain>',
'<direction>',
[ <distance>, ]
[ '<object_version>' ]
)
인자¶
필수:
'object_name'
데이터 계보 정보가 검색되는 오브젝트의 이름입니다. 오브젝트가 세션의 현재 스키마와 다른 스키마에 있는 경우 정규화된 이름을 사용합니다.
'object_domain'
오브젝트의 도메인입니다. 지원되는 도메인은 ‘COLUMN’, ‘TABLE’(뷰 및 동적 테이블을 포함한 모든 테이블형 오브젝트 포함) 및 ‘STAGE’입니다. ML 계보의 경우 기능 뷰(내부적으로 동적 테이블 및 뷰)는
TABLE
, 모델은 ‘DATASET’ 또는 ‘MODULE’를 사용합니다.'direction'
계보를 유지해야 하는 방향입니다. 지원되는 방향은 ‘UPSTREAM’ 및 ‘DOWNSTREAM’입니다.
선택 사항:
distance
검색할 계보의 레벨 수입니다. 최대값은 5개이며 기본값이기도 합니다.
'object_version'
데이터세트 및 모델과 같이 버전이 있는 오브젝트의 경우 계보가 검색되는 오브젝트의 버전입니다. 지정하지 않으면 기본 버전이 사용됩니다.
출력¶
출력은 계보 경로의 오브젝트 관계당 하나의 행이 있는 테이블(즉, 계보 그래프의 에지)입니다. 관계는 각 행에서 소스와 대상으로 지정된 오브젝트 간의 관계입니다. 테이블에는 다음 열이 포함됩니다.
열 |
타입 |
설명 |
---|---|---|
|
VARCHAR |
소스 오브젝트가 포함된 데이터베이스. |
|
VARCHAR |
소스 오브젝트를 포함하는 스키마. |
|
VARCHAR |
소스 오브젝트의 정규화되지 않은 이름. |
|
VARCHAR |
대상 오브젝트의 도메인. 사용 가능한 값은 COLUMN’, ‘TABLE’, ‘DATASET’, ‘MODULE’(ML 모델의 경우) 및 ‘STAGE’입니다. |
|
VARCHAR |
데이터 세트 및 모델과 같이 버전이 지정된 오브젝트의 경우 소스 오브젝트의 버전입니다. 소스 오브젝트의 버전이 지정되지 않은 경우 NULL 입니다. |
|
VARCHAR |
소스 오브젝트가 열인 경우 소스 열의 이름입니다. 소스 오브젝트가 열이 아닌 경우 NULL 입니다. |
|
VARCHAR |
소스 오브젝트의 상태입니다. 가능한 값은 ‘DELETED’, ‘ACTIVE’ 및 ‘MASKED’입니다. |
|
VARCHAR |
대상 오브젝트가 포함된 데이터베이스. |
|
VARCHAR |
대상 오브젝트를 포함하는 스키마. |
|
VARCHAR |
대상 오브젝트의 정규화되지 않은 이름. |
|
VARCHAR |
대상 오브젝트의 도메인. 사용 가능한 값은 COLUMN’, ‘TABLE’, ‘DATASET’, ‘MODULE’(ML 모델의 경우) 및 ‘STAGE’입니다. |
|
VARCHAR |
데이터 세트 및 모델과 같이 버전이 지정된 오브젝트의 경우 대상 오브젝트의 버전. 대상 오브젝트가 버전이 없는 경우 NULL 입니다. |
|
VARCHAR |
대상 오브젝트가 열인 경우 대상 열의 이름입니다. 대상 오브젝트가 열이 아닌 경우 NULL 입니다. |
|
VARCHAR |
대상 오브젝트의 상태입니다. 가능한 값은 ‘DELETED’, ‘ACTIVE’ 및 ‘MASKED’입니다. |
|
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));
출력은 다음과 유사합니다.
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+
| 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 |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+