Beam SQLの概要
Beam SQLを使用すると、Beamユーザー(現在はBeam JavaとPythonでのみ利用可能)は、バインドされた`PCollection`とバインドされていない`PCollection`をSQLステートメントでクエリできます。SQLクエリは`PTransform`(Beamパイプラインのカプセル化されたセグメント)に変換されます。パイプラインでは、SQL `PTransforms`と他の`PTransforms`を自由に組み合わせることができます。
Beam SQLには、以下の方言が含まれています。
Beam Calcite SQLは、ビッグデータ処理で広く使用されている方言であるApache Calciteのバリアントです。Beam Calcite SQLは、デフォルトのBeam SQL方言です。Beam ZetaSQLはBigQueryとの互換性が高いため、BigQueryテーブルへの書き込みまたはBigQueryテーブルからの読み取りを行うパイプラインで特に役立ちます。
方言を変更するには、方言の完全なパッケージ名を`setPlannerName`メソッド(`PipelineOptions`インターフェース内)に渡します。
パイプラインでSQLを使用するために知っておく必要がある追加の概念が2つあります。
- SqlTransform:SQLクエリから`PTransforms`を作成するためのインターフェース。
- Row:Beam SQLが操作する要素の型。`PCollection
`はテーブルの役割を果たします。
チュートリアル
SQLパイプラインチュートリアルでは、サンプルコードを使用してBeam SQLの使用方法を説明しています。
シェル
Beam SQLシェルを使用すると、Java SDKを使用せずにSQLクエリとしてパイプラインを作成できます。シェルページでは、インタラクティブなBeam SQLシェルの使用方法について説明しています。
Apache Calcite方言
Beam Calcite SQLの概要では、Beam Calcite SQLでサポートされているApache Calciteの演算子、関数、構文、およびデータ型をまとめています。
ZetaSQL方言
Beam SQLのZetaSQL機能の詳細については、Beam ZetaSQL方言リファレンスを参照してください。
Beam ZetaSQLに切り替えるには、次のようにパイプラインオプションを構成します。
PipelineOptions options = ...;
options
.as(BeamSqlPipelineOptions.class)
.setPlannerName("org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLQueryPlanner");
注:`ZetaSQLQueryPlanner`を使用するには、`CalciteQueryPlanner`に必要な`beam-sdks-java-extensions-sql`パッケージに加えて、`beam-sdks-java-extensions-sql-zetasql`への追加の依存関係が必要です。
Beam SQL拡張機能
Beam SQLには、Beamの統合バッチ/ストリーミングモデルと複雑なデータ型の処理を活用した追加の拡張機能があります。これらの拡張機能は、すべてのBeam SQL方言で使用できます。