INFORMATION_SCHEMA.SHARED_DATASET_USAGE 视图
INFORMATION_SCHEMA.SHARED_DATASET_USAGE 视图包含有关共享数据集表的使用情况的近乎实时元数据。如需开始在各个组织之间共享数据,请参阅 BigQuery Sharing(以前称为 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
    | 
   人类可读的字符串,表示运行作业的组织。这是订阅者所在组织的编号。对于没有组织的项目,此字段为空。 | 
job_principal_subject
     | 
    STRING
     | 
    针对关联数据集执行作业和查询的用户的主标识符(用户邮箱 ID、服务账号、群组邮箱 ID、网域)。 | 
num_rows_processed
    | 
   INTEGER
    | 
   被查询的资源所引用的基表处理的总行数。 | 
total_bytes_processed
    | 
   INTEGER
    | 
   被查询的资源所引用的基本表处理的字节总数。 | 
shared_resource_id
    | 
   STRING
    | 
   所查询资源(表、视图或例程)的 ID。 | 
shared_resource_type
    | 
   STRING
    | 
   所查询资源的类型。例如 TABLE、EXTERNAL_TABLE、VIEW、MATERIALIZED_VIEW、TABLE_VALUED_FUNCTION 或 SCALAR_FUNCTION。 | 
  
referenced_tables
    | 
   RECORD REPEATED
    | 
   包含基本表的 project_id、dataset_id、table_id 和 processed_bytes 字段。
    | 
  
数据保留
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"
获取共享视图的用量指标
以下查询显示了项目中所有共享视图的使用情况指标:
SELECT project_id, dataset_id, table_id, num_rows_processed, total_bytes_processed, shared_resource_id, shared_resource_type, referenced_tables FROM `myproject`.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE WHERE shared_resource_type = 'VIEW'
输出类似于以下内容:
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|     project_id      |   dataset_id   | table_id | num_rows_processed | total_bytes_processed | shared_resource_id | shared_resource_type |                                                                                                              referenced_tables                                                                                                              |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|     myproject       | source_dataset | view1    |                  6 |                    38 | view1              | VIEW                 | [{"project_id":"myproject","dataset_id":"source_dataset","table_id":"test_table","processed_bytes":"21"},
{"project_id":"bq-dataexchange-exp","dataset_id":"other_dataset","table_id":"other_table","processed_bytes":"17"}]                 |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
获取共享表值函数的用量指标
以下查询显示了项目中所有共享表值函数的用量指标:
SELECT project_id, dataset_id, table_id, num_rows_processed, total_bytes_processed, shared_resource_id, shared_resource_type, referenced_tables FROM `myproject`.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE WHERE shared_resource_type = 'TABLE_VALUED_FUNCTION'
输出类似于以下内容:
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------+
|     project_id      |   dataset_id   | table_id | num_rows_processed | total_bytes_processed | shared_resource_id | shared_resource_type  |                                                  referenced_tables                                                  |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------+
|     myproject       | source_dataset |          |                  3 |                    45 | provider_exp       | TABLE_VALUED_FUNCTION | [{"project_id":"myproject","dataset_id":"source_dataset","table_id":"test_table","processed_bytes":"45"}]           |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------+