INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビュー

INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビューには、共有データセット テーブルの使用に関する準リアルタイムのメタデータが含まれます。組織間でデータを共有するには、BigQuery Sharing(旧 Analytics Hub)をご覧ください。

必要なロール

INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビューをクエリするために必要な権限を取得するには、ソース プロジェクトに対する BigQuery データオーナーroles/bigquery.dataOwner)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビューに対するクエリの実行に必要な bigquery.datasets.listSharedDatasetUsage 権限が含まれています。

カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

スキーマ

基になるデータは job_start_time 列で分割され、project_iddataset_id でクラスタ化されます。

INFORMATION_SCHEMA.SHARED_DATASET_USAGE のスキーマは次のとおりです。

列名 データの種類
project_id STRING (クラスタリング列共有データセットを含むプロジェクトの ID。
dataset_id STRING (クラスタリング列共有データセットの ID。
table_id STRING アクセスされたテーブルの ID。
data_exchange_id STRING データ エクスチェンジのリソースパス。
listing_id STRING リスティングのリソースパス。
job_start_time TIMESTAMP (パーティショニング列このジョブの開始時刻。
job_end_time TIMESTAMP このジョブの終了時刻。
job_id STRING ジョブ ID。例: bquxjob_1234
job_project_number INTEGER このジョブが属するプロジェクトの数。
job_location STRING ジョブのロケーション。
linked_project_number INTEGER サブスクライバーのプロジェクトのプロジェクト番号。
linked_dataset_id STRING サブスクライバーのデータセットのリンク済みデータセット ID。
subscriber_org_number INTEGER ジョブが実行された組織番号。これはサブスクライバーの組織番号です。組織のないプロジェクトの場合、このフィールドは空になります。
subscriber_org_display_name STRING ジョブが実行された組織を参照する、人が読める形式の文字列。これはサブスクライバーの組織番号です。組織のないプロジェクトの場合、このフィールドは空になります。
job_principal_subject STRING リンクされたデータセットに対してジョブとクエリを実行するユーザーのプリンシパル ID(ユーザーのメール ID、サービス アカウント、グループのメール ID、ドメイン)。
num_rows_processed INTEGER ジョブによってこのテーブルで処理された行数。
total_bytes_processed INTEGER ジョブによってこのテーブルで処理された合計バイト数。

データの保持

INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビューには、実行中のジョブと過去 180 日間のジョブ履歴が含まれます。

スコープと構文

このビューに対するクエリでは、リージョン修飾子を指定する必要があります。リージョン修飾子を指定しない場合、メタデータは US リージョンから取得されます。次の表に、このビューのリージョン スコープを示します。

ビュー名 リソース スコープ リージョン スコープ
[PROJECT_ID.]INFORMATION_SCHEMA.SHARED_DATASET_USAGE プロジェクト レベル 米国リージョン
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE プロジェクト レベル REGION
次のように置き換えます。
  • 省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。
  • REGION: 任意のデータセット リージョン名。例: `region-us`

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、次の形式でプロジェクト ID を追加します。

PROJECT_ID.region-REGION_NAME.INFORMATION_SCHEMA.SHARED_DATASET_USAGE

例: myproject.region-us.INFORMATION_SCHEMA.SHARED_DATASET_USAGE

すべての共有テーブルで実行されたジョブの合計数を取得する

次の例では、プロジェクトのサブスクライバーによって実行されたジョブの合計数を計算します。

SELECT   COUNT(DISTINCT job_id) AS num_jobs FROM   `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE

次のような結果になります。

 +------------+ | num_jobs   | +------------+ | 1000       | +------------+ 

サブスクライバーによって実行されたジョブの合計数を確認するには、WHERE 句を使用します。

  • データセットには WHERE dataset_id = "..." を使用します。
  • テーブルには WHERE dataset_id = "..." AND table_id = "..." を使用します。

処理された行数に基づいて最も使用頻度の高いテーブルを取得する

次のクエリは、サブスクライバーによって処理された行数に基づいて最も使用されているテーブルを計算します。

SELECT   dataset_id,   table_id,   SUM(num_rows_processed) AS usage_rows FROM   `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE GROUP BY   1,   2 ORDER BY   3 DESC LIMIT   1

出力は次のようになります。

 +---------------+-------------+----------------+ | dataset_id    | table_id      | usage_rows     | +---------------+-------------+----------------+ | mydataset     | mytable     | 15             | +---------------+-------------+----------------+ 

テーブルを使用している上位の組織を確認する

次のクエリは、テーブルから処理されたバイト数に基づいて上位のサブスクライバーを計算します。num_rows_processed 列を指標として使用することもできます。

SELECT   subscriber_org_number,   ANY_VALUE(subscriber_org_display_name) AS subscriber_org_display_name,   SUM(total_bytes_processed) AS usage_bytes FROM   `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE GROUP BY   1

出力は次のようになります。

 +--------------------------+--------------------------------+----------------+ |subscriber_org_number     | subscriber_org_display_name    | usage_bytes    | +-----------------------------------------------------------+----------------+ | 12345                    | myorganization                 | 15             | +--------------------------+--------------------------------+----------------+ 

組織に所属していないサブスクライバーの場合は、subscriber_org_number の代わりに job_project_number を使用します。

データ エクスチェンジの使用状況の指標を取得する

データ エクスチェンジとソース データセットが異なるプロジェクトに存在する場合、次の手順でデータ交換の使用状況の指標を表示します。

  1. 対象のデータ エクスチェンジに属するすべてのリスティングを検索します。
  2. リスティングに関連付けられているソース データセットを取得します。
  3. データ エクスチェンジの使用状況の指標を表示するには、次のクエリを使用します。
SELECT   * FROM   source_project_1.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE WHERE   dataset_id='source_dataset_id' AND data_exchange_id="projects/4/locations/us/dataExchanges/x1" UNION ALL SELECT   * FROM   source_project_2.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE WHERE   dataset_id='source_dataset_id' AND data_exchange_id="projects/4/locations/us/dataExchanges/x1"