非構造化データのデータ分析情報では、Vertex AI を使用して、Cloud Storage 内の未加工の非構造化ファイルを BigQuery 内の構造化されたクエリ可能なアセットに変換します。非構造化データのデータ分析情報は、PDF ファイル用に最適化されています。
このドキュメントでは、必要な権限を設定し、非構造化データを検出して、生成された分析情報を表示し、データを BigQuery に抽出する方法について説明します。
始める前に
非構造化データのデータ分析を使用する前に、必要な権限が付与され、必要な API が有効になっていることを確認してください。
API を有効にする
プロジェクトで次の API を有効にします。
dataplex.googleapis.combigquery.googleapis.comaiplatform.googleapis.com(Vertex AI)
API を有効にするために必要なロール
API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。
必要なロールと権限
非構造化データのセマンティック推論は、標準の BigQuery 検出スキャンに基づいて構築された高度な機能です。非構造化データのデータ分析を構成して実行するには、検出スキャンのベースライン権限を満たし、セマンティック推論の追加ロールを付与する必要があります。
ステップ 1: ベースライン検出スキャンのロール
Knowledge Catalog で使用されるユーザーとサービス アカウントに、標準の検出スキャンに必要なベースライン権限があることを確認します。完全なリストについては、Cloud Storage データを検出してカタログ化するをご覧ください。
ステップ 2: セマンティック推論用の追加ロール
ベースライン ロールに加えて、ユーザーとサービス アカウントに次の追加の IAM ロールがあることを確認します。
追加の ID とロールの概要
| ID タイプ | 一般的なプリンシパルの形式 | 必要な IAM のロール | 重要な目的 |
|---|---|---|---|
| エンドユーザー | Google Cloud ユーザー アカウント |
|
これらの追加のロールを使用して、AI 生成の結果を表示し、最終的なデータ抽出をトリガーします。 |
| Knowledge Catalog Universal Catalog 検出エージェント | service-<var>PROJECT_NUMBER</var>@gcp-sa-dataplex.iam.gserviceaccount.com |
|
この Google マネージド サービス エージェントは、この追加のロールを使用して Vertex AI を呼び出し、推論されたスキーマとメタデータを生成します。 |
| BigQuery 接続サービス アカウント | service-<var>PROJECT_NUMBER</var>@gcp-sa-bigqueryconnection.iam.gserviceaccount.com |
|
BigQuery を外部ストレージに接続し、BigQuery が未加工のファイルを読み取り、オブジェクト テーブルを作成して、個人のユーザー認証情報を公開することなく AI 推論を実行できるようにします。 |
| パイプライン実行サービス アカウント(省略可) | ユーザー管理のサービス アカウント |
|
自動化されたパイプラインを使用してデータを抽出する場合、この ID はバックグラウンド ジョブを実行して、AI によって生成されたエンティティを BigQuery テーブルに具体化します。 |
| デフォルトの Dataform サービス アカウント(省略可) | service-<var>PROJECT_NUMBER</var>@gcp-sa-dataform.iam.gserviceaccount.com |
|
パイプライン抽出メソッドを使用する場合、Dataform はワークフローをオーケストレートするために、パイプライン実行サービス アカウントを偽装する権限を必要とします。 |
エンドユーザーの役割と権限
分析情報を表示してデータを抽出するために必要な権限がユーザー アカウントに付与されるように、プロジェクトに対する次の IAM ロールをユーザー アカウントに付与するよう管理者に依頼してください。
-
検出スキャンと分析情報を表示する: Dataplex DataScan データ閲覧者 (
roles/dataplex.dataScanDataViewer) -
SQL またはパイプラインを使用してデータを抽出します。
- BigQuery データ編集者 (
roles/bigquery.dataEditor) - BigQuery ジョブユーザー (
roles/bigquery.jobUser)
- BigQuery データ編集者 (
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、分析情報の表示とデータの抽出に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
分析情報を表示してデータを抽出するには、次の権限が必要です。
-
検出スキャン:
-
dataplex.datascans.create -
dataplex.datascans.get -
dataplex.datascans.getData -
dataplex.datascans.list
-
-
データ抽出:
-
bigquery.tables.create -
bigquery.tables.update -
bigquery.tables.getData -
bigquery.jobs.create
-
管理者は、カスタムロールや他の事前定義ロールを使用して、これらの権限をユーザー アカウントに付与することもできます。
Knowledge Catalog 検出サービス エージェントのロールと権限
Knowledge Catalog 検出サービス エージェントは、検出スキャンを実行し、Vertex AI を使用して推論を行うためにアクセス権限が必要なサービス エージェントです。
Knowledge Catalog ディスカバリー サービス エージェント(通常は service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com)に、ディスカバリー スキャンを実行し、Vertex AI を使用して推論を実行するために必要な権限が付与されるように、プロジェクトに対する次の IAM ロールを Knowledge Catalog ディスカバリー サービス エージェント(通常は service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com)に付与するよう管理者に依頼してください。
- Vertex AI ユーザー (
roles/aiplatform.user) - ディスカバリ サービス エージェント (
roles/dataplex.discoveryServiceAgent)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、検出スキャンの実行と Vertex AI を使用した推論の実行に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
検出スキャンを実行し、Vertex AI を使用して推論を行うには、次の権限が必要です。
-
aiplatform.endpoints.predict -
bigquery.datasets.create -
bigquery.datasets.get -
storage.buckets.get -
storage.objects.get -
storage.objects.list
管理者は、Knowledge Catalog 検出サービス エージェント(通常は service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com)に、カスタムロールや他の事前定義ロールを付与することもできます。
BigQuery 接続サービス アカウントのロールと権限
BigQuery Cloud リソース接続を使用すると、Knowledge Catalog は BigQuery の外部(Cloud Storage など)に保存されている非構造化データに安全にアクセスして検出できます。接続を作成すると、BigQuery は専用のサービス アカウントを自動的に作成します。このサービス アカウントは、外部データソースへの接続に使用される ID として機能します。
デフォルトでは、このサービス アカウントには権限がありません。このサービス アカウントには、データを含む Cloud Storage バケットに対する必要な IAM ロールを明示的に付与する必要があります。既存の BigQuery 接続を使用するか、ソース Cloud Storage バケットと同じロケーションに新しい接続を作成できます。
BigQuery 接続サービス アカウント(通常は service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com)にオブジェクト テーブルの作成と推論の実行に必要な権限があることを確認するには、BigQuery 接続サービス アカウント(通常は service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com)に次の IAM ロールを付与するよう管理者に依頼してください。
- 非構造化データを含むバケットに対するストレージ オブジェクト閲覧者 (
roles/storage.objectViewer) - プロジェクトに対する Vertex AI ユーザー (
roles/aiplatform.user)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、オブジェクト テーブルの作成と推論の実行に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
オブジェクト テーブルを作成して推論を実行するには、次の権限が必要です。
-
非構造化データを含むバケットに対する
storage.buckets.get -
非構造化データを含むバケットに対する
storage.objects.get - プロジェクトに対する
aiplatform.endpoints.predict
管理者は、BigQuery 接続のサービス アカウント(通常は service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com)に、カスタムロールや他の事前定義ロールを付与することもできます。
パイプライン実行サービス アカウントのロールと権限(省略可)
自動化されたパイプラインを使用して推論されたデータを抽出する場合は、パイプラインを実行するための専用のサービス アカウントを作成するか、指定する必要があります。この実行サービス アカウントは、BigQuery でバックグラウンドのデータ抽出と分析タスクを安全に認証して実行する ID として機能します。また、デフォルトの Dataform サービス アカウントに、この実行サービス アカウントの権限を借用する権限を付与する必要があります。
パイプラインを使用して推論されたエンティティとリレーションを抽出するために必要な権限がパイプライン実行サービス アカウントに付与されるように、プロジェクトに対する次の IAM ロールをパイプライン実行サービス アカウントに付与するよう管理者に依頼してください。
- BigQuery データ編集者 (
roles/bigquery.dataEditor) - BigQuery ジョブユーザー (
roles/bigquery.jobUser) - BigQuery ユーザー(
roles/bigquery.user) - Vertex AI ユーザー (
roles/aiplatform.user)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、パイプラインを使用して推論されたエンティティとリレーションシップを抽出するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
パイプラインを使用して推論されたエンティティとリレーションシップを抽出するには、次の権限が必要です。
-
bigquery.tables.create -
bigquery.tables.update -
bigquery.tables.get -
bigquery.tables.getData -
bigquery.jobs.create -
aiplatform.endpoints.predict
管理者は、カスタムロールや他の事前定義ロールを使用して、これらの権限をパイプライン実行サービス アカウントに付与することもできます。
デフォルトの Dataform サービス アカウント(service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com)に、パイプライン実行サービス アカウントの権限を借用するために必要な権限を持たせるには、パイプライン実行サービス アカウントに対するサービス アカウント トークン作成者 (roles/iam.serviceAccountTokenCreator)の IAM ロールをデフォルトの Dataform サービス アカウント(service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com)に付与するよう管理者に依頼してください。
この事前定義ロールには、パイプライン実行サービス アカウントの権限を借用するために必要な iam.serviceAccounts.getAccessToken 権限が含まれています。
管理者は、カスタムロールや他の事前定義ロールを使用して、この権限をデフォルトの Dataform サービス アカウント(service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com)に付与することもできます。
非構造化データを準備する
検出スキャンを実行する前に、非構造化データを Cloud Storage バケットにアップロードする必要があります。非構造化データのデータ分析情報は、PDF ドキュメントの分析に最適化されています。
Cloud Storage でのファイルの保存と管理の詳細については、オブジェクトをアップロードするをご覧ください。
非構造化データの検出スキャンを作成する
非構造化データからセマンティック分析情報を抽出するには、まず検出スキャンを作成する必要があります。このスキャンでは、Cloud Storage 内の非構造化ファイルが自動的に検出され、オブジェクト テーブルにカタログ化されます。このプロセスでデータ分析情報を有効にすると、Knowledge Catalog は Vertex AI を使用してファイルを分析し、推論されたメタデータ、スキーマ、関係を生成します。
Google Cloud コンソールで、[メタデータのキュレーション] ページに移動します。
[Cloud Storage 検出] タブで、[作成] をクリックします。
スキャンの名前を入力します。
非構造化データを含む Cloud Storage バケットを選択するには、[参照] をクリックします。
[非構造化データ オプション] で、[セマンティック推論を有効にする] チェックボックスをオンにします。
[接続 ID] フィールドで、ファイルへのアクセスに使用する BigQuery 接続を指定します。
検出スキャンでは、オブジェクト テーブルを作成して非構造化データが BigQuery に自動的にカタログ化されます。オブジェクト テーブルは、データアクセス認証情報をクエリを実行するユーザーから安全に分離するため、Cloud Storage で認証してファイルを読み取るには接続が必要です。
[今すぐ実行](オンデマンド スキャンの場合)または [作成](スケジュール設定されたスキャンの場合)をクリックします。
使用可能なすべての構成の詳細については、Cloud Storage データを検出してカタログ化するをご覧ください。
Knowledge Catalog はオブジェクト テーブルを作成し、AI 生成のメタデータでカタログ エントリを拡充します。通常、このプロセスには標準データセットで数分かかります。
オブジェクト テーブルを見つける
検出スキャンが完了すると、Knowledge Catalog は 1 つ以上のオブジェクト テーブルを作成し、AI 生成メタデータで拡充された対応するエントリを使用して Knowledge Catalog を入力します。検出スキャンによって複数のエントリが作成された場合、各エントリには独自の [分析情報] タブがあります。自動生成されたテーブルの説明、推論されたスキーマ、関連グラフを表示できます。
Google Cloud コンソールで、[BigQuery] ページに移動します。
ナビゲーション メニューで、[ガバナンス> メタデータのキュレーション] をクリックします。
[Cloud Storage 検出] ペインで、非構造化データに対して実行した検出スキャンをクリックします。
- [スキャンの詳細] セクションには、検出スキャンの詳細が表示されます。
- [スキャンのステータス] セクションには、最新のスキャンジョブの検出結果が表示されます。
[公開済みデータセット] のリンクをクリックします。
BigQuery データセットに表示されたテーブルのリストで、検出データ スキャン用に生成されたオブジェクト テーブルを選択します。
テーブル ID をコピーします。これは次のセクションで必要になります。
推論されたエンティティ グラフを表示する
ディスカバリ スキャンのオブジェクト テーブルは、Knowledge Catalog で確認できます。
Google Cloud コンソールで、Knowledge Catalog の [検索] ページに移動します。
前のセクションで選択した ID のオブジェクト テーブルを貼り付けて検索します。
検索結果で、表をクリックしてエントリページを開きます。
[詳細] タブの [アスペクト] で、グラフ プロファイル アスペクトが存在することを確認します。このアスペクトには、エンティティとリレーションシップの推論されたスキーマが含まれています。
[分析情報] タブをクリックします。[分析情報] タブでは、次の情報を確認できます。
セマンティックの抽出。抽出可能なエンティティと関係が検出されたことを示すバナーが表示されます。SQL またはパイプラインのデプロイを使用してデータを具体化するための [抽出] ボタンが含まれています。
説明。AI が生成した人が読める形式の要約で、非構造化データの内容を説明します。検出されたプライマリ ノード(エンティティ)と、エッジ(関係)を介して互いにマッピングする方法について説明します。
パイプライン。このリソースに関連付けられている、以前にデプロイされたデータ抽出パイプラインのリスト。表示名、リージョン、作成時間、パイプラインを作成したユーザーを確認できます。
推論されたエンティティと関係。非構造化データの検出されたセマンティック構造が、インタラクティブなグラフで視覚的に表示されます。グラフには、個別のエンティティ(「レシピ」や「材料」など)を表すノードと、それらの間の接続(「アレルゲン ステータスがある」など)を表すエッジが含まれています。凡例を使用して、特定のノードとエッジをフィルタして探索できます。
エンティティ。検出されたプライマリ エンティティの詳細なリスト。各エンティティを展開して、AI によって生成された説明と、フィールド名、データ型、フィールドの説明を含む推論されたスキーマを表示できます。
関係。エンティティ間の検出された接続の詳細なリスト。各リレーションシップを展開すると、その説明と、エンティティ間のマッピング方法を定義するスキーマが表示されます。
推論された分析情報を更新する
推論された分析情報は、オブジェクト テーブルにアタッチされたアスペクトとして Knowledge Catalog カタログに保存されます。これらの分析情報は、 Google Cloud コンソールまたは entry.patch API を使用して手動で更新できます。
コンソール
Google Cloud コンソールで推論された分析情報を更新する手順は次のとおりです。
Google Cloud コンソールで、Knowledge Catalog の [検索] ページに移動します。
オブジェクト テーブル ID を貼り付けて検索します。
検索結果で、表をクリックしてエントリページを開きます。
[分析情報] タブをクリックします。
[推論されたエンティティとリレーションシップ] の横にある [編集] をクリックします。
JSON エディタで
graph-profileアスペクトを変更します。[保存] をクリックします。
REST
REST API を使用して推論された分析情報を更新する手順は次のとおりです。
payload.jsonという名前のファイルを作成し、更新するアスペクトの JSON コンテンツを追加します。次に例を示します。{ "aspects": { "dataplex-types.global.graph-profile": { "data": { // Your updated inferred insights data } } } }ターミナルで次のコマンドを実行します。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @payload.json \ "https://dataplex.googleapis.com/v1/projects/<var>PROJECT_ID</var>/locations/<var>LOCATION</var>/entryGroups/<var>ENTRY_GROUP_ID</var>/entries/<var>ENTRY_ID</var>?updateMask=aspects"次のように置き換えます。
PROJECT_ID: プロジェクトの ID(例:example-project)LOCATION: エントリのロケーション(例:us-central1)ENTRY_GROUP_ID: エントリ グループの ID(例:example-entry-group)ENTRY_ID: エントリの ID(例:example-entry)
他の言語の詳細とコードサンプルについては、エントリのアスペクトを更新するをご覧ください。
BigQuery にデータを抽出する
SQL または自動パイプラインを使用して、推論されたエンティティとリレーションシップを BigQuery の構造化テーブルまたはビューにマテリアライズできます。
[分析情報] タブで、[抽出] をクリックします。
分析のニーズと非構造化データの規模に基づいて、次のいずれかの方法を選択します。
SQL で抽出: 迅速なアドホック分析、小規模から中規模のデータセット、または BigQuery リモートモデルを使用したインフラストラクチャ不要のアプローチが必要な場合は、このオプションを選択します。
SQL を使用して抽出する手順は次のとおりです。
- [SQL で抽出] を選択します。
- [SQL で抽出] ペインで、宛先データセットを選択します。データセットは、ソースと同じロケーションに存在する必要があります。
- [Extract] をクリックします。
- BigQuery エディタで、事前入力されたクエリが開きます。クエリを実行して、標準テーブルとビューを作成します。
SQL を使用してドキュメントの分析情報を抽出する方法については、
ML.PROCESS_DOCUMENT関数を使用してドキュメントを処理するをご覧ください。パイプラインで抽出: 大規模なデータ処理を行う場合や、大量のドキュメントを処理するために堅牢な再試行ロジック、エラー処理、自動オーケストレーションが必要な場合は、このオプションを選択します。
パイプラインを使用して抽出する手順は次のとおりです。
- [Extract by pipeline] を選択します。
- [パイプラインで抽出] ペインで、パイプラインの表示名を入力します。
- リージョンを選択します。
- 宛先データセットを選択します。データセットは、ソースと同じロケーションに存在する必要があります。
- [抽出] をクリックします。これにより、データ マテリアライズをオーケストレートする BigQuery パイプラインが作成されます。
- パイプライン内のすべてのタスクを実行して、構造化されたノードビューとエッジビューを生成します。
データ ワークフローの実行の詳細については、Dataform の概要をご覧ください。
セマンティック分析情報を抽出して BigQuery にマテリアライズすると、次のタスクを実行できます。
構造化データをクエリします。新しく作成されたテーブルに対して標準 SQL クエリを実行して、抽出されたエンティティとリレーションシップを分析します。
既存のデータと結合します。非構造化ファイルから抽出した定性的な分析情報を、既存の構造化 BigQuery データセットと組み合わせます(解析された請求書データを会計テーブルと結合するなど)。
データ分析情報を確認します。BigQuery Studio のデータ分析情報機能を使用して、新しい構造化アセットの自然言語の質問と SQL クエリを自動的に生成します。
Gemini で分析します。BigQuery の Gemini を使用して、会話分析の実行、傾向の要約、抽出されたデータに基づくデータポータルでのダッシュボードの作成を行います。