Beam SQL拡張機能:結合
Beam SQLでサポートされている`JOIN`タイプ
- `INNER`、`LEFT OUTER`、`RIGHT OUTER`
- 等結合(結合条件が等価チェックである場合)のみサポートされています。
Beam SQLでサポートされていない`JOIN`タイプ
- `CROSS JOIN`はサポートされていません(`ON`句のない完全な直積)。
- `FULL OUTER JOIN`はサポートされていません(`LEFT OUTER`と`RIGHT OUTER`結合の組み合わせ)。
結合のシナリオは3つのケースに分類できます。
- バウンド入力`JOIN`バウンド入力
- アンバウンド入力`JOIN`アンバウンド入力
- アンバウンド入力`JOIN`バウンド入力
バウンドJOINバウンド
標準的な結合実装が使用されます。一方の入力からのすべての要素が、もう一方の入力からのすべての要素と照合されます。両方の入力がバウンドされているため、ウィンドウ処理やトリガーは関与しません。
アンバウンドJOINアンバウンド
標準的な結合実装が使用されます。一方の入力からのすべての要素が、もう一方の入力からのすべての要素と照合されます。
ウィンドウ処理とトリガー
アンバウンド入力を結合する場合は、次のプロパティを満たす必要があります。
- 入力は互換性のあるウィンドウを持っている必要があります。そうでない場合、`IllegalArgumentException`がスローされます。
- 各入力のトリガーは、ウィンドウごとに1回だけ発火する必要があります。現在、このケースでサポートされているトリガーは、許容遅延がゼロの`DefaultTrigger`のみです。他のトリガーを使用すると、`UnsupportedOperationException`がスローされます。
これは、入力がウィンドウごとに結合されることを意味します。つまり、トリガーが発火すると(1回のみ)、両方の入力の現在のウィンドウ内のすべての要素に対して結合が実行されます。これにより、どのような種類の出力が生成されるかを推論できます。
**注:** `GroupByKeys`と同様に、`JOIN`は`Trigger.continuationTrigger()`を使用してトリガーを更新します。入力のウィンドウ処理戦略の他の側面は変更されません。
アンバウンドJOINバウンド
このタイプの`JOIN`では、バウンド入力は実装によってサイド入力として扱われます。これは、ウィンドウ/トリガーがアップストリームから継承されることを意味します。