Unity Catalogビューからのストリーミング
プレビュー
この機能はパブリックプレビュー段階です。
Databricks Runtime 14.1 以降では、構造化ストリーミングを使用して、Unity Catalogに登録されているビューからストリーミング読み取りを実行できます。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
フィルタ
説明: 行レベルのアクセス許可を制御します。
演算子:
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
注
ビュー定義を変更して、ビューで参照されるテーブルを追加または変更し、同じストリーミング チェックポイントを使用することはできません。
制限事項
次の制限が適用されます:
ストリームは、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.
サポートされていないオプションを指定すると、次の例外が表示されます: ''' 分析例外: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW。UNSUPPORTED_OPTION] ビューのストリーミングはサポートされていません。 理由: オプション<option> はサポートされていません。```