リリース当初から要望されていた機能です。
Delta Live Tablesは、複数のスキーマおよびカタログへのテーブルの公開をサポートするようになりました
デフォルトでは、Delta Live Tablesで作成された新しいパイプラインは、複数のカタログおよびスキーマでマテリアライズドビューおよびストリーミングテーブルの作成と更新をサポートします。
パイプライン構成の新しいデフォルト動作では、ユーザーがパイプラインのデフォルトスキーマとなるターゲットスキーマを指定する必要があります。LIVE仮想スキーマおよび関連する構文は不要になりました。詳細については、以下を参照してください:
従来は、一つのDelta Live Tables(DLT)パイプラインでは一つのカタログとスキーマしか指定ができませんでした。このため、「このマテリアライズドビューはスキーマdlt1
、こちらはスキーマdlt2
...」というように出力先を分けることができませんでした。
今回のこちらの機能のパブリックプレビューによって、パイプラインに含まれるそれぞれのマテリアライズドビューやストリーミングテーブルを任意のカタログ、スキーマに公開できるようになりました。これによって、パイプラインの出力を任意に設定できる柔軟性を提供します。また、コストを削減するために、複数のロジックと出力先を持つパイプラインを一つのパイプラインにまとめることも可能となります。
注意点としては、この機能は新規に作成するDLTパイプラインに適用されるということです。既存のパイプラインには適用されません。
ウォークスルー
早速、サンプルパイプラインを使ってウォークスルーします。Delta Live Tablesの画面からサンプルパイプラインを作成します。
作成画面にDPMが有効になっていますと表示されています。これはDirect Publishing Modeの略です。わかりにくくてすみません。新規パイプラインではこちらのモードがデフォルトでオンになります。
DPMモードでもデフォルトのカタログとスキーマの指定は必要です。これはパイプラインのロジックで明示的にカタログやスキーマが設定されていない場合に用いられます。
パイプラインを作成すると、ロジックを定義するノートブックが表示されます。このままではDPMの恩恵を受けられないので、以下のように修正します。作成されるストリーミングテーブルとマテリアライズドビューをそれぞれ異なるスキーマに出力します。主な変更点は2点です。
- ストリーミングテーブルとマテリアライズドビューの発行先や
live
スキーマによる参照を明示的に3レベルの名前空間(カタログ、スキーマ、テーブル)で指定。 -
LIVE TABLE
をMATERIARIZED VIEW
に変更
taxi_raw_records
変更前
CREATE
OR REFRESH STREAMING TABLE taxi_raw_records (
CONSTRAINT valid_distance EXPECT (trip_distance > 0.0) ON VIOLATION DROP ROW
) AS
SELECT
*
FROM
STREAM(samples.nyctaxi.trips)
変更後
takaakiyayoi_catalog.dlt1
に発行します。
CREATE
OR REFRESH STREAMING TABLE takaakiyayoi_catalog.dlt1.taxi_raw_records (
CONSTRAINT valid_distance EXPECT (trip_distance > 0.0) ON VIOLATION DROP ROW
) AS
SELECT
*
FROM
STREAM(samples.nyctaxi.trips)
total_fare_amount_by_week
変更前
CREATE
OR REFRESH LIVE TABLE total_fare_amount_by_week AS
SELECT
date_trunc("week", tpep_pickup_datetime) as week,
SUM(fare_amount) as total_amount
FROM
live.taxi_raw_records
GROUP BY
week
変更後
takaakiyayoi_catalog.dlt2
に発行します。
CREATE
OR REFRESH MATERIALIZED VIEW takaakiyayoi_catalog.dlt2.total_fare_amount_by_week AS
SELECT
date_trunc("week", tpep_pickup_datetime) as week,
SUM(fare_amount) as total_amount
FROM
takaakiyayoi_catalog.dlt1.taxi_raw_records
GROUP BY
week
max_distance_by_week
変更前
CREATE
OR REFRESH LIVE TABLE max_distance_by_week AS
SELECT
date_trunc("week", tpep_pickup_datetime) as week,
MAX(trip_distance) as max_distance
FROM
live.taxi_raw_records
GROUP BY
week
変更後
takaakiyayoi_catalog.dlt3
に発行します。
CREATE
OR REFRESH MATERIALIZED VIEW takaakiyayoi_catalog.dlt3.max_distance_by_week AS
SELECT
date_trunc("week", tpep_pickup_datetime) as week,
MAX(trip_distance) as max_distance
FROM
takaakiyayoi_catalog.dlt1.taxi_raw_records
GROUP BY
week
この時点で検証を行うと、問題なくパイプラインが構築されています。
パイプラインの起動
詳細やフロータブで公開先を確認することができます。
結果の確認
カタログエクスプローラで、それぞれのスキーマ配下にストリーミングテーブルやマテリアライズドビューが発行されていることを確認できます。
是非、ご活用ください!