テーブル パーティションとクラスタを作成する

このドキュメントでは、Dataform コアを使用してテーブルのパーティションとクラスタを作成する方法について説明します。

BigQuery は、パーティション分割テーブルとテーブルのクラスタリングをサポートしています。BigQuery でのパーティションとクラスタの詳細については、パーティション分割テーブルの概要クラスタ化テーブルの作成と使用をご覧ください。

始める前に

  1. Cloud コンソールで、[Dataform] ページに移動します。

    [Dataform] ページに移動

  2. リポジトリを作成または選択します。

  3. 開発ワークスペースを作成または選択します。

  4. テーブルを作成する

必要なロール

テーブルのパーティションとクラスタを構成するために必要な権限を取得するには、ワークスペースに対する Dataform 編集者 roles/dataform.editor)IAM ロールを付与するよう管理者に依頼してください。 ロールの付与の詳細については、アクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

テーブル パーティションを作成する

テーブル パーティションを作成するには、テーブル定義 SQLX ファイルの bigquery ブロックに BigQuery partition_expression を追加します。

テーブル パーティションを作成する手順は次のとおりです。

  1. 開発ワークスペースに移動します。
  2. [ファイル] ペインで、definitions/ を展開します。
  3. テーブル定義 SQLX ファイルを開きます。
  4. config ブロックで、テーブルタイプの宣言の下に次の形式で bigquery ブロックを追加します。

    config {
      type: "table",
      bigquery: {
      }
    }
    
  5. bigquery ブロックに、次のコード スニペットを入力します。

        partitionBy: "PARTITION_EXPRESSION"
    

    PARTITION_EXPRESSION は、テーブルをパーティショニングするための式に置き換えます。

  6. 省略可: [書式] をクリックします。

次のサンプルコードは、テーブル定義 SQLX ファイルで の 1 時間ごとのテーブル分割を示しています。

config {
  type: "table",
  bigquery: {
    partitionBy: "DATETIME_TRUNC(<timestamp_column>, HOUR)"
  }
}

次のサンプルコードは、テーブル定義 SQLX ファイルでの整数値にるテーブル分割を示しています。

config {
  type: "table",
  bigquery: {
    partitionBy: "RANGE_BUCKET(<integer_column>, GENERATE_ARRAY(0, 1000000, 1000))"
  }
}

パーティション フィルタを設定する

BigQuery のパーティション フィルタの詳細については、パーティション分割テーブルのパーティション フィルタ必須属性の設定をご覧ください。

パーティション フィルタを設定する手順は次のとおりです。

  1. 開発ワークスペースに移動します。
  2. [ファイル] ペインで、definitions/ を展開します。
  3. パーティション分割テーブルの定義 SQLX ファイルを開きます。
  4. bigquery ブロックに、次のコード スニペットを入力します。

    requirePartitionFilter : true
    
  5. 省略可: [書式] をクリックします。

次のサンプルコードは、パーティション分割テーブル SQLX ファイルの bigquery ブロックに設定されたパーティション フィルタを示しています。

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    requirePartitionFilter : true
  }
}
SELECT CURRENT_TIMESTAMP() AS ts

パーティションの保持期間を設定する

パーティション分割テーブル内のすべてのパーティションの保持を制御する手順は次のとおりです。

  1. 開発ワークスペースに移動します。
  2. [ファイル] ペインで、definitions/ を展開します。
  3. パーティション分割テーブルの定義 SQLX ファイルを開きます。
  4. bigquery ブロックに、次のコード スニペットを入力します。

    partitionExpirationDays: NUMBER_OF_DAYS
    

    NUMBER_OF_DAYS は、パーティションを保持する日数に置き換えます。

  5. 省略可: [書式] をクリックします。

次のコードサンプルは、パーティション分割テーブル SQLX ファイルの bigquery ブロックで、14 日に設定されたパーティションの保持期間を示しています。

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    partitionExpirationDays: 14,
  }
}
SELECT CURRENT_TIMESTAMP() AS ts

テーブル クラスタを作成する

テーブル クラスタを作成するには、テーブル定義 SQLX ファイルの bigquery ブロックに BigQuery clustering_column_list を追加します。

テーブル クラスタを作成するには、次の手順に沿って操作します。

  1. 開発ワークスペースに移動します。
  2. [ファイル] ペインで、definitions/ を展開します。
  3. テーブル定義 SQLX ファイルを開きます。
  4. bigquery ブロックに、次のコード スニペットを入力します。

        clusterBy: ["CLUSTER_COLUMN"]
    

    CLUSTER_COLUMN は、テーブルをクラスタ化する列の名前に置き換えます。

  5. 省略可: [書式] をクリックします。

次のコードサンプルは、name 列と revenue 列でクラスタ化されたパーティション分割テーブルを示しています。

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    clusterBy: ["name", "revenue"]
  }
}
SELECT CURRENT_TIMESTAMP() as ts, name, revenue

次のステップ