SCHEMATA_REPLICAS 视图

INFORMATION_SCHEMA.SCHEMATA_REPLICAS 视图包含有关架构副本的信息。

所需角色

如需获得查询 INFORMATION_SCHEMA.SCHEMATA_REPLICAS 视图所需的权限,请让管理员向您授予项目的 BigQuery Metadata Viewer (roles/bigquery.dataViewer) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

架构

INFORMATION_SCHEMA.SCHEMATA_REPLICAS 视图包含有关数据集副本的信息。INFORMATION_SCHEMA.SCHEMATA_REPLICAS 视图具有如下架构:
类型 说明
catalog_name STRING 该数据集所属项目的项目 ID。
schema_name STRING 数据集的数据集 ID。
replica_name STRING 副本的名称。
location STRING 在其中创建副本的单区域或多区域。
replica_primary_assigned BOOL 如果值为 TRUE,则副本具有主要分配。
replica_primary_assignment_complete BOOL 如果值为 TRUE,则表示主要分配完成。 如果值为 FALSE,则副本不是(或者尚且不是)主要副本,即使 replica_primary_assigned 等于 TRUE 也不例外。
creation_time TIMESTAMP 副本的创建时间。首次创建副本时,除非 creation_complete 等于 TRUE,否则它不会与主要副本完全同步。creation_time 的值在 creation_complete 等于 TRUE 之前设置。
creation_complete BOOL 如果值为 TRUE,则表示主要副本到辅助副本的初始完全同步已完成。
replication_time TIMESTAMP

replication_time 的值表示数据集过时。

副本中的某些表可能早于此时间戳。此值仅在次要区域可见。

如果数据集包含具有流式数据的表,则 replication_time 的值将不准确。

范围和语法

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

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

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

示例

本部分列出了 INFORMATION_SCHEMA.SCHEMATA_REPLICAS 视图的示例查询。

示例:列出一个区域中所有复制的数据集

以下示例列出了 US 区域中所有复制的数据集:

SELECT * FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;

结果类似于以下内容:

+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
|    catalog_name     |    schema_name    | replica_name | location | replica_primary_assigned | replica_primary_assignment_complete |    creation_time    | creation_complete | replication_time |
+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
| myproject           | replica1          | us-east7     | us-east7 |                     true |                                true | 2023-04-17 20:42:45 |              true |             NULL |
| myproject           | replica1          | us-east4     | us-east4 |                    false |                               false | 2023-04-17 20:44:26 |              true |             NULL |
+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+

示例:列出复制的数据集以及每个数据集的主要副本

以下示例列出了 US 区域中所有复制的数据集及其主要副本:

SELECT
 catalog_name,
 schema_name,
 replica_name AS primary_replica_name,
 location AS primary_replica_location,
 replica_primary_assignment_complete AS is_primary,
FROM
 `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
WHERE
 replica_primary_assignment_complete = TRUE
 AND replica_primary_assigned = TRUE;

结果类似于以下内容:

+---------------------+-------------+----------------------+--------------------------+------------+
|    catalog_name     | schema_name | primary_replica_name | primary_replica_location | is_primary |
+---------------------+-------------+----------------------+--------------------------+------------+
| myproject           | my_schema1  | us-east4             | us-east4                 |       true |
| myproject           | my_schema2  | us                   | US                       |       true |
| myproject           | my_schema2  | us                   | US                       |       true |
+---------------------+-------------+----------------------+--------------------------+------------+

示例:列出复制的数据集及其副本状态

以下示例列出了所有复制的数据集及其副本状态:

SELECT
  catalog_name,
  schema_name,
  replica_name,
  CASE
    WHEN (replica_primary_assignment_complete = TRUE AND replica_primary_assigned = TRUE) THEN 'PRIMARY'
    WHEN (replica_primary_assignment_complete = FALSE
    AND replica_primary_assigned = FALSE) THEN 'SECONDARY'
  ELSE
  'PENDING'
END
  AS replica_state,
FROM
  `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;

结果类似于以下内容:

+---------------------+-------------+--------------+---------------+
|    catalog_name     | schema_name | replica_name | replica_state |
+---------------------+-------------+--------------+---------------+
| myproject           | my_schema1  | us-east4     | PRIMARY       |
| myproject           | my_schema1  | my_replica   | SECONDARY     |
+---------------------+-------------+--------------+---------------+

示例:列出每个副本的创建时间以及初始回填是否已完成

以下示例列出了所有副本及其创建时间。创建辅助副本时,在 creation_complete 等于 TRUE 之前,辅助副本的数据不会完全与主要副本同步。

SELECT
 catalog_name,
 schema_name,
 replica_name,
 creation_time AS creation_time,
FROM
 `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
WHERE
 creation_complete = TRUE;

结果类似于以下内容:

+---------------------+-------------+--------------+---------------------+
|    catalog_name     | schema_name | replica_name |    creation_time    |
+---------------------+-------------+--------------+---------------------+
| myproject           | my_schema1  | us-east4     | 2023-06-15 00:09:11 |
| myproject           | my_schema2  | us           | 2023-06-15 00:19:27 |
| myproject           | my_schema2  | my_replica2  | 2023-06-15 00:19:50 |
| myproject           | my_schema1  | my_replica   | 2023-06-15 00:16:19 |
+---------------------+-------------+--------------+---------------------+

示例:显示最近同步的时间

以下示例显示了辅助副本与主要副本同步的最新时间戳。

您必须在包含辅助副本的区域中运行此查询。数据集中的某些表可能早于报告的复制时间。

SELECT
 catalog_name,
 schema_name,
 replica_name,
 replication_time AS secondary_replica_fully_synced_as_of_time,
FROM
 `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS

结果类似于以下内容:

+---------------------+-------------+--------------+-------------------------------------------+
|    catalog_name     | schema_name | replica_name | secondary_replica_fully_synced_as_of_time |
+---------------------+-------------+--------------+-------------------------------------------+
| myproject           | my_schema1  | us-east4     |                                      NULL |
| myproject           | my_schema2  | us           |                                      NULL |
| myproject           | my_schema1  | my_replica   |                       2023-06-15 00:28:49 |
| myproject           | my_schema2  | my_replica2  |                       2023-06-15 00:29:20 |
+---------------------+-------------+--------------+-------------------------------------------+

NULL 表示辅助副本从未完全同步到主要副本。