Unity Catalog のビューからストリーミングする
重要
この機能はパブリック プレビュー段階にあります。
Databricks Runtime 14.1 以降では、構造化ストリーミングを使って、Unity Catalog に登録されているビューからのストリーミング読み取りを実行できます。 Azure Databricks では、Delta テーブルに対して定義されたビューからのストリーミング読み取りのみがサポートされます。
ビューをストリームとして読み取る
構造化ストリーミングを使ってビューを読み取るには、次の例のように、ビューの識別子を .table()
メソッドに対して指定します。
df = (spark.readStream
.table("demoView")
)
ユーザーは、ターゲット ビューに対する SELECT
特権を持っている必要があります。
ビューに対するストリーミング読み取りの構成でサポートされているオプション
ビューに対するストリーミング読み取りを構成するときは、次のオプションがサポートされます。
maxFilesPerTrigger
maxBytesPerTrigger
ignoreDeletes
skipChangeCommits
withEventTimeOrder
startingTimestamp
startingVersion
ストリーミング リーダーは、基になる Delta テーブルを定義しているファイルとメタデータにこれらのオプションを適用します。
重要
UNION ALL
で定義されているビューに対する読み取りでは、オプション withEventTimeOrder
と startingVersion
はサポートされません。
ソース ビューでサポートされる操作
すべてのビューがストリーミング読み取りをサポートしているわけではありません。 ソース ビューでサポートされていない操作には、集計と並べ替えが含まれます。
次の一覧は、サポートされている操作の説明とビュー定義の例です。
プロジェクト
説明: 列レベルのアクセス許可を制御する
[演算子]:
SELECT... FROM...
サンプル ステートメント:
CREATE VIEW project_view AS SELECT id, value FROM source_table
Assert
説明: 行レベルのアクセス許可を制御する
[演算子]:
WHERE...
サンプル ステートメント:
CREATE VIEW filter_view AS SELECT * FROM source_table WHERE value > 100
すべての和集合
説明: 複数のテーブルからの結果
[演算子]:
UNION ALL
サンプル ステートメント:
CREATE VIEW union_view AS SELECT id, value FROM source_table1 UNION ALL SELECT * FROM source_table2
Note
ビュー定義を変更して、ビューで参照されているテーブルを追加または変更したり、同じストリーミング チェックポイントを使ったりすることはできません。
制限事項
次の制限事項が適用されます。
ストリーミングできるのは、Delta テーブルによってサポートされるビューからのみです。 他のデータ ソースに対して定義されたビューはサポートされていません。
ビューを Unity Catalog に登録する必要があります。
サポートされていない演算子を使ってビューからストリーミングすると、次の例外が表示されます。
UnsupportedOperationException: [UNEXPECTED_OPERATOR_IN_STREAMING_VIEW] Unexpected operator <operator> in the CREATE VIEW statement as a streaming source. A streaming view query must consist only of SELECT, WHERE, and UNION ALL operations.
サポートされていないオプションを指定すると、次の例外が表示されます。
AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.