移行リネージを使用した移行を計画する
移行リネージ サービスを使用すると、BigQuery データ ウェアハウスの移行を計画する際に、移行元データベースのデータフローと接続を可視化できます。
移行リネージを作成すると、リネージ サービスは、次の図に示すように、データが移行元システム内をどのように移動するか、移行元システムの各テーブルまたはビューがどのように接続されているかを可視化するグラフを提供します。
移行リネージ サービスは、次の SQL 言語をサポートしています。
- Amazon Redshift SQL
- Snowflake SQL
- Teradata SQL
- GoogleSQL(BigQuery)
制限事項
リネージ サービスは、移行元データベースの最も古いログの最初の 5 GB を処理します。
サポートされているロケーション
移行リネージ サービスは、一部のロケーションでご利用いただけます。詳細 については、BigQuery SQL トランスレータとリネージ サービスの ロケーションをご覧ください。
必要な権限
移行リネージ サービスの使用に必要な権限を取得するには、プロジェクトに対する MigrationWorkflow 編集者 (roles/bigquerymigration.editor)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには 移行リネージ サービスを使用するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
移行リネージ サービスを使用するには、次の権限が必要です。
-
bigquerymigration.workflows.create -
bigquerymigration.workflows.get -
bigquerymigration.lineageDbs.query
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
BigQuery での IAM のロールと権限の詳細については、BigQuery の IAM ロール と権限をご覧ください。
移行リネージを作成する
移行リネージを作成するには、まず dwh-migration-dumper ツールを実行して、Cloud Storage
にアップロードするソース入力 SQL ログファイルを生成します。
入力ファイルを Cloud Storage にアップロードしたら、
移行リネージを Google Cloud コンソールまたは BigQuery Migration API を使用して生成できます。
dwh-migration-dumper ツールを実行する
次のオプションのいずれかを選択します。
Amazon Redshift
Amazon Redshift データベースで移行リネージを作成して表示するには、次の操作を行います。
- `dwh-migration-dumper`
dwh-migration-dumperツールを実行して、 移行元システム ファイルのダンプを生成します。 - クエリログを Cloud Storageにアップロードします。
Snowflake
Snowflake データベースで移行リネージを作成して表示するには、次の操作を行います。
- `dwh-migration-dumper`
dwh-migration-dumperツールを実行して、 移行元システム ファイルのダンプを生成します。 - クエリログを Cloud Storageにアップロードします。
Teradata
Teradata データベースで移行リネージを作成して表示するには、次の操作を行います。
- `dwh-migration-dumper`
dwh-migration-dumperツールを実行して、 移行元システム ファイルのダンプを生成します。 - クエリログを Cloud Storageにアップロードします。
BigQuery
BigQuery データベースで移行リネージを作成して表示するには、次の操作を行います。
- アカウントまたはサービス アカウントに次のロールを付与します。
- BigQuery メタデータ閲覧者 (
roles/bigquery.metadataViewer) - Data Catalog 閲覧者 (
roles/datacatalog.viewer)
- BigQuery メタデータ閲覧者 (
dwh-migration-dumperツールをインストールします。メタデータとクエリログを生成するには、
dwh-migration-dumperツールを実行します。 これらのメタデータとクエリログは、1 つ以上の ZIP ファイルに含まれています。dwh-migration-dumper --connector bigquery dwh-migration-dumper --connector bigquery-logs
ZIP ファイルを Cloud Storage バケットにアップロードします。バケットの作成と Cloud Storage への ファイルのアップロードの詳細については、バケットを 作成するとファイル システムからオブジェクトをアップロードするをご覧ください。
移行リネージを生成する
メタデータとクエリログを含む ZIP ファイルを Cloud Storage にアップロードしたら、移行リネージを生成できます。次のオプションのいずれかを選択します。
コンソール
[移行サービス] ページに移動します。
[SQL の変換] で、[変換] > [バッチ 変換] をクリックします。
[変換構成] に、次の情報を入力します。
- [**表示名**] に、リネージ ジョブの名前を指定します。名前には文字、数字、アンダースコアを使用できます。
- [処理を行うロケーション] で、リネージ ジョブを実行するロケーションを選択します。
- [ソース言語] で、ソース SQL 言語を選択します。
- [**ターゲット言語**] で、[**GoogleSQL**] を選択します。
[次へ] をクリックします。
[ファイルの場所の詳細] で、次の操作を行います。
- [出力ディレクトリの場所] に、変換出力ファイルを保存する Cloud Storage
バケットへのパスを指定します。パスを
形式で入力するか、
bucket_name/folder_name/[参照] をクリックします。 - [入力ディレクトリの場所] に、先ほどアップロードしたログ ZIP ファイルを含む Cloud Storage
フォルダへのパスを指定します。パスを
形式で
bucket_name/folder_name/入力するか、 [参照] をクリックします。[出力サブディレクトリ名] フィールドで、出力ファイルのサブディレクトリに名前を付けることもできます。 - [入力ディレクトリの場所を追加] をクリックすると、入力ファイルを追加できます。
- [出力ディレクトリの場所] に、変換出力ファイルを保存する Cloud Storage
バケットへのパスを指定します。パスを
形式で入力するか、
[次へ] をクリックします。
[クエリログからのリネージ] チェックボックスをオンにします。
[作成] をクリックします。
リネージ ジョブが実行されています。入力サイズによっては、ジョブの完了に数時間かかることがあります。ジョブが完了すると、生成された移行リネージへのリンクが表示されます。
API
リネージ ジョブを作成するには、次の curl コマンドを実行します。
curl -d "{ \"tasks\": { \"TASK_NAME\": { \"type\": \"Experimental_Lineage\", \"translation_details\": { \"target_base_uri\": \"BUCKET_PATH\", \"source_target_mapping\": { \"source_spec\": { \"base_uri\": \"BUCKET_PATH\" } }, \"target_types\": \"LINEAGE\" } } } } " \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows
次のように置き換えます。
TASK_NAME: このリネージ ジョブを識別する名前。BUCKET_PATH: 入力 ZIP ファイルを含む Cloud Storage バケットへのパス。PROJECT_ID: プロジェクトの Google Cloud プロジェクト ID。LOCATION: 処理を行うロケーション。この値はeuまたはusにする必要があります。
この呼び出しは、次のようなメッセージを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID", "tasks": { "task_name": { /*...*/ } }, "state": "RUNNING" }
リネージ ジョブが実行されています。入力サイズによっては、ジョブの完了に数時間かかることがあります。リネージ ジョブのステータスを確認するには、ワークフロー ID を指定して次の curl コマンドを実行します。
curl \ -H "Content-Type:application/json" \ -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID
ジョブが完了すると、生成されたリネージビューへのリンクが表示されます。
移行リネージを開く
移行リネージを生成したら、次のいずれかのオプションを使用して移行リネージを開くことができます。
コンソール
[移行サービス] ページに移動します。
[SQL の変換] で、[最近の表示] をクリックします。
[SQL 変換] ページで、ジョブ名をクリックして完全なリネージ ジョブを選択します。リネージ ジョブの出力値は
Lineageです。[変換の詳細] ページで、[データリネージ] をクリックします。
API
完了した移行リネージを開くには、curl コマンドを
BigQuery Migration API とともに実行します。
curl \ -H "Content-Type:application/json" \ -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID
次のように置き換えます。
PROJECT_ID: プロジェクトの Google Cloud プロジェクト ID。LOCATION: 処理を行うロケーション。この値はeuまたはusにする必要があります。WORKFLOW_ID: 生成されたリネージのワークフロー ID。
出力メッセージの taskResult.translationTaskResult.consoleUri フィールドに含まれているリンクに移動します。
移行リネージを使用する
以降のセクションでは、移行リネージを使用して移行元データとデータベースを操作する方法について説明します。
移行リネージの用語を理解する
移行リネージでは次の用語が使用されます。
| 利用規約 | 説明 |
|---|---|
| スクリプト | リネージの構築中に取り込まれた データベース ログに表示される SQL スクリプトやその他のプログラム。スクリプトは ステートメントで構成されます。ステートメントは通常、単一の SQL ステートメントです。 |
| ノード | リネージグラフの頂点。これらは、 テーブルと列で構成されます。 |
| テーブル | 通常のテーブル、ビュー、構造化ファイル、その他のテーブルのようなリソースなど、関係 とも呼ばれます。 |
| 列 | テーブル列、ビュー プロジェクション、擬似列、ファイルやその他のリソースの列のようなフィールド、構造体フィールドなどのサブ列など、属性とも呼ばれます。 |
| エッジ | パイプラインがこれらの ノードを読み取りまたは書き込むスクリプトを実行したために発生した インタラクションを示す、リネージノード間の接続。エッジには、エッジが派生したときのタイムスタンプ、述語、その他のメタデータ がアノテーションとして付加されます。エッジを持つ別のノードに隣接するノードは 直接接続と呼ばれます。2 つのノード間のエッジのパスは 間接接続 と呼ばれます。 |
| リネージエッジ | 移行元
ノードが、移行先ノードのデータに影響を与える FROM、WHERE、または GROUP BY などの句に含まれていたことを示す方向付きエッジ。 |
| ユーザーとパイプライン | スクリプトを実行したユーザーとスクリプトに関する移行元 データベースから提供されるメタデータ ラベル。リネージ エンジンには固有の意味はありませんが、スクリプトをオリジンごとにグループ化するために使用されます。 |
以降のセクションでは、移行リネージのさまざまなページについて説明します。
ランディング ページを確認する
移行リネージのランディング ページには、リネージ ジョブの ID、名前でリネージ オブジェクトを検索するための検索フィールド、関心のあるリネージ オブジェクトをハイライト表示する候補リストが表示されます。このページには、移行リネージ全体のテーブル、パイプライン、ユーザーの合計数も表示されます。
特定のテーブル、ビュー、列に移動するには、検索フィールドでオブジェクトを検索するか、ランディング ページで候補のオブジェクトをクリックします。
ノードページを確認する
移行リネージのノードを確認するには、次のいずれかのタブをクリックします。
[Data Flow] タブ
[Data Flow] タブには、リネージグラフの一部が視覚的に表示されます。リネージ サービスでテーブルまたは列を初めて表示するときのデフォルトのページです。グラフには、データが移行元システム内をどのように移動するかが視覚的に表示されます。このグラフのノードはテーブルまたはビューを表し、ノード間のエッジは左側のノードから右側のノードへのデータの流れを表します。
[Data Flow] グラフの各テーブルには、修飾されていない名前が表示されます。データベースとスキーマの接頭辞が付いたテーブルの完全修飾名を表示するには、ノードにポインタを合わせてツールチップを表示します。各テーブルは、ノードの縦線で示されるスキーマを示します。リネージ内のすべてのスキーマはアルファベット順に並べ替えられ、色が割り当てられます。そのため、同じスキーマ内のテーブルには同じ色のバーが表示され、名前が似ているスキーマ内のテーブルには同様の色のバーが表示されます。
各ノードには、ノードのプロパティを示すアイコンが表示されます。
- monitor: テーブルではなく ビュー。
- cached: 常に完全に更新されるテーブル(切り捨ててから書き換えられます)。アイコンをクリックすると、このテーブルに隣接するスクリプトが表示されます。
- cached: 常に完全に更新されるわけではないテーブル(切り捨ててから書き換えられます)。アイコンをクリックすると、このテーブルに隣接するスクリプトが表示されます。
- timer: 短期間で終了したテーブル。アイコンにポインタを合わせると、テーブルが存在した期間が表示されます。
- snowflake: 7 日以上前に最後に書き込まれたテーブル。静的データまたは書き込み頻度の低いデータを含むテーブルを示します。
[Data Flow] グラフのオブジェクトを確認するには、次の操作を行います。
- テーブル列のリストを表示するには、テーブルをクリックします。このビューには、提供されたメタデータ ダンプから判別された各列の名前とデータ型、またはクエリログに表示される SQL から推測されたデータ型が表示されます。
- 列の列レベルのリネージグラフを表示するには、列をクリックします。列レベルのリネージグラフでは、エッジは移行先列に影響するデータフローを表します。
エッジの詳細を表示するには、グラフ内のエッジをクリックします。このビューには、エッジを生成した SQL スクリプトへのリンクが含まれています。
SQL ステートメントが移行元ノードを参照し、ステートメントが移行先ノードに挿入されるデータを計算している場合、移行元ノードから移行先ノードへのエッジが生成されます。通常、これには移行元から移行先へのデータの転送が含まれますが、移行元ノードが移行先に影響する
WHERE句またはGROUP BY句で使用されている場合も、[Data Flow] タブにエッジが表示されます。データ転送のみをフィルタするには、ツールバーの [Show non-data edges] ボタンを切り替えます。
[接続] タブ
リネージノードの [接続] タブには、リネージグラフ内の近くのノードのリストが表示されます。デフォルトでは、接続されたノードは現在のノードからの最短パスの距離で並べ替えられます。現在のノードから到達するエッジが少ないノードが最初に表示されます。並べ替えは [並べ替え] オプションで変更できます。
接続リストには、デフォルトで現在のノードの上流(プロデューサー)ノードと下流(コンシューマー)ノードの両方が含まれます。このフィルタは [タイプ] コントロールで変更できます。[距離] 列には、現在のノードの上流にあるノードが、現在のノードからそのノードまでの最短の逆方向パスの距離を示す上向き矢印で表示されます。同様に、現在のノードの下流にあるノードは、現在のノードからそのノードまでの最短の順方向パスの距離を示す下向き矢印で表示されます。ノードがサイクルの一部である場合、現在のノードの上流と下流の両方に配置できます。
表示されているすべてのノードを含むファイルをダウンロードするには、 [ダウンロード CSV] をクリックします。
[Users(ユーザー)] タブ
ノードの [Users] タブには、ノードまたはその上流または下流のノードを読み取りまたは書き込むスクリプトを実行したユーザーが表示されます。デフォルトでは、最も多くのアクションを実行したユーザーが最初に表示されます。並べ替えは [並べ替え] オプションで変更できます。
表示されているすべてのユーザーを含むファイルをダウンロードするには、 [download] CSV をクリックします。
[Pipelines] タブ
ノードの [Pipelines] タブには、ノードまたはその上流または下流のノードを読み取りまたは書き込むスクリプトを実行したパイプラインが表示されます。デフォルトでは、最も多くのアクションを実行したパイプラインが最初に表示されます。並べ替えは [並べ替え] オプションで変更できます。
表示されているすべてのパイプラインを含むファイルをダウンロードするには、 [download CSV] をクリックします。
コードタブ
ノードの [コード] タブには、そのノードからデータを読み取るか、そのノードにデータを書き込む入力ファイルに表示されるすべての SQL スクリプトが表示されます。SQL テキストでノードが言及されている箇所がハイライト表示されます。スクリプトをクリックすると、全文が表示されます。フィルタ設定を変更して、表示されるスクリプトのリストをフィルタできます。
表示されているすべてのスクリプトを含むファイルをダウンロードするには、 [download CSV] をクリックします。
エッジページを確認する
リネージグラフのノードエッジを確認するには、次のいずれかのタブをクリックします。
[詳細] タブ
エッジの [詳細] タブには、エッジを生成したスクリプトによって実行されたオペレーションを説明する述語とカテゴリが表示されます。
述語は、ハイフンで区切られた 3 つの部分からなるコードとして表記されます。最初の部分
は、エッジのソースがリレーションであることを示す r、またはエッジのソースが属性であることを示す a、
のいずれかです。2 番目の部分は、移行元ノードが移行先ノードのデータに影響を与えた方法を示す次のいずれかの省略形です。
has: 移行元リレーションにターゲット属性が含まれています。dat: 移行元がデータを移行先にコピーまたは転送します。res: 移行元がWHERE、HAVING、JOIN ONなどの句で移行先のカーディナリティをフィルタまたは制限します。grp: 移行元が移行先に影響するGROUP BY句で使用されます。
3 番目の部分も r または a のいずれかで、
エッジの移行先がリレーションか属性かを示します。
エッジカテゴリには次のものがあります。
dat述語:AGGREGATE: 移行元が、移行先を書き込む集計計算で使用されました。EXACT_COPY: 移行元からのデータが完全に移行先にコピーされました。FUNCTION: 移行元が移行先の計算に使用されました。IDENTITY_COPY: 移行先は計算されませんでした。移行先は、キャストや変換を行わない移行元のリテラル コピーでした。PARTITION_PROMOTION: 移行元パーティションを移行先に昇格した結果、移行先に移行元からのデータが含まれています。WEAK_COPY: 移行元からのデータが少なくとも部分的に移行先にコピーされました。
res述語:FILTER: 移行元が、移行先を書き込む比較で使用されました。KEY: 移行元からのデータが、移行先を書き込む結合比較のキーとして使用されました。
grp述語:GROUP: 移行元からのデータが、移行先に影響するGROUP BY句のキーとして使用されました。
コードタブ
エッジの [コード] タブには、そのエッジを生成した SQL スクリプトが表示されます。エッジの移行元ノードと移行先ノードは、SQL テキストで言及されている箇所がハイライト表示されます。
次のステップ
- 移行評価を実行して、データ ウェアハウスの BigQuery への移行の実現可能性と潜在的なメリットを評価します。
- インタラクティブ SQL トランスレータ、Translation API、バッチ SQL トランスレータなどの SQL 変換サービスを使用して、SQL クエリから GoogleSQL(Gemini 拡張 SQL カスタマイズを含む)への変換を自動化します。