INFORMATION_SCHEMA.SHARED_DATASET_USAGE 视图

INFORMATION_SCHEMA.SHARED_DATASET_USAGE 视图包含有关共享数据集表的使用情况的近乎实时元数据。如需开始在各个组织之间共享数据,请参阅 Analytics Hub

所需的角色

如需获得查询 INFORMATION_SCHEMA.SHARED_DATASET_USAGE 视图所需的权限,请让管理员在源项目上为您授予 BigQuery Data Owner (roles/bigquery.dataOwner) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色可提供 bigquery.datasets.listSharedDatasetUsage 权限,查询 INFORMATION_SCHEMA.SHARED_DATASET_USAGE 视图需要该权限。

您也可以使用自定义角色或其他预定义角色来获取此权限。

架构

底层数据按 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 天的作业历史记录。

范围和语法

针对此视图的查询必须包含区域限定符。如果您未指定区域限定符,则系统会从美国区域检索元数据。下表说明了此视图的区域范围:

视图名称 资源范围 区域范围
[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             |
    +--------------------------+--------------------------------+----------------+
    

    对于没有组织的订阅者,您可以使用 job_project_number 代替 subscriber_org_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"