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 行が含まれます。ただし、__UNPARTITIONED__ パーティションに長期ストレージ ティアとアクティブ ストレージ ティアの両方のデータが存在する場合は例外です。この場合、ビューは __UNPARTITIONED__ パーティションの 2 つの行(ストレージ ティアごとに 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。指定しない場合は、デフォルトのプロジェクトが使用されます。

    例 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 |
    +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+