BigQuery の宛先にパーティショニングとクラスタリングを構成することで、クエリのパフォーマンスを最適化し、費用を制御できます。パーティショニングとクラスタリングを使用すると、クエリの実行中に BigQuery がスキャンする必要があるデータ量を減らすことができます。
テーブルのパーティショニング
テーブル パーティショニングでは、テーブルがパーティションと呼ばれるセグメントに分割されるため、データの管理やクエリが簡単になります。テーブルを分割するには、テーブルの分割に使用するパーティション列を指定します。
Datastream は、BigQuery テーブルの次の 3 種類のパーティショニングをサポートしています。
取り込み時間によるパーティショニング: Datastream が BigQuery にデータを取り込む時間に基づいてテーブルをパーティショニングできます。取り込み時間のパーティショニングでは、時間単位、日単位、月単位、年単位のいずれかの粒度を選択できます。デフォルトの粒度は [日] です。
時間単位でのパーティショニング: Datastream が
DATE、DATETIME、TIMESTAMPのいずれかの BigQuery データ型にマッピングするデータ型のソース列に基づいて、テーブルをパーティショニングできます。Datastream がソースデータ型を BigQuery データ型にマッピングする方法については、BigQuery のデータ型マッピングをご覧ください。ソース列がマッピングされる BigQuery のデータ型に応じて、次のいずれかの粒度タイプを選択できます。
DAY、MONTH、YEAR:DATEデータ型の場合。HOUR、DAY、MONTH、YEAR:DATETIMEとTIMESTAMPのデータ型の場合。
整数範囲によるパーティショニング: Datastream が BigQuery の
INTEGERデータ型にマッピングするデータ型のソース列でテーブルをパーティショニングできます。次の情報を提供する必要があります。- 開始: 最初のパーティション範囲の開始値(この値を含む)。
- 終了: 最後のパーティション範囲の終了値(この値は含まれない)。
- 間隔: 各パーティション範囲の幅。
詳細については、整数範囲パーティショニングをご覧ください。
ストリームのパーティショニングを構成する方法については、ストリームのソース データベースに関する情報を構成するをご覧ください。
テーブルのクラスタリング
クラスタリングは、クラスタリング列の値に基づいてテーブルのデータを並べ替え、類似した値を持つデータを配置します。クラスタ化列でフィルタリングするクエリは、テーブルやテーブル パーティション全体ではなく、関連するデータブロックのみをスキャンします。これにより、クエリのパフォーマンスが向上し、クエリ費用を削減できます。
BigQuery テーブルは最大 4 つの列でクラスタリングできます。列を指定する順序によって、データの並べ替え順序が決まります。
Datastream が次のいずれかの BigQuery データ型にマッピングするデータ型のソース列に基づいて、テーブルをクラスタリングできます。
BIGNUMERICBOOLEANDATEDATETIMEGEOGRAPHYINT64NUMERICRANGESTRINGTIMESTAMP
Datastream がソースデータ型を BigQuery データ型にマッピングする方法については、BigQuery のデータ型マッピングをご覧ください。
ストリームのクラスタリングを構成する方法については、ストリームのソース データベースに関する情報を構成するをご覧ください。
制限事項
BigQuery のパーティショニングの制限については、パーティション分割テーブルの概要をご覧ください。
BigQuery のクラスタリングの制限については、クラスタ化テーブルの概要をご覧ください。
BigQuery パーティション分割テーブルに適用される割り当て上限については、割り当てと上限をご覧ください。
また、Datastream を使用する場合は、次の制限事項が適用されます。
- パーティショニングとクラスタリングは、Datastream が新しい BigQuery テーブルを作成するときにのみ適用されます。既存のテーブルのパーティショニングとクラスタリングの設定を構成または変更する場合は、まず BigQuery からテーブルを削除してから、Datastream で設定を構成または変更します。
- MongoDB ソースの場合、テーブルをパーティショニングできるのは取り込み時間のみです。
- MongoDB データベースではクラスタリングはサポートされていません。
次のステップ
- BigQuery のパーティショニングの詳細については、パーティション分割テーブルの概要とパーティション分割テーブルの管理をご覧ください。
- BigQuery のクラスタリングの詳細については、クラスタ化テーブルの概要とクラスタ化テーブルの管理をご覧ください。
- ストリームの詳細については、ストリームのライフサイクルをご覧ください。
- ストリームの作成方法については、ストリームを作成するをご覧ください。
- BigQuery の詳細については、BigQuery の宛先をご覧ください。