Snowsight のデータ系統¶
Snowflakeは、データがソースオブジェクトからターゲットオブジェクトへ、例えばテーブルから表示へどのように流れるかを追跡し、オブジェクト内のデータがどこから来たのか、あるいはどこへ行くのかを確認することができます。この情報は data lineage と呼ばれ、Snowflakeオブジェクト間の関係を理解するのに役立ちます。
データ系統は2つのタイプの関係を捉えます:
あるオブジェクトから別のオブジェクトへのデータのコピーやマテリアライズなど、データの移動。例えば、 CREATE TABLE AS SELECT (CTAS)、 INSERT、 MERGE のようなテーブルに対する演算子はデータ移動になります。
オブジェクトの依存関係。オブジェクトがベースオブジェクトを参照するが、データを実体化したりコピーしたりしない場合(表示オブジェクトがテーブルを参照する場合など)。
Snowsight の Lineage タブを使用すると、オブジェクトや列の系統を表示できます。Snowflakeは、系統情報をプログラムで取得するための SQL 関数 も提供しています。関連機能である ML Lineage は、機械学習モデルや関連オブジェクトの系統情報を提供します。
Snowflakeデータリネージはこれらのメリットを提供します。
異なるオブジェクト間の関係を理解することにより、影響分析を提供します。
データ移動の系統とオブジェクト依存関係を表示することで、モニタリングとトラブルシューティングを強化します。
機密データの流れを追跡することで、コンプライアンスを促進します。
ソースとターゲットのオブジェクトと列を理解することで、データの信頼性を高めます。
表示系統の管理者を委任することができます。詳細については、 Snowsightのリネージ情報へのアクセス をご参照ください。
このトピックでは、 Snowsight を使用してオブジェクトおよび列の系統を表示し 、 下流ま たは上流テーブルのいずれかに出現する列にタグをセットする方法について情報を提供します。
Snowsight のデータ系統について¶
Snowsight の Lineage タブを使うと、オブジェクトのソースとターゲットの関係を理解することができます。系統の用語では、ソースオブジェクトはターゲットオブジェクトの「上流」にあり、ターゲットオブジェクトはソースオブジェクトの「下流」にあります。Snowsightは、選択したオブジェクトの上流または下流に、一歩ずつオブジェクトを表示します。
例えば、この SQL ステートメントでは:
CREATE TABLE table2 AS SELECT col1 FROM table1;
table2
はターゲット・テーブルで、ソース・テーブルの table1
の下流です。テーブルで table1
に由来する列 col1
は、テーブル table2
に含まれています。これは下流のリネージ関係でもあります。 Snowsight のテーブル table1
の詳細を表示すると、 Lineage のタブに、 table1
から table2
を指す矢印が表示され、下流のリネージ関係が示されます。代わりにテーブル table2
から始めると、矢印は table2
の上流から table1
に向かいます。また、両テーブルの列 col1
の関係も同様であることがわかります。
この情報を使用して、機密データがソーステーブルからターゲットテーブルへどのように流れるかを理解し、マスキングポリシーなどで機密列を保護する戦略を策定し、機密列にタグを付けることができます。
サポートされている操作¶
Snowflakeは、動的テーブル、外部テーブル、表示、マテリアライズドビューを含む、テーブルおよびテーブルに類似したオブジェクトに対するこれらの操作のデータリネージを追跡します。
CREATE TABLE...AS SELECT (CTAS)
例えは UPDATE があります。
UPDATE mydb.schema1.table1 FROM mydb.schema2.table2 SET table1.col1 = table2.col1;
サポートされているオブジェクト¶
データ系統は、 テーブルのようなオブジェクト 間のデータ移動と依存関係をサポートします。テーブルのような」オブジェクトとは、テーブルを含む、テーブルのようにクエリできるオブジェクトのことです(テーブルほどテーブル的なものはありません)。テーブルのようなオブジェクトは以下の通りです。
テーブル
動的テーブル
外部テーブル
Icebergテーブル
ビュー
マテリアライズドビュー
ステージングは、以下の機械学習オブジェクトのように、データの系統関係に参加することもできます。
Feature Views (実際にはSnowflake内の動的なテーブルまたはビューです)
列の系統は、任意の2つのテーブルのようなオブジェクトの列間でサポートされています。例えば、テーブルの列を選択すると、その列が表示される他のテーブルのようなオブジェクトを表示する、下流の列の系統を表示することができます。
さらに、タグとマスキングポリシーの管理権限を持つロールを使用している場合は、タグとマスキングポリシーの関連付けを確認できます。
ML 系統¶
ML Lineage は、単純な移動関係や依存関係ではなく、機械学習ワークフローでデータがどのように使用され、変換されるかに焦点を当てた機械学習関係を特にサポートします。以下のタイプのオブジェクト間の関係がサポートされています。
Feature Views (実際にはSnowflake内の動的テーブルまたはビューです)
テーブルノードの名前変更と削除¶
名前を変更され削除されたテーブルがグラフに表示されています。削除されたテーブルはグレーで表示されます。
リネージ保持と埋め戻し¶
Lineage グラフは、リアルタイムでリネー ジ情報を提供します。追跡された演算子は、Snowsight UI に遅滞なく表示されます。過去の情報は以下の通りです。
列は1年間保持されます。
オブジェクトのリネージは1年間保持されます。
削除されたオブジェクトのリネージは14日間保持されます。
このプレビューでは、データ移動を伴わない依存関係は、Snowflakeアクティビティ履歴から保持限界まで埋め戻しされます。例えば、ビューが6ヶ月前にテーブルから作成された場合、この依存関係は、テーブルからは下流の関係として、ビューからは上流の関係として表示されます。このプレビュー(2024年11月開始)以前に発生したテーブル間(データ移動)の関係はキャプチャされない可能性があります。
注釈
このプレビューが開始された時点では、一部のアカウントでは履歴の全データがすぐに表示されない可能性があります。これらのアカウントのリネージデータは現在も埋め戻しをされており、数週間以内に利用可能となる予定です。
制限事項¶
Lineage タブは、以下の種類のオブジェクトでは使用できません。
共有データベース内のオブジェクト。
共有 SNOWFLAKE データベース内のオブジェクト。
データベースの INFORMATION_SCHEMA にあるオブジェクト。
動的テーブルは他のオブジェクトのリネージ・グラフに表示されますが、 Lineage タブは動的テーブル自体には表示されません。
クエリ情報は、オブジェクト依存関係ではなく、データ移動関係に対してのみ利用可能です。クエリ情報を表示できるのは、 ACCOUNTADMIN ロールを持つユーザーだけです。クエリ情報は他のロールでは利用できません。
Snowsightのリネージ情報へのアクセス¶
Lineage タブにアクセスし、オブジェクトの上流および下流のすべての系統オブジェクトと依存関係を表示するには、以下の権限を持つロールを使用します。
テーブルの SELECT など、リネージを評価したいオブジェクトの権限。
そのオブジェクトを含むデータベースとスキーマの USAGE
アカウントに対する VIEW LINEAGE。
以下の例では、カスタムロールを作成し、必要な権限を付与しています。
USE ROLE ACCOUNTADMIN;
CREATE ROLE lineage_role;
GRANT VIEW LINEAGE ON ACCOUNT TO ROLE lineage_role;
GRANT SELECT ON mydb.sch.mytable TO ROLE lineage_role;
系統グラフの上流または下流のオブジェクトに権限がない場合、そのオブジェクトは灰色で表示され、オブジェクトを表示するには権限が不足しているというメッセージが表示されます。Snowflakeアカウント管理者にオブジェクトの権限を付与してもらいます。必要であれば、グローバル VIEW LINEAGE 権限もリクエストしてください。
灰色のオブジェクトは、リネージグラフの終端ノードを意味するのではなく、単にそのオブジェクトのリネージを取得する権限がないため、そのポイントから上流または下流のリネージを表示できないことを示します。この動作は、他のアクセスポリシーで保護されているオブジェクトや列にも適用されます。
データ列とタグ列の監視¶
注釈
タグにはSnowflake Enterprise Editionが必要です。
テーブルとタグセンシティブ列のデータリネージを監視するには、次のようにします。
オブジェクトの上流と下流のリネージを表示するには、 必要な権限 を持つロールを使用してください。
Snowsight で、 Data » Databases に移動します。
データベース、スキーマ、 対応オブジェクト を選択します。
Lineage タブを選択します。
ウェアハウスがまだ使用されていない場合は、ウェアハウスを選択します。リネージグラフの生成にはウェアハウスが必要です。
リネージグラフは、オブジェクトから始まり、アプリケーションに応じて、下流および上流のオブジェクトの1つのレベルが表示されます。矢印は、ターゲット・テーブルの列がソース・テーブルの列を含むことを示します。テーブルを選択し、その列を表示することができます。
列にマスキングポリシーがセットされ、ポリシーにエラーがある場合は、このプロシージャでタグの割り当てを終了し、 Columns タブ (テーブルまたは表示) に切り替えて、マスキングポリシーの割り当てを編集できます。 Policy Error にカーソルを合わせると、エラーの説明が表示されます。
リネージグラフの特定のテーブル列の詳細を見るには、テーブルを選択します。表示された詳細パネルで、列にカーソルを合わせ、グラフの選択に基づいて View Lineage または View Dependencies を選択します。
テーブルに多くの列がある場合、検索フィルターを使って列を見つけることができます。
View Column Lineage ダイアログで、 Downstream Lineage または Upstream Lineage を選択します。
列とテーブルの詳細、および列に割り当てられたタグを評価します。
列のタグは、ソース列と、ターゲット列がタグを持っているかどうかに関連付けられています。
テーブルに存在しないはずの列が含まれている場合は、テーブルを作成するステートメント(SQL)を修正してください。
テーブルにタグが割り当てられていて、そのタグを持つべきでない列にタグが割り当てられている場合は、列にタグを割り当てている SQL ステートメントを更新するか、 Snowsight を使用してタグの割り当てを更新してください。
ACCOUNTADMIN ロールまたはグローバル APPLY TAG 権限を付与されたロールを使用している場合、 Review Columns and Apply Tags バナーが表示されます。タグを列に適用するには、次のようにします。
バナーで、 Review Columns and Apply Tags を選択します。
まだ適用されていない変更は、異なる色やパターンで強調表示されます。
列にセットする新しいタグには、破線の青い枠線が表示されます。
更新するタグ値は黄色の枠で囲まれています。
グラフで選択したテーブルに基づく列にタグがまだセットされていない場合、バナーは表示されません。
タグを適用し、列のタグ値を更新するには、 Apply Tags を選択します。
タグが列上にセットできない場合、エラーメッセージにセットできなかったタグの列数が表示されます。 Review Columns and Apply Tags を選択し、前のステップを繰り返してタグを割り当てます。
タグを列に割り当てると、バナーは消えます。