カテゴリ:

テーブル関数

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'

データセットやモデルなどのバージョン管理されたオブジェクトの場合は、系統を取得するオブジェクトのバージョン。指定がない場合は、デフォルトのバージョンが使用されます。

出力

出力は、系統パスのオブジェクト関係(つまり、系統グラフのエッジ)ごとに1行を持つテーブルです。関係は、各行でソースとターゲットとして指定されたオブジェクト間のものです。テーブルには、次の列が含まれています。

説明

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 は、各行が系統グラフのエッジ(関係)を表す行を最大1,000万行返します。出力に1,000万行以上ある場合、関数は出力を1,000万行に警告なしで切り捨てます。

CREATE TABLE AS SELECT を使用して TABLE_A から TABLE_B という名前のテーブルを作成し、同様の方法で TABLE_B から TABLE_C という名前のテーブルを作成したとします。以下の SQL クエリは、 TABLE_A から下流の系統の2つのステップを検索します。

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