INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビュー

INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビューには、共有データセット テーブルの使用に関するほぼリアルタイムのメタデータが含まれます。組織間でデータを共有するには、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 ジョブが実行された組織を参照する、人が読める形式の文字列。これはサブスクライバーの組織番号です。組織のないプロジェクトの場合、このフィールドは空になります。
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"