TABLE_STORAGE_USAGE_TIMELINE 视图

INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE 视图提供以下类型的表在过去 90 天内的每日总存储用量:

  • 标准表
  • 具体化视图
  • 包含基表中字节增量的表克隆
  • 包含基表中字节增量的表快照

没有计费字节数的表不包含在 INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE 视图中。这包括以下类型的表:

  • 外部表
  • 匿名表
  • 空表
  • 不包含基表中字节增量的表克隆
  • 不包含基表中字节增量的表快照

查询 INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE 视图时,查询结果包含每天当前项目的每个表或具体化视图对应的一行。

此表中的数据不会实时保留,表数据大约需要 72 小时才能反映在此视图中。

存储用量以 MB 秒为单位返回。例如,如果项目在 86,400 秒(24 小时)使用 1,000,000 个物理字节,则物理总用量为 86,400,000,000 字节秒,转换为 82,397 MB 秒,如以下示例所示:

86,400,000,000 / 1,024 / 1,024 = 82,397

这是由 BILLABLE_TOTAL_PHYSICAL_USAGE 列返回的值。

如需了解详情,请参阅存储价格详细信息

所需权限

如需查询 INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE 视图,您需要拥有以下 Identity and Access Management (IAM) 权限:

  • bigquery.tables.get
  • bigquery.tables.list

以下每个预定义的 IAM 角色均可提供上述权限:

  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer
  • roles/bigquery.admin

对于包含区域限定符的查询,您必须拥有项目的权限。

如需详细了解 BigQuery 权限,请参阅使用 IAM 进行访问权限控制

架构

INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE 视图具有如下架构:

USAGE_DATE DATE 所显示字节的结算日
PROJECT_ID STRING 该数据集所属项目的项目 ID
TABLE_CATALOG STRING 该数据集所属项目的项目 ID
PROJECT_NUMBER INT64 该数据集所属项目的项目编号
TABLE_SCHEMA STRING 包含表或物化视图的数据集的名称,也称为 datasetId
TABLE_NAME STRING 表或物化视图的名称,也称为 tableId
BILLABLE_TOTAL_LOGICAL_USAGE INT64

总逻辑用量(以 MB 秒为单位)。

如果数据集使用物理存储结算模式,则返回 0。

BILLABLE_ACTIVE_LOGICAL_USAGE INT64

存在时间少于 90 天的逻辑用量(以 MB 秒为单位)。

如果数据集使用物理存储结算模式,则返回 0。

BILLABLE_LONG_TERM_LOGICAL_USAGE INT64

存在时间超过 90 天的逻辑用量(以 MB 秒为单位)。

如果数据集使用物理存储结算模式,则返回 0。

BILLABLE_TOTAL_PHYSICAL_USAGE INT64

总用量(以 MB 秒为单位)。这包括用于故障安全和时间旅行存储的物理字节数。

如果数据集使用逻辑存储结算模式,则返回 0。

BILLABLE_ACTIVE_PHYSICAL_USAGE INT64

存在时间少于 90 天的物理用量(以 MB 秒为单位)。这包括用于故障安全和时间旅行存储的物理字节数。

如果数据集使用逻辑存储结算模式,则返回 0。

BILLABLE_LONG_TERM_PHYSICAL_USAGE INT64

存在时间超过 90 天的物理用量(以 MB 秒为单位)。

如果数据集使用逻辑存储结算模式,则返回 0。

范围和语法

针对此视图的查询必须包含区域限定符。下表说明了此视图的区域范围:

视图名称 资源范围 区域范围
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE[_BY_PROJECT] 项目级 REGION
替换以下内容:

  • 可选:PROJECT_ID:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
+ REGION:任何数据集区域名称。 例如 region-us

以下示例演示了如何返回指定项目中的表的存储信息:

SELECT * FROM myProject.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE;

以下示例演示了如何返回指定区域中的表的存储信息:

SELECT * FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE;

示例

示例 1

以下示例汇总了指定区域中的项目每天的存储用量。

SELECT
  usage_date,
  project_id,
  SUM(billable_total_logical_usage) AS billable_total_logical_usage,
  SUM(billable_active_logical_usage) AS billable_active_logical_usage,
  SUM(billable_long_term_logical_usage) AS billable_long_term_logical_usage,
  SUM(billable_total_physical_usage) AS billable_total_physical_usage,
  SUM(billable_active_physical_usage) AS billable_active_physical_usage,
  SUM(billable_long_term_physical_usage) AS billable_long_term_physical_usage
FROM
  `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE
GROUP BY
  1,
  2
ORDER BY
  usage_date;

结果类似于以下内容:

+-------------------------+------------------------------+-------------------------------+-----------------------------------+-------------------------------+--------------------------------+-------------------------------------+
| usage_date | project_id | billable_total_logical_usage | billable_active_logical_usage | billable_long_term_logical_usage  | billable_total_physical_usage | billable_active_physical_usage | billable_long_term_physical_usage   |
+-------------------------+------------------------------+-------------------------------+-----------------------------------+-------------------------------+--------------------------------+-------------------------------------+
| 2023-04-03 | project_A  | 305085738096                 | 7667321458                    | 297418416638                      | 74823954823                   | 124235724                      | 74699719099                         |
+-------------------------+------------------------------+-------------------------------+-----------------------------------+-------------------------------+--------------------------------+-------------------------------------+
| 2023-04-04 | project_A  | 287033241105                 | 7592334614                    | 279440906491                      | 75071991788                   | 200134561                      | 74871857227                         |
+-------------------------+------------------------------+-------------------------------+-----------------------------------+-------------------------------+--------------------------------+-------------------------------------+
| 2023-04-03 | project_B  | 478173930912                 | 8137372626                    | 470036558286                      | 0                             | 0                              | 0                                   |
+-------------------------+------------------------------+-------------------------------+-----------------------------------+-------------------------------+--------------------------------+-------------------------------------+
| 2023-04-04 | project_B  | 496648915405                 | 7710451723                    | 488938463682                      | 0                             | 0                              | 0                                   |
+-------------------------+------------------------------+-------------------------------+-----------------------------------+-------------------------------+--------------------------------+-------------------------------------+

示例 2

以下示例展示了使用逻辑存储的数据集中的表在指定日期的存储用量。

SELECT
  usage_date,
  table_schema,
  table_name,
  billable_total_logical_usage
FROM
  `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE
WHERE
  project_id = 'PROJECT_ID'
  AND table_schema = 'DATASET_NAME'
  AND usage_date = 'USAGE_DATE'
ORDER BY
  billable_total_logical_usage DESC;

结果类似于以下内容:

+--------------+--------------+------------+------------------------------+
| usage_date   | table_schema | table_name | billable_total_logical_usage |
+--------------+--------------+------------+------------------------------+
|  2023-04-03  | dataset_A    | table_4    | 734893409201                 |
+--------------+--------------+------------+------------------------------+
|  2023-04-03  | dataset_A    | table_1    | 690070445455                 |
+--------------+--------------+------------+------------------------------+
|  2023-04-03  | dataset_A    | table_3    |  52513713981                 |
+--------------+--------------+------------+------------------------------+
|  2023-04-03  | dataset_A    | table_2    |   8894535355                 |
+--------------+--------------+------------+------------------------------+

示例 3

以下示例展示了使用物理存储的数据集中的表在最近使用日期的存储用量。

SELECT
  usage_date,
  table_schema,
  table_name,
  billable_total_physical_usage
FROM
  (
    SELECT
      *,
      ROW_NUMBER()
        OVER (PARTITION BY project_id, table_schema, table_name ORDER BY usage_date DESC) AS rank
    FROM
      `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE
  )
WHERE
  rank = 1
  AND project_id = 'PROJECT_ID'
  AND table_schema ='DATASET_NAME'
ORDER BY
  usage_date;

结果类似于以下内容:

+--------------+--------------+------------+-------------------------------+
| usage_date   | table_schema | table_name | billable_total_physical_usage |
+--------------+--------------+------------+-------------------------------+
|  2023-04-12  | dataset_A    | table_4    |  345788341123                 |
+--------------+--------------+------------+-------------------------------+
|  2023-04-12  | dataset_A    | table_1    |             0                 |
+--------------+--------------+------------+-------------------------------+
|  2023-04-12  | dataset_A    | table_3    | 9123481400212                 |
+--------------+--------------+------------+-------------------------------+
|  2023-04-12  | dataset_A    | table_2    |    1451334553                 |
+--------------+--------------+------------+-------------------------------+

示例 4

以下示例联接 TABLE_OPTIONSTABLE_STORAGE_USAGE_TIMELINE 视图以根据标记获取存储空间用量详情。

SELECT * FROM region-REGION.INFORMATION_SCHEMA.TABLE_OPTIONS
    INNER JOIN region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE
    USING (TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME)
    WHERE option_name='tags'
    AND CONTAINS_SUBSTR(option_value, '(\"tag_namespaced_key\", \"tag_namespaced_value\")')