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_assignedがTRUEであっても、レプリカはプライマリ レプリカではありません。 | 
| creation_time | TIMESTAMP | レプリカの作成時刻。レプリカが最初に作成された場合、 creation_completeがTRUEと等しくなるまで、レプリカはプライマリ レプリカと完全に同期されません。creation_timeの値は、creation_completeがTRUEと等しくなる前に設定されます。 | 
| creation_complete | BOOL | 値が TRUEの場合、プライマリ レプリカからセカンダリ レプリカへの最初の完全同期は完了しています。 | 
| replication_time | TIMESTAMP | 
 レプリカ内の一部のテーブルがこのタイムスタンプより新しい可能性があります。この値は、セカンダリ リージョンにのみ表示されます。 データセットにストリーミング データを含むテーブルが含まれている場合、 | 
| sync_status | JSON | クロスリージョン レプリケーションと障害復旧のデータセットのプライマリ レプリカとセカンダリ レプリカ間の同期のステータス。レプリカがプライマリ レプリカであるか、データセットがレプリケーションを使用していない場合は NULLを返します。 | 
| replica_primary_assignment_time | TIMESTAMP | プライマリからレプリカへの切り替えがトリガーされた時刻。 | 
| replica_primary_assignment_completion_time | TIMESTAMP | プライマリからレプリカへの切り替えが完了した時間。 | 
スコープと構文
このビューに対するクエリでは、リージョン修飾子を指定する必要があります。次の表に、このビューのリージョン スコープを示します。
| ビュー名 | リソース スコープ | リージョン スコープ | 
|---|---|---|
| [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, -- 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 は、セカンダリ レプリカがプライマリ レプリカと完全に同期されていないことを示します。