Snowflakeデータリネージ:クエリ履歴からの列レベルのリネージ

Snowflakeのデータ系統 これは、Snowflake アカウント内でデータがどのように移動するかを示す列レベルのマップです。どのソース テーブルと列が各ターゲット テーブル、ビュー、またはダッシュボードにデータを提供し、どの変換 (結合、 平らにする 拡張機能、ウィンドウ機能、フィルターなどは、その過程で発生します。Snowflakeの アカウント使用状況 ビューはどのオブジェクトにアクセスされたかを示しますが、テーブルレベルのアクセス履歴までしか表示しません。ある列が別の列からどのように計算されたかを知るには、SQL自体を解析する必要があります。 Gudu SQLFlow まさにその通りです。Snowflakeのクエリ履歴、DDL、ビューを取り込み、Snowflake固有の文法で各ステートメントを解析し、対話型の列レベルの系統図を生成します。

今すぐご覧ください: Snowflake クエリを貼り付ける 無料オンラインスノーフレーク系統図解ツール Snowflake方言を選択すると、インタラクティブな列レベルの図が表示されます。クラウド版には無料プランがあります。

Snowflakeがネイティブで提供する機能とその限界

Snowflakeはすでに多くのことを記録しています。 アカウント使用状況 スキーマはアカウントのアクティビティに関するビューを公開し、そこからクエリがどのテーブルを読み取り、どのオブジェクトを変更したかを再構築できます。これはアクセス監査や大まかな依存関係の発見に非常に役立ち、Snowflake 上のあらゆるデータリネージ戦略は、このテレメトリを無視するのではなく、まずそこから始めるべきです。

アカウント使用状況のテレメトリでは、以下の情報が得られません。 変身 列粒度での系統情報。クエリが 生の注文 そして書いた 分析収益 それは教えてくれない 収益合計SUM(orders.amount) ステータスフィルターの後、または 資格を得る 句は、出力に決して現れない列に基づいて行を暗黙のうちに削除します。その情報は、ステートメントの SQL テキストという 1 つの場所にのみ存在します。それを抽出するには、真の Snowflake SQL パーサー、つまり、 平らにする, 資格を得る半構造化 変異体 パス、マルチレベルCTE、および 選択 * 実際のスキーマに対する展開。

QUERY_HISTORYから履歴を構築:実際に実行されたもの

SQLFlowは以下をサポートします Snowflakeのクエリ履歴をネイティブ入力として使用するドキュメントやスケジュールされたジョブ構成からパイプラインを推測する代わりに、Snowflake が実際に実行したステートメントを SQLFlow に渡します。 テーブルをSELECTとして作成します, 入れる, マージ、 と コピー クエリ履歴からのステートメントに加え、それらのステートメントにスキーマコンテキストを与えるDDLとビュー定義も含まれます。その結果、現実に基づいた履歴データが得られます。

  • アドホックSQLには盲点がない。 単発のバックフィル、アナリストが作成したCTASステートメント、ノートブックやBIツールから実行されたクエリはすべてクエリ履歴に記録されるため、データリネージにも反映されます。オーケストレーターのリポジトリのみをスキャンする設定駆動型のアプローチでは、これらを完全に無視してしまいます。
  • ビューは正しく解決されます。 SQLFlow はクエリ履歴とともにビュー定義を取り込むため、クエリは vw_customer_360 ビュー本体をたどって、基本となるテーブルと列までトレースします。
  • スター拡張は、実際のスキーマを使用します。 DDLがロードされたので、 選択 * 実際の列リストに展開されるため、列レベルの境界はテーブルレベルの推測に縮退することなく、正確なまま維持されます。

SQLFlowは、貼り付けられたSQLやアップロードされたファイルに加えて、JDBCおよびdbtマニフェストファイルによるライブメタデータも受け入れるため、実行されたクエリの履歴とモデルで定義された履歴を1つのグラフに組み合わせることができます。複数のデータウェアハウス環境を運用している場合、Redshiftクエリログも同様にネイティブに処理されます。

Snowflake SQLによる列レベルの系統

Snowflake SQLは汎用ANSIではありません。半構造化された明細項目を解凍し、各顧客の上位3件の注文を保持するパイプラインステップを考えてみましょう。

CREATE OR REPLACE TABLE analytics.top_customer_orders AS SELECT o.customer_id, f.value:sku::STRING AS sku, f.value:qty::NUMBER AS quantity, o.order_total FROM raw.orders o, LATERAL FLATTEN(input => o.line_items) f QUALIFY ROW_NUMBER() OVER ( PARTITION BY o.customer_id ORDER BY o.order_total DESC ) <= 3;

この一文の正しい系統分析では、 SKU から派生する raw.orders.line_items バリアント列 平らにする テーブル関数とキャスト。 顧客ID注文合計 直接流れる。 資格を得る 条項により 顧客ID注文合計 結果セットを2回目に整形します。行フィルタリングが影響し、データフローは影響しません。SQLFlowのSnowflakeパーサーは、そのすべてをモデル化します。なぜなら、その下にあるリネージエンジン(同じ) 汎用SQLパーサー エンジンは、方言ごとに約 13,600 のテスト フィクスチャに対して検証されており、ステートメントの完全な意味モデルを通じてすべての列参照を解決します。

直系血統と間接血統:資格が重要な理由

それ 資格を得る この条項は、ほとんどの系譜ツールが見落としている区別を示している。 直系の血統 データフローは次のとおりです。 注文合計 着陸する トップ顧客注文数.注文合計. 間接的な系統 影響: 注文合計 また、ウィンドウフィルタを通過する行も決定するため、計算方法の変更は、影響を受けない列であっても出力に影響を与えます。SQLFlow は、直接および間接的な系統を、別々に切り替え可能な関係タイプとして記録します。Snowflake での影響分析については、 資格を得る, どこ結合条件、 グループ分け キーには真のビジネスロジックが込められている。その違いこそが、正確な爆発半径と、安心できる程度の過小評価との違いなのだ。

Snowflake上のdbt

Snowflake変換がdbt経由で実行される場合、SQLFlowは dbtマニフェスト SQLFlowは、dbtのドキュメントで説明されているモデル間のグラフよりも深い、モデル間の列レベルの系統を直接生成します。また、SQLFlowはデータウェアハウス側(DDL、ビュー、クエリ履歴)も取り込むため、dbtプロジェクトで宣言されている内容とSnowflakeアカウントで実際に実行されている内容を整合させることができます。例えば、dbtの周りで誰かが実行したアドホックなCTASは、同じグラフ内のモデルの隣に表示されます。

Snowflakeのデータリネージを取得する方法:3つの経路

パス入力最適
SQLFlow クラウドSQLを貼り付け、ファイルをアップロードし、ブラウザでソースを接続します。本日試用。個別の問い合わせやプロジェクトに対応。無料プランあり。プレミアムプランは月額$49.99。
SQLFlow オンプレミスクエリ履歴、DDL、dbtマニフェストなど、すべてネットワーク内で管理できます。SQLテキストがインフラストラクチャから外部に漏洩してはならない規制環境。Docker/Kubernetes; 月額$500、またはデータベースタイプごとに1回限りの$4,800。
REST API / Javaライブラリ / JSウィジェットプログラムによる分析と埋め込み図独自のプラットフォームやカタログに系譜を構築する。

エンタープライズ規模では、SQLFlow は増分スキャンと永続的なリネージ リポジトリを使用して 100 を超えるデータベースと 100 万を超える列の環境をバッチ スキャンし、 DataHub、Microsoft Purview、およびOpenMetadata — そのため、Snowflake の履歴を、既に運用しているカタログに取り込むことができます。カタログ プラットフォームは、スタック全体にわたる在庫管理、所有権、および検出に優れています。複雑な SQL を正確な列レベルのエッジに解析するには、専用のエンジンからデータを受け取ることでメリットが得られます。プライバシー保護は徹底しており、SQLFlow は SQL コードとスキーマ メタデータの静的解析のみを実行し、Snowflake テーブルの行を読み取ることはありません。

Snowflakeを超えて:39の方言にわたる単一の系統図

Snowflake アカウントは単独で稼働しているものはほとんどありません。通常、環境には、ウェアハウスにデータを供給する古い Oracle または SQL Server システム、その横にある Spark または Databricks ジョブ、そしてその上に BI レイヤー SQL が含まれています。SQLFlow は 39 のデータベースとクエリ エンジン用の方言固有のパーサーを同梱しているため、Snowflake クエリ履歴を読み取るのと同じエンジンで、 BigQueryのデータリネージDatabricksとSpark SQLの系譜さらに、Oracle PL/SQLやT-SQLなどのストアドプロシージャを多用するソース(プロシージャ内の動的SQLを含む)にも対応しています。これは、Snowflakeへの移行時に最も重要になります。移行前に、レガシーシステムの依存関係グラフをマッピングする必要があるからです。エンジンの動作の詳細については、以下を参照してください。 SQLデータリネージツールの概要.

よくある質問

SnowflakeのACCOUNT_USAGEビューから、列レベルのデータ系列情報を取得することはできますか?

いいえ。アカウント使用状況テレメトリでは、テーブルレベルのアクセス履歴(クエリが読み書きしたオブジェクト)が提供されます。列レベルの変換履歴(どのソース列がどの出力列に、どの関数とフィルタを介して供給されるか)を把握するには、SQL文自体のSQLテキストを解析する必要があります。SQLFlowはまさにそれを行います。

SQLFlowはどのようにして私のSnowflakeアカウントを取り込むのですか?

Snowflakeのクエリ履歴をネイティブ入力として使用する方法、JDBC経由のライブスキーマメタデータを使用する方法、アップロードされたDDLとビュー定義を使用する方法、貼り付けたSQLを使用する方法、dbtマニフェストファイルを使用する方法など、いくつかの方法があります。クエリ履歴とDDLを組み合わせるのが最も強力です。実際に実行されたステートメントからリネージが構築され、スター展開とビュー解決のための完全なスキーマコンテキストが提供されます。

SQLFlowは、FLATTENやQUALIFYといったSnowflake固有の構文を理解しますか?

はい。SQLFlowは汎用ANSIパーサーではなく、専用のSnowflake文法を使用するため、 横方向に扁平化, 資格を得る、バリアントパス式など 値:sku::STRING、 と テーブルをSELECTとして作成します 列レベルで解析および追跡され、フィルタ句は間接的な系統としてキャプチャされます。

SQLFlowはSnowflakeテーブルのデータを読み取りますか?

いいえ。SQLFlowはSQLコードの静的解析を実行し、必要に応じてスキーマメタデータ(テーブルと列の定義)を読み取ります。テーブルの行を読み取ることはありません。オンプレミス版では、SQLテキストもネットワーク内に留まります。これは、クエリ履歴に機密性の高いリテラルが含まれている場合に特に重要です。

Snowflakeの系統情報をデータカタログにエクスポートできますか?

はい。エンタープライズ向け展開では、DataHub、Microsoft Purview、OpenMetadata用のエクスポートアダプタに加え、JSON、CSV、PNG形式でのエクスポート機能、およびカスタム統合のためのREST APIが提供されます。

SnowflakeのSQLFlowを使った系統管理にはどれくらいの費用がかかりますか?

SQLFlow Cloudは無料からスタート。プレミアムプランは月額$49.99。SQLFlow On-Premiseは月額$500、または選択したデータベースタイプごとに$4,800の一括払い(Snowflakeは1タイプとしてカウント)で、2台のサーバーにインストール可能。詳細は以下を参照。 価格設定 詳細は

あなたのスノーフレークの系譜を今すぐ辿ってみましょう

Snowflakeのクエリを無料のビジュアライザーに貼り付けるか、クエリ履歴と資産全体のスキャンについてご相談ください。