PARTITIONS ビュー
INFORMATION_SCHEMA.PARTITIONS
ビューには、パーティションごとに 1 行が表示されます。
INFORMATION_SCHEMA.PARTITIONS
ビューのクエリは 1,000 テーブルに制限されます。プロジェクト レベルでパーティションに関するデータを取得するには、クエリを複数のクエリに分割して、結果を結合します。この上限を超えると、次のようなエラーが発生することがあります。
INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.
必要な権限
INFORMATION_SCHEMA.PARTITIONS
ビューをクエリするには、次の Identity and Access Management(IAM)権限が必要です。
bigquery.tables.get
bigquery.tables.getData
bigquery.tables.list
次の各 IAM 事前定義ロールには、上の権限が含まれています。
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataViewer
BigQuery の権限の詳細については、IAM でのアクセス制御をご覧ください。
スキーマ
INFORMATION_SCHEMA.PARTITIONS
ビューにクエリを実行すると、クエリ結果にはパーティションごとに 1 行が含まれます。
INFORMATION_SCHEMA.PARTITIONS
ビューのスキーマは次のとおりです。
列名 | データ型 | 値 |
---|---|---|
TABLE_CATALOG |
STRING |
データセットを含むプロジェクトのプロジェクト ID |
TABLE_SCHEMA |
STRING |
datasetId とも呼ばれる、テーブルを含むデータセットの名前 |
TABLE_NAME |
STRING |
テーブルの名前(tableId とも呼ばれる) |
PARTITION_ID |
STRING |
単一のパーティションの ID。パーティション分割されていないテーブルの場合、値は NULL です。パーティショニング列に NULL 値を持つ行が含まれているパーティション分割テーブルの場合、値は __NULL__ です。 |
TOTAL_ROWS |
INTEGER |
パーティション内の行の合計数 |
TOTAL_LOGICAL_BYTES |
INTEGER |
パーティション内の論理バイトの合計数 |
LAST_MODIFIED_TIME |
TIMESTAMP |
データが最後にパーティションに書き込まれた時刻 |
STORAGE_TIER |
STRING |
パーティションのストレージ階層:
|
スコープと構文
このビューに対するクエリでは、データセット修飾子を指定する必要があります。データセット修飾子が指定されたクエリの場合は、データセットに対する権限が必要です。詳細については、構文をご覧ください。次の表に、このビューのリージョン スコープとリソース スコープを示します。
ビュー名 | リソース スコープ | リージョン スコープ |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS |
データセット レベル | データセットのロケーション |
- 省略可:
PROJECT_ID
: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。 DATASET_ID
: データセットの ID。詳しくは、データセット修飾子をご覧ください。
例
例 1
次の例では、mydataset
データセット内のすべてのテーブルで各ストレージ階層が使用する論理バイト数を計算します。
SELECT storage_tier, SUM(total_logical_bytes) AS logical_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier;
結果は次のようになります。
+--------------+----------------+ | storage_tier | logical_bytes | +--------------+----------------+ | LONG_TERM | 1311495144879 | | ACTIVE | 66757629240 | +--------------+----------------+
例 2
次の例では、partition_id
フィールドからパーティション タイプを抽出し、一般公開 bigquery-public-data.covid19_usafacts
データセットのテーブルレベルでパーティション情報を集計する列を作成します。
SELECT table_name, CASE WHEN regexp_contains(partition_id, '^[0-9]{4}$') THEN 'YEAR' WHEN regexp_contains(partition_id, '^[0-9]{6}$') THEN 'MONTH' WHEN regexp_contains(partition_id, '^[0-9]{8}$') THEN 'DAY' WHEN regexp_contains(partition_id, '^[0-9]{10}$') THEN 'HOUR' END AS partition_type, min(partition_id) AS earliest_partition, max(partition_id) AS latest_partition_id, COUNT(partition_id) AS partition_count, sum(total_logical_bytes) AS sum_total_logical_bytes, max(last_modified_time) AS max_last_updated_time FROM `bigquery-public-data.covid19_usafacts.INFORMATION_SCHEMA.PARTITIONS` GROUP BY 1, 2;
結果は次のようになります。
+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | table_name | partition_type | earliest_partition | latest_partition_id | partition_count | sum_total_logical_bytes | max_last_updated_time | +--------------+-------------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | confirmed_cases | DAY | 20221204 | 20221213 | 10 | 26847302 | 2022-12-13 00:09:25.604000 UTC | | deaths | DAY | 20221204 | 20221213 | 10 | 26847302 | 2022-12-13 00:09:24.709000 UTC | | summary | DAY | 20221204 | 20221213 | 10 | 241285338 | 2022-12-13 00:09:27.496000 UTC | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+