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 プロジェクト レベル US リージョン
[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"