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つあります。

チュートリアル

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方言で使用できます。