SCHEMATA_REPLICAS ビュー

INFORMATION_SCHEMA.SCHEMATA_REPLICAS ビューには、schemata レプリカに関する情報が含まれます。

必要なロール

INFORMATION_SCHEMA.SCHEMATA_REPLICAS ビューに対してクエリを実行するために必要な権限を取得するには、プロジェクトに対する BigQuery データ閲覧者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_assignedTRUE であっても、レプリカはプライマリ レプリカではありません。
creation_time TIMESTAMP レプリカの作成時刻。レプリカが最初に作成された場合、creation_completeTRUE と等しくなるまで、レプリカはプライマリ レプリカと完全に同期されません。creation_time の値は、creation_completeTRUE と等しくなる前に設定されます。
creation_complete BOOL 値が TRUE の場合、プライマリ レプリカからセカンダリ レプリカへの最初の完全同期は完了しています。
replication_time TIMESTAMP

replication_time の値はデータセットの未更新を示しています。

レプリカ内の一部のテーブルがこのタイムスタンプより新しい可能性があります。この値は、セカンダリ リージョンにのみ表示されます。

データセットにストリーミング データを含むテーブルが含まれている場合、replication_time の値は正確ではありません。

sync_status JSON プライマリ レプリカとセカンダリ レプリカ間の同期のステータス。レプリカがプライマリ レプリカの場合は NULL を返します。

スコープと構文

このビューに対するクエリでは、リージョン修飾子を指定する必要があります。次の表で、このビューのリージョン スコープを説明します。

ビュー名 リソース スコープ リージョン スコープ
[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_completeTRUE と等しくなるまで、データはプライマリ レプリカと完全に同期されません。

    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,
     -- Calculate the replication lag in seconds.
     TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), replication_time, SECOND) AS replication_lag_seconds, -- RLS
     -- Calculate the replication lag in minutes.
     TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), replication_time, MINUTE) AS replication_lag_minutes, -- RLM
     -- Show the last sync time for easier interpretation.
     replication_time AS secondary_replica_fully_synced_as_of_time,
    FROM
     `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS

    次のような結果になります。

    +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
    |    catalog_name     | schema_name | replica_name | rls | rlm | secondary_replica_fully_synced_as_of_time |
    +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
    | myproject           | my_schema1  | us-east4     |  23 |   0 |                       2023-06-15 00:18:49 |
    | myproject           | my_schema2  | us           |  67 |   1 |                       2023-06-15 00:22:49 |
    | myproject           | my_schema1  | my_replica   |  11 |   0 |                       2023-06-15 00:28:49 |
    | myproject           | my_schema2  | my_replica2  | 125 |   2 |                       2023-06-15 00:29:20 |
    +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
    

    NULL は、セカンダリ レプリカがプライマリ レプリカと完全に同期されていないことを示します。