MySQLデータリネージ これは、MySQL ビューを通してデータがどのように流れるかを示す列ごとのマップです。 挿入...選択 ジョブやETLスクリプト:どのソース列が各ターゲット列にデータを提供し、どの結合、フィルタ、集計を介してデータを提供しているか。MySQL自体はこれを表示できません。 情報スキーマ 構造を記述するものであり、データフローを記述するものではない。 Gudu SQLFlow 専用のMySQL方言パーサーを使用してMySQL SQLを解析することで、系統図を自動的に構築し、個々の列まで掘り下げ可能なインタラクティブな図を生成します。
ご自身のSQLで確認してみてください。 MySQL ビューを貼り付けるか、 挿入...選択 へ 無料のSQLFlow系統可視化ツールMySQLの方言を選択すれば、数秒で列レベルの系統図を取得できます。
information_schema が MySQL のデータリネージを提供できない理由
MySQLの 情報スキーマ これは構造カタログです。 日次収益 5 つの列があり、それらのタイプは何か、そして ( キー列の使用法外部キーがどこを指しているか。それが決して教えてくれないのは、 daily_revenue.net_revenue は以下から計算されます 注文数 マイナス 注文割引フィルター条件 注文状況、そしてグループ化 顧客地域.
そのデータフローの知識は、SQL テキスト自体という 1 つの場所にのみ存在します。典型的な MySQL 環境では、それはビュー定義 (情報スキーマ.VIEWS テキストを保存するが、解釈するものは何もない)、 挿入...選択 と 重複キー更新時 ETLジョブが実行するステートメント、DDL内の生成列式、およびアプリケーション側のクエリファイル。これらをリネージに変換するには、実際にSQLを解析して意味的に解決する何かが必要であり、展開する必要があります。 選択 *結合、サブクエリ、ビュースタックを通して列をトレースします。それがSQLFlowの役割です。
具体的な例:INSERT-SELECTによってデータが入力されるレポートテーブル
以下は、数千ものMySQLベースのレポート作成システムで毎晩実行されるステートメントの一例です。注文を集計してサマリーテーブルにまとめるアップサート処理です。
INSERT INTO daily_revenue (report_date, region, order_count, gross_revenue, net_revenue) SELECT o.order_date, c.region, COUNT(*), SUM(o.amount), SUM(o.amount - o.discount) FROM orders o JOIN customers c ON c.id = o.customer_id WHERE o.status = 'completed' GROUP BY o.order_date, c.region ON DUPLICATE KEY UPDATE order_count = VALUES(order_count), gross_revenue = VALUES(gross_revenue), net_revenue = VALUES(net_revenue);
これをSQLFlowで実行すると、ターゲット列ごとに、その値を直接提供する列と、結果には含まれないものの結果を形成する列の両方が抽出されます。
| 対象列 | 直接の情報源 | 間接的な(影響)要因 |
|---|---|---|
日次収益報告日 | 注文日 | 注文状況 |
日次収益地域 | 顧客地域 | 顧客ID, 注文の顧客ID, 注文状況 |
日次収益.総収益 | 注文数 経由 和() | 注文日, 顧客地域 (GROUP BY)、キーを結合、 注文状況 |
daily_revenue.net_revenue | 注文数, 注文割引 経由 和() | 同上 |
3列目の区別は重要である。 注文状況 決して登場しない 日次収益しかし、データの入力方法を変更すると、レポート内のすべての数値が変わります。SQLFlow はこれをモデル化しています。 間接的な系統 (列は どこ, 参加する、 と グループ分け図の中で、これを別の切り替え可能な関係タイプとして扱う。ほとんどの系譜ツールではこの区別が全くなく、これはまさに正直な影響分析に必要なものだ。
MySQLビューによる系譜(スタックビューを含む)
ビューは、テーブルレベルの系統追跡ツールが静かに諦める場所です。BIダッシュボードには次のように表示されます。 v_regional_kpisから選択する v_完了した注文から選択する 注文 と 顧客「このダッシュボード列に何が供給されているのか?」に答えるには、リネージエンジンはビュースタックのすべてのレイヤーを通して列参照を解決し、 選択 * 根本的な定義に反して、変換を伴って実行します。
SQLFlowは、セマンティック解析の一環として、ビュー、CTE、サブクエリ、スター展開などを通じて列参照を解決します。JDBC経由でスキーマを指定すると、DDLとビュー定義が自動的に取得されるため、リネージグラフには、古い移行フォルダに存在するビューではなく、データベースに実際に存在するビューが反映されます。
生成された列: 単一テーブル内の系統
MySQLが生成する列は、データフローをDDLに直接埋め込む。
CREATE TABLE order_items ( quantity INT, unit_price DECIMAL(10,2), line_total DECIMAL(12,2) AS (quantity * unit_price) STORED );
行数合計 INSERT によって書き込まれることは決してないため、DML だけを監視するアプローチではその出所を完全に見逃してしまいます。SQLFlow は生成された列の式を SQL として解析するため、 行数合計 適切な系統のエッジを取得する 量 と 単価、そしてその下流にあるものはすべて 行数合計 その起源は、あの2本の物理的な柱にまで遡る。
SQLFlowを使用してMySQLの系統図を作成する方法
- SQLを収集する。 ステートメントを貼り付けるか、ファイルをアップロードします SQLFlow クラウドまたは、JDBC 経由で MySQL インスタンスに接続し、SQLFlow が DDL とビュー定義を直接読み取るようにします。dbt ユーザーは dbt マニフェストをインポートできます。
- MySQL方言で解析します。 SQLFlow は、方言固有の MySQL パーサー (汎用 ANSI 文法ではなく、39 種類の方言パーサーの 1 つ) を使用するため、次のような MySQL 固有の構造が
重複キー更新時バッククォートで囲まれた識別子や生成された列は、スキップされることなく正しく分析されます。 - 探索してエクスポートする。 インタラクティブな図で任意の列を上流または下流にトレースし、間接的な系統表示をオン/オフに切り替え、グラフを JSON、CSV、または PNG としてエクスポートするか、REST API を介してプログラムで取得できます。v8.2.3 以降では、平易な英語で質問することもできます (「どのレポートが
顧客地域AIが引用するすべての表と列は、表示前に分析されたグラフに対して検証されます。
エンジンの下部は 汎用SQLパーサー, a commercial SQL compiler front-end developed since the mid-2000s and validated against roughly 13,600 per-dialect SQL test fixtures. Lineage quality is a parsing problem before it is anything else, and that regression corpus is what keeps real-world MySQL — with all its dialect quirks — from silently falling out of the graph.
オープンソースのMySQLの系統情報オプションについてはどうでしょうか?
オープンソースのパーサー SQL Lineage と sqlglot 個々の MySQL SELECT および INSERT ステートメントを適切に処理し、Python パイプライン内の少数の単純なクエリのリネージが必要な場合は、適切な出発点となります。DataHub や OpenMetadata などのカタログプラットフォームは、リネージが一度作成されると、それを整理して表示するのに優れています。ギャップは、ハード SQL から大規模な正確なリネージを生成する際に現れます。ライブ スキーマ メタデータを使用してスタック ビューを介して列を解決し、直接的なリネージと間接的なリネージを区別し、拡張します。 選択 * 正しく、しかも何千ものスクリプトにわたってそれを実行する。SQLFlowは、この抽出の問題に焦点を当て、DataHub、Microsoft Purview、およびOpenMetadata用のエクスポートアダプタを介して結果をカタログに供給する。
MySQLが全体像の一部に過ぎない場合
MySQL がシステム全体を構成することは稀です。多くの場合、ウェアハウスにデータを供給する OLTP ソース、または ETL レイヤーが通過する複数のエンジンの 1 つです。SQLFlow は、同じ列レベルの分析で 39 の SQL 方言を解析するため、MySQL から始まり Snowflake、BigQuery、または PostgreSQL 1 つのグラフに存在します。エンタープライズ展開では、増分スキャンと永続的なリネージリポジトリを使用して、100 を超えるデータベースと 100 万を超える列の環境をバッチ スキャンします。SQL テキストをネットワーク外に持ち出すことができないチームの場合、 SQLFlow オンプレミス 完全にエアギャップされた環境で、DockerまたはKubernetes上で動作します。
マルチジョイン挿入、ビュースタック、ストアドプロシージャなど、さまざまな実際のステートメントで出力がどのように見えるかを確認するには、 データ系統の例.
よくある質問
MySQLの系統情報を取得するには、私のデータへのアクセスが必要ですか?
いいえ。SQLFlowはSQLコードの静的解析を行い、必要に応じてテーブルやビューの定義などのスキーマメタデータも解析します。テーブルの行データを読み取ることはありません。オンプレミス版では、SQLテキストもネットワーク内に留まります。
SQLFlowはINSERT … SELECT … ON DUPLICATE KEY UPDATEを通してデータの流れを追跡できますか?
はい。MySQL方言パーサーはステートメント全体を解析します。各ターゲット列はSELECT文内のソース列にリンクされ、集計関数内の式も含まれ、upsert句は同じデータフローの一部として処理されます。
information_schemaには系統情報が含まれていますか?
いいえ。 情報スキーマ これは、テーブル、列、型、キー、およびビュー定義の生テキストといった構造を記述します。SQLを解釈しないため、どのソース列が特定のターゲット列にデータを供給しているかを判別することはできません。データリネージにはビューとDML SQLの解析が必要であり、SQLFlowはまさにその処理を行います。
SQLFlowはMySQLビューにおけるSELECT *をどのように処理しますか?
SQLFlow が拡張 選択 * 実際のスキーマ(JDBC経由で取得されたもの、またはDDLとして提供されたもの)に対して、スターを通過するすべての列に、漠然としたテーブル間の矢印ではなく、独自の系統エッジが割り当てられます。
MySQLのデータリネージを無料で試用する方法はありますか?
はい。SQLFlow Cloudには無料プランがあります。ブラウザにMySQL SQLを貼り付けると、すぐに列レベルの図が表示されます。プレミアムプランは月額$49.99、オンプレミスプランは月額$500、または選択したデータベースタイプごとに1回限りの$4,800です。詳細は以下をご覧ください。 価格設定.
MySQLの系統情報をデータカタログにエクスポートできますか?
はい。JSON、CSV、PNG形式でエクスポートしたり、REST APIにクエリを実行したり、エンタープライズ環境ではDataHub、Microsoft Purview、OpenMetadata用の組み込みエクスポートアダプタを使用したりできます。
今すぐMySQLデータフローをマッピングしましょう
無料のビジュアライザーにビューまたはINSERT-SELECT文を貼り付けるか、MySQL環境全体のスキャンについてご相談ください。