BigQuery は、パーティション分割テーブルとテーブル クラスタリングをサポートしています。BigQuery のパーティションとクラスタの詳細については、パーティション分割テーブルの概要とクラスタ化テーブルの作成と使用をご覧ください。
始める前に
Cloud コンソールで、[Dataform] ページに移動します。
リポジトリを作成または選択します。
開発ワークスペースを作成または選択します。
必要なロール
テーブルのパーティションとクラスタを構成するために必要な権限を取得するには、ワークスペースに対する Dataform 編集者 (roles/dataform.editor
)IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
テーブル パーティションを作成する
テーブル パーティションを作成するには、テーブル定義 SQLX ファイルの bigquery
ブロックに BigQuery の partition_expression を追加します。
テーブル パーティションを作成するには、次の手順に沿って操作します。
- 開発ワークスペースに移動します。
- [ファイル] ペインで
definitions/
を開きます。 - テーブル定義 SQLX ファイルを開きます。
config
ブロックで、テーブルタイプの宣言の下に次の形式でbigquery
ブロックを追加します。config { type: "table", bigquery: { } }
bigquery
ブロックに次のコード スニペットを入力します。partitionBy: "PARTITION_EXPRESSION"
PARTITION_EXPRESSION は、テーブルをパーティショニングする式に置き換えます。
省略可: [書式] をクリックします。
次のサンプルコードは、テーブル定義 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 のパーティション フィルタの詳細については、パーティション分割テーブルのパーティション フィルタ必須属性の設定をご覧ください。
パーティション フィルタを設定する手順は次のとおりです。
- 開発ワークスペースに移動します。
- [ファイル] ペインで
definitions/
を開きます。 - パーティション分割テーブルの定義 SQLX ファイルを開きます。
bigquery
ブロックには、次のコード スニペットを入力します。requirePartitionFilter : true
省略可: [書式] をクリックします。
次のサンプルコードは、パーティション分割テーブル SQLX ファイルの bigquery
ブロックに設定されたパーティション フィルタを示しています。
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
requirePartitionFilter : true
}
}
SELECT CURRENT_TIMESTAMP() AS ts
パーティションの保持期間を設定する
パーティション分割テーブル内のすべてのパーティションの保持を制御する手順は次のとおりです。
- 開発ワークスペースに移動します。
- [ファイル] ペインで
definitions/
を開きます。 - パーティション分割テーブルの定義 SQLX ファイルを開きます。
bigquery
ブロックに次のコード スニペットを入力します。partitionExpirationDays: NUMBER_OF_DAYS
NUMBER_OF_DAYS は、パーティションを保持する日数に置き換えます。
省略可: [書式] をクリックします。
次のコードサンプルは、パーティション分割テーブル SQLX ファイルの bigquery
ブロックで、14 日に設定されたパーティションの保持期間を示しています。
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
partitionExpirationDays: 14,
}
}
SELECT CURRENT_TIMESTAMP() AS ts
テーブル クラスタを作成する
テーブル クラスタを作成するには、テーブル定義 SQLX ファイルの bigquery
ブロックに BigQuery の clustering_column_list を追加します。
テーブル クラスタを作成するには、次の手順に沿って操作します。
- 開発ワークスペースに移動します。
- [ファイル] ペインで
definitions/
を開きます。 - テーブル定義 SQLX ファイルを開きます。
bigquery
ブロックに次のコード スニペットを入力します。clusterBy: ["CLUSTER_COLUMN"]
CLUSTER_COLUMN は、テーブルをクラスタ化する列の名前に置き換えます。
省略可: [書式] をクリックします。
次のコードサンプルは、name
列と revenue
列でクラスタ化されたパーティション分割テーブルを示しています。
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
clusterBy: ["name", "revenue"]
}
}
SELECT CURRENT_TIMESTAMP() as ts, name, revenue
次のステップ
- インクルードを使用してコードを再利用する方法については、インクルードを使用して変数と関数を再利用するをご覧ください。
- 増分テーブルの構成方法については、増分テーブルを構成するをご覧ください。