非構造化データのデータ分析情報を使用する

非構造化データのデータ分析情報では、Vertex AI を使用して、Cloud Storage 内の未加工の非構造化ファイルを BigQuery 内の構造化されたクエリ可能なアセットに変換します。非構造化データのデータ分析情報は、PDF ファイル用に最適化されています。

このドキュメントでは、必要な権限を設定し、非構造化データを検出して、生成された分析情報を表示し、データを BigQuery に抽出する方法について説明します。

始める前に

非構造化データのデータ分析を使用する前に、必要な権限が付与され、必要な API が有効になっていることを確認してください。

API を有効にする

プロジェクトで次の API を有効にします。

  • dataplex.googleapis.com
  • bigquery.googleapis.com
  • aiplatform.googleapis.com(Vertex AI)

API を有効にするために必要なロール

API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

API を有効にする

必要なロールと権限

非構造化データのセマンティック推論は、標準の BigQuery 検出スキャンに基づいて構築された高度な機能です。非構造化データのデータ分析を構成して実行するには、検出スキャンのベースライン権限を満たし、セマンティック推論の追加ロールを付与する必要があります。

ステップ 1: ベースライン検出スキャンのロール

Knowledge Catalog で使用されるユーザーとサービス アカウントに、標準の検出スキャンに必要なベースライン権限があることを確認します。完全なリストについては、Cloud Storage データを検出してカタログ化するをご覧ください。

ステップ 2: セマンティック推論用の追加ロール

ベースライン ロールに加えて、ユーザーとサービス アカウントに次の追加の IAM ロールがあることを確認します。

追加の ID とロールの概要

ID タイプ 一般的なプリンシパルの形式 必要な IAM のロール 重要な目的
エンドユーザー Google Cloud ユーザー アカウント
  • Dataplex DataScan DataViewer
  • BigQuery データ編集者
  • BigQuery ジョブユーザー
これらの追加のロールを使用して、AI 生成の結果を表示し、最終的なデータ抽出をトリガーします。
Knowledge Catalog Universal Catalog 検出エージェント service-<var>PROJECT_NUMBER</var>@gcp-sa-dataplex.iam.gserviceaccount.com
  • Vertex AI ユーザー
この Google マネージド サービス エージェントは、この追加のロールを使用して Vertex AI を呼び出し、推論されたスキーマとメタデータを生成します。
BigQuery 接続サービス アカウント service-<var>PROJECT_NUMBER</var>@gcp-sa-bigqueryconnection.iam.gserviceaccount.com
  • Storage オブジェクト閲覧者(ソースバケット)
  • Vertex AI ユーザー(プロジェクト)
BigQuery を外部ストレージに接続し、BigQuery が未加工のファイルを読み取り、オブジェクト テーブルを作成して、個人のユーザー認証情報を公開することなく AI 推論を実行できるようにします。
パイプライン実行サービス アカウント(省略可) ユーザー管理のサービス アカウント
  • BigQuery データ編集者
  • BigQuery ジョブユーザー
  • BigQuery ユーザー
  • Vertex AI ユーザー
自動化されたパイプラインを使用してデータを抽出する場合、この ID はバックグラウンド ジョブを実行して、AI によって生成されたエンティティを BigQuery テーブルに具体化します。
デフォルトの Dataform サービス アカウント(省略可) service-<var>PROJECT_NUMBER</var>@gcp-sa-dataform.iam.gserviceaccount.com
  • サービス アカウント トークン作成者(パイプライン実行サービス アカウントに付与)
パイプライン抽出メソッドを使用する場合、Dataform はワークフローをオーケストレートするために、パイプライン実行サービス アカウントを偽装する権限を必要とします。

エンドユーザーの役割と権限

分析情報を表示してデータを抽出するために必要な権限がユーザー アカウントに付与されるように、プロジェクトに対する次の IAM ロールをユーザー アカウントに付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、分析情報の表示とデータの抽出に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

分析情報を表示してデータを抽出するには、次の権限が必要です。

  • 検出スキャン:
    • 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 を使用した推論の実行に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

検出スキャンを実行し、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 ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、オブジェクト テーブルの作成と推論の実行に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

オブジェクト テーブルを作成して推論を実行するには、次の権限が必要です。

  • 非構造化データを含むバケットに対する storage.buckets.get
  • 非構造化データを含むバケットに対する storage.objects.get
  • プロジェクトに対する aiplatform.endpoints.predict

管理者は、BigQuery 接続のサービス アカウント(通常は service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com)に、カスタムロールや他の事前定義ロールを付与することもできます。

パイプライン実行サービス アカウントのロールと権限(省略可)

自動化されたパイプラインを使用して推論されたデータを抽出する場合は、パイプラインを実行するための専用のサービス アカウントを作成するか、指定する必要があります。この実行サービス アカウントは、BigQuery でバックグラウンドのデータ抽出と分析タスクを安全に認証して実行する ID として機能します。また、デフォルトの Dataform サービス アカウントに、この実行サービス アカウントの権限を借用する権限を付与する必要があります。

パイプラインを使用して推論されたエンティティとリレーションを抽出するために必要な権限がパイプライン実行サービス アカウントに付与されるように、プロジェクトに対する次の IAM ロールをパイプライン実行サービス アカウントに付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、パイプラインを使用して推論されたエンティティとリレーションシップを抽出するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

パイプラインを使用して推論されたエンティティとリレーションシップを抽出するには、次の権限が必要です。

  • 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 を使用してファイルを分析し、推論されたメタデータ、スキーマ、関係を生成します。

  1. Google Cloud コンソールで、[メタデータのキュレーション] ページに移動します。

    [メタデータのキュレーション] に移動

  2. [Cloud Storage 検出] タブで、[作成] をクリックします。

  3. スキャンの名前を入力します。

  4. 非構造化データを含む Cloud Storage バケットを選択するには、[参照] をクリックします。

  5. [非構造化データ オプション] で、[セマンティック推論を有効にする] チェックボックスをオンにします。

  6. [接続 ID] フィールドで、ファイルへのアクセスに使用する BigQuery 接続を指定します。

    検出スキャンでは、オブジェクト テーブルを作成して非構造化データが BigQuery に自動的にカタログ化されます。オブジェクト テーブルは、データアクセス認証情報をクエリを実行するユーザーから安全に分離するため、Cloud Storage で認証してファイルを読み取るには接続が必要です。

  7. [今すぐ実行](オンデマンド スキャンの場合)または [作成](スケジュール設定されたスキャンの場合)をクリックします。

    使用可能なすべての構成の詳細については、Cloud Storage データを検出してカタログ化するをご覧ください。

Knowledge Catalog はオブジェクト テーブルを作成し、AI 生成のメタデータでカタログ エントリを拡充します。通常、このプロセスには標準データセットで数分かかります。

オブジェクト テーブルを見つける

検出スキャンが完了すると、Knowledge Catalog は 1 つ以上のオブジェクト テーブルを作成し、AI 生成メタデータで拡充された対応するエントリを使用して Knowledge Catalog を入力します。検出スキャンによって複数のエントリが作成された場合、各エントリには独自の [分析情報] タブがあります。自動生成されたテーブルの説明、推論されたスキーマ、関連グラフを表示できます。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. ナビゲーション メニューで、[ガバナンス> メタデータのキュレーション] をクリックします。

  3. [Cloud Storage 検出] ペインで、非構造化データに対して実行した検出スキャンをクリックします。

    • [スキャンの詳細] セクションには、検出スキャンの詳細が表示されます。
    • [スキャンのステータス] セクションには、最新のスキャンジョブの検出結果が表示されます。
  4. [公開済みデータセット] のリンクをクリックします。

  5. BigQuery データセットに表示されたテーブルのリストで、検出データ スキャン用に生成されたオブジェクト テーブルを選択します。

  6. テーブル ID をコピーします。これは次のセクションで必要になります。

推論されたエンティティ グラフを表示する

ディスカバリ スキャンのオブジェクト テーブルは、Knowledge Catalog で確認できます。

  1. Google Cloud コンソールで、Knowledge Catalog の [検索] ページに移動します。

    [検索] に移動

  2. 前のセクションで選択した ID のオブジェクト テーブルを貼り付けて検索します。

  3. 検索結果で、表をクリックしてエントリページを開きます。

  4. [詳細] タブの [アスペクト] で、グラフ プロファイル アスペクトが存在することを確認します。このアスペクトには、エンティティとリレーションシップの推論されたスキーマが含まれています。

  5. [分析情報] タブをクリックします。[分析情報] タブでは、次の情報を確認できます。

    • セマンティックの抽出。抽出可能なエンティティと関係が検出されたことを示すバナーが表示されます。SQL またはパイプラインのデプロイを使用してデータを具体化するための [抽出] ボタンが含まれています。

    • 説明。AI が生成した人が読める形式の要約で、非構造化データの内容を説明します。検出されたプライマリ ノード(エンティティ)と、エッジ(関係)を介して互いにマッピングする方法について説明します。

    • パイプライン。このリソースに関連付けられている、以前にデプロイされたデータ抽出パイプラインのリスト。表示名、リージョン、作成時間、パイプラインを作成したユーザーを確認できます。

    • 推論されたエンティティと関係。非構造化データの検出されたセマンティック構造が、インタラクティブなグラフで視覚的に表示されます。グラフには、個別のエンティティ(「レシピ」や「材料」など)を表すノードと、それらの間の接続(「アレルゲン ステータスがある」など)を表すエッジが含まれています。凡例を使用して、特定のノードとエッジをフィルタして探索できます。

    • エンティティ。検出されたプライマリ エンティティの詳細なリスト。各エンティティを展開して、AI によって生成された説明と、フィールド名、データ型、フィールドの説明を含む推論されたスキーマを表示できます。

    • 関係。エンティティ間の検出された接続の詳細なリスト。各リレーションシップを展開すると、その説明と、エンティティ間のマッピング方法を定義するスキーマが表示されます。

推論された分析情報を更新する

推論された分析情報は、オブジェクト テーブルにアタッチされたアスペクトとして Knowledge Catalog カタログに保存されます。これらの分析情報は、 Google Cloud コンソールまたは entry.patch API を使用して手動で更新できます。

コンソール

Google Cloud コンソールで推論された分析情報を更新する手順は次のとおりです。

  1. Google Cloud コンソールで、Knowledge Catalog の [検索] ページに移動します。

    [検索] に移動

  2. オブジェクト テーブル ID を貼り付けて検索します。

  3. 検索結果で、表をクリックしてエントリページを開きます。

  4. [分析情報] タブをクリックします。

  5. [推論されたエンティティとリレーションシップ] の横にある [編集] をクリックします。

  6. JSON エディタで graph-profile アスペクトを変更します。

  7. [保存] をクリックします。

REST

REST API を使用して推論された分析情報を更新する手順は次のとおりです。

  1. payload.json という名前のファイルを作成し、更新するアスペクトの JSON コンテンツを追加します。次に例を示します。

    {
      "aspects": {
        "dataplex-types.global.graph-profile": {
          "data": {
            // Your updated inferred insights data
          }
        }
      }
    }
    
  2. ターミナルで次のコマンドを実行します。

    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 の構造化テーブルまたはビューにマテリアライズできます。

  1. [分析情報] タブで、[抽出] をクリックします。

  2. 分析のニーズと非構造化データの規模に基づいて、次のいずれかの方法を選択します。

    • SQL で抽出: 迅速なアドホック分析、小規模から中規模のデータセット、または BigQuery リモートモデルを使用したインフラストラクチャ不要のアプローチが必要な場合は、このオプションを選択します。

      SQL を使用して抽出する手順は次のとおりです。

      1. [SQL で抽出] を選択します。
      2. [SQL で抽出] ペインで、宛先データセットを選択します。データセットは、ソースと同じロケーションに存在する必要があります。
      3. [Extract] をクリックします。
      4. BigQuery エディタで、事前入力されたクエリが開きます。クエリを実行して、標準テーブルとビューを作成します。

      SQL を使用してドキュメントの分析情報を抽出する方法については、ML.PROCESS_DOCUMENT 関数を使用してドキュメントを処理するをご覧ください。

    • パイプラインで抽出: 大規模なデータ処理を行う場合や、大量のドキュメントを処理するために堅牢な再試行ロジック、エラー処理、自動オーケストレーションが必要な場合は、このオプションを選択します。

      パイプラインを使用して抽出する手順は次のとおりです。

      1. [Extract by pipeline] を選択します。
      2. [パイプラインで抽出] ペインで、パイプラインの表示名を入力します。
      3. リージョンを選択します。
      4. 宛先データセットを選択します。データセットは、ソースと同じロケーションに存在する必要があります。
      5. [抽出] をクリックします。これにより、データ マテリアライズをオーケストレートする BigQuery パイプラインが作成されます。
      6. パイプライン内のすべてのタスクを実行して、構造化されたノードビューとエッジビューを生成します。

      データ ワークフローの実行の詳細については、Dataform の概要をご覧ください。

セマンティック分析情報を抽出して BigQuery にマテリアライズすると、次のタスクを実行できます。

  • 構造化データをクエリします。新しく作成されたテーブルに対して標準 SQL クエリを実行して、抽出されたエンティティとリレーションシップを分析します。

  • 既存のデータと結合します。非構造化ファイルから抽出した定性的な分析情報を、既存の構造化 BigQuery データセットと組み合わせます(解析された請求書データを会計テーブルと結合するなど)。

  • データ分析情報を確認します。BigQuery Studio のデータ分析情報機能を使用して、新しい構造化アセットの自然言語の質問と SQL クエリを自動的に生成します。

  • Gemini で分析します。BigQuery の Gemini を使用して、会話分析の実行、傾向の要約、抽出されたデータに基づくデータポータルでのダッシュボードの作成を行います。