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_id
和 dataset_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
。
获取数据交换的用量指标
如果数据交换和源数据集位于不同的项目中,请按照以下步骤查看数据交换的用量指标:
- 查找属于数据交换的所有列表。
- 检索附加到清单的源数据集。
- 如需查看数据交换的使用情况指标,请使用以下查询:
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"