1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DatabricksのDelta Live Tablesでカタログやスキーマを複数指定できるようになりました!

Last updated at Posted at 2025-02-11

リリース当初から要望されていた機能です。

Delta Live Tablesは、複数のスキーマおよびカタログへのテーブルの公開をサポートするようになりました

デフォルトでは、Delta Live Tablesで作成された新しいパイプラインは、複数のカタログおよびスキーマでマテリアライズドビューおよびストリーミングテーブルの作成と更新をサポートします。

パイプライン構成の新しいデフォルト動作では、ユーザーがパイプラインのデフォルトスキーマとなるターゲットスキーマを指定する必要があります。LIVE仮想スキーマおよび関連する構文は不要になりました。詳細については、以下を参照してください:

従来は、一つのDelta Live Tables(DLT)パイプラインでは一つのカタログとスキーマしか指定ができませんでした。このため、「このマテリアライズドビューはスキーマdlt1、こちらはスキーマdlt2...」というように出力先を分けることができませんでした。

今回のこちらの機能のパブリックプレビューによって、パイプラインに含まれるそれぞれのマテリアライズドビューやストリーミングテーブルを任意のカタログ、スキーマに公開できるようになりました。これによって、パイプラインの出力を任意に設定できる柔軟性を提供します。また、コストを削減するために、複数のロジックと出力先を持つパイプラインを一つのパイプラインにまとめることも可能となります。

注意点としては、この機能は新規に作成するDLTパイプラインに適用されるということです。既存のパイプラインには適用されません。

ウォークスルー

早速、サンプルパイプラインを使ってウォークスルーします。Delta Live Tablesの画面からサンプルパイプラインを作成します。

Screenshot 2025-02-11 at 19.45.24.png

作成画面にDPMが有効になっていますと表示されています。これはDirect Publishing Modeの略です。わかりにくくてすみません。新規パイプラインではこちらのモードがデフォルトでオンになります。

Screenshot 2025-02-11 at 19.32.15.png

DPMモードでもデフォルトのカタログとスキーマの指定は必要です。これはパイプラインのロジックで明示的にカタログやスキーマが設定されていない場合に用いられます。

Screenshot 2025-02-11 at 19.32.42.png

パイプラインを作成すると、ロジックを定義するノートブックが表示されます。このままではDPMの恩恵を受けられないので、以下のように修正します。作成されるストリーミングテーブルとマテリアライズドビューをそれぞれ異なるスキーマに出力します。主な変更点は2点です。

  1. ストリーミングテーブルとマテリアライズドビューの発行先やliveスキーマによる参照を明示的に3レベルの名前空間(カタログ、スキーマ、テーブル)で指定。
  2. LIVE TABLEMATERIARIZED 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

この時点で検証を行うと、問題なくパイプラインが構築されています。

Screenshot 2025-02-11 at 19.34.52.png

パイプラインの起動

詳細フロータブで公開先を確認することができます。

Screenshot 2025-02-11 at 19.36.42.png

Screenshot 2025-02-11 at 19.36.48.png

Screenshot 2025-02-11 at 19.36.57.png

結果の確認

カタログエクスプローラで、それぞれのスキーマ配下にストリーミングテーブルやマテリアライズドビューが発行されていることを確認できます。

Screenshot 2025-02-11 at 19.37.22.png

Screenshot 2025-02-11 at 19.37.29.png

Screenshot 2025-02-11 at 19.37.37.png

是非、ご活用ください!

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?