0
0

More than 1 year has passed since last update.

Delta Live Tables SQLリファレンス

Last updated at Posted at 2022-07-28

Delta Live Tables SQL language reference | Databricks on AWS [2022/7/11時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

本書では、Delta Live TablesのSQLプログラミングインタフェースの詳細とサンプルを説明します。完全なAPI仕様については、SQL API仕様をご覧ください。

Python APIに関しては、Delta Live Tables Pythonリファレンスをご覧ください。

SQLデータセット

SQLでビューやテーブルを作成するにはCREATE LIVE VIEWあるいはCREATE OR REFRESH LIVE TABLEを使用します。外部データソースあるいはパイプラインで定義されているデータセットから読み込むことでデータセットを作成することができます。内部のデータセットから読み込むには、データセット名の前にLIVEキーワードを追加します。以下の例では、2つの異なるデータセットを定義しています:入力ソースとしてJSONファイルを受け取るtaxi_rawというテーブルと、taxi_rawテーブルを入力とするfiltered_dataというテーブルです。

SQL
CREATE OR REFRESH LIVE TABLE taxi_raw
AS SELECT * FROM json.`/databricks-datasets/nyctaxi/sample/json/`

CREATE OR REFRESH LIVE TABLE filtered_data
AS SELECT
  ...
FROM LIVE.taxi_raw

Delta Live Tablesは、パイプラインで定義されているデータセット間の依存関係を自動でキャプチャし、アップデートを行う際に実行順序を決定するため、そして、パイプラインのイベントログでリネージュ情報を記録するために、この依存関係の情報を使用します。

ビューとテーブルの両方は以下のオプションのプロパティを持っています。

  • COMMENT: 人間が理解できるデータセットの説明文です。
  • エクスペクテーションによって強制されるデータ品質制約。

また、テーブルには自身のマテリアライゼーションのために追加の属性を持っています。

  • PARTITIONED BYを用いてテーブルをどのようにパーティショニングするのかを指定します。
  • TBLPROPERTIESを用いてテーブルプロパティを設定できます。詳細はテーブルプロパティをご覧ください。
  • LOCATION設定を用いてストレージの場所を設定します。デフォルトでは、LOCATIONが設定されていない場合、テーブルデータはパイプラインのストレージの場所に格納されます。

テーブルとビューのプロパティの詳細については、SQL API仕様をご覧下さい。

Spark設定を含むテーブルやビューの設定値を指定するには、SETを使用します。SET文の後にノートブックで定義されたすべてのテーブルやビューは、定義された値にアクセスすることができます。SET文で指定されたすべてのSpark設定は、SET文以降のすべてのテーブルやビューに対するSparkクエリーを実行する際に使用されます。クエリーで設定値を読み込むには、文字列内挿文法である${}を使用します。以下のサンプルでは、startDateというSpark設定を設定し、クエリーでその値を使用しています。

SQL
SET startDate='2020-01-01';

CREATE OR REFRESH LIVE TABLE filtered
AS SELECT * FROM src
WHERE date > ${startDate}

複数の設定値を指定するには、値ごとにSET文を使用します。

Auto Loaderや内部データセットのようなストリーミングソースからデータを読み込むには、STREAMING LIVEテーブルを定義します。

SQL
CREATE OR REFRESH STREAMING LIVE TABLE customers_bronze
AS SELECT * FROM cloud_files("/databricks-datasets/retail-org/customers/", "csv")

CREATE OR REFRESH STREAMING LIVE TABLE customers_silver
AS SELECT * FROM STREAM(LIVE.customers_bronze)

ストリーミングデータに関しては、ストリーミングデータ処理をご覧ください。

SQL API仕様

注意
Delta Live TablesのSQLインタフェースには以下の制限があります。

  • アイデンティティとジェネレーテッドカラムはサポートされていません。
  • PIVOT句はサポートされていません。データセット定義におけるPIVOT文の利用は、非決定性のパイプラインのレーテンシーを引き起こします。

テーブルの作成

SQL
CREATE OR REFRESH [TEMPORARY] { STREAMING LIVE TABLE | LIVE TABLE } table_name
  [(
    [
    col_name1 col_type1 [ COMMENT col_comment1 ],
    col_name2 col_type2 [ COMMENT col_comment2 ],
    ...
    ]
    [
    CONSTRAINT expectation_name_1 EXPECT (expectation_expr1) [ON VIOLATION { FAIL UPDATE | DROP ROW }],
    CONSTRAINT expectation_name_2 EXPECT (expectation_expr2) [ON VIOLATION { FAIL UPDATE | DROP ROW }],
    ...
    ]
  )]
  [USING DELTA]
  [PARTITIONED BY (col_name1, col_name2, ... )]
  [LOCATION path]
  [COMMENT table_comment]
  [TBLPROPERTIES (key1 [ = ] val1, key2 [ = ] val2, ... )]
  AS select_statement

ビューの作成

SQL
CREATE TEMPORARY [STREAMING] LIVE VIEW view_name
  [(
    [
    col_name1 [ COMMENT col_comment1 ],
    col_name2 [ COMMENT col_comment2 ],
    ...
    ]
    [
    CONSTRAINT expectation_name_1 EXPECT (expectation_expr1) [ON VIOLATION { FAIL UPDATE | DROP ROW }],
    CONSTRAINT expectation_name_2 EXPECT (expectation_expr2) [ON VIOLATION { FAIL UPDATE | DROP ROW }],
    ...
    ]
  )]
  [COMMENT view_comment]
  AS select_statement

SQLプロパティ

CREATE TABLE あるいは VIEW
TEMPORARY
一時テーブルを作成します。このテーブルのメタデータは永続化されません。
STREAMING
ストリームとして入力データセットを読み込むテーブルを作成します。入力データセットは、Autor LoaderSTREAMING LIVEテーブルのようなストリーミングデータソースである必要があります。
PARTITIONED BY
テーブルをパーティショニングする際にオプションとして指定する1つ以上のカラムです。
LOCATION
オプションで指定するテーブルデータを格納するストレージ上の場所です。指定しない場合、デフォルトではパイプラインのストレージ上の格納場所となります。
COMMENT
オプションで指定するテーブルの説明文です。
TBLPROPERTIES
テーブルに対するオプションのテーブルプロパティです。
select_statement
テーブルに対するデータセットを定義するDelta Live Tablesのクエリーです。
CONSTRAINT句
EXPECT expectation_name
expectation_nameという名前のデータ品質制約を定義します。ON VIOLATION制約が定義されていない場合、制約に違反する行をターゲットのデータセットに追加します。
ON VIOLATION
違反した行に対するオプションのアクションです。
  • FAIL UPDATE: 即座にパイプラインの実行を停止します。
  • DROP ROW: 行を削除し、処理を継続します。

テーブルプロパティ

Delta Lakeによってサポートされているテーブルプロパティに加え、以下のテーブルプロパティを設定することができます。

テーブルプロパティ
pipelines.autoOptimize.managed
デフォルト: true
このテーブルに対して自動でスケジュールされる最適化処理を有効化、無効化します。
pipelines.autoOptimize.zOrderCols
デフォルト: None
このテーブルに対して実行するz-orderのカラム名のカンマ区切りのリストです。オプションです。
pipelines.reset.allowed
デフォルト: true
このテーブルに対するフルリフレッシュを許可するかどうかを指定します。

Databricks 無料トライアル

Databricks 無料トライアル

0
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
0
0