Delta Lakeガイドのイントロダクション

[Introduction \| Databricks on AWS](https://docs.databricks.com/delta/delta-intro.html) [2022/5/23時点]の翻訳です。

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

[Delta Lake](https://delta.io/)は[データレイク](https://databricks.com/discover/data-lakes/introduction)に[レイクハウスアーキテクチャ](https://qiita.com/taka_yayoi/items/438f762126f57868aa35)の構築を可能にする[オープンソースプロジェクト](https://github.com/delta-io/delta)です。Delta Lakeは[ACIDトランザクション](https://qiita.com/taka_yayoi/items/94db8363720687d17d6e)、スケーラブルなメタデータハンドリング、既存のデータレイクでの[ストリーミング](https://qiita.com/taka_yayoi/items/41d97a7c552f947729a0)と[バッチ](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82)データ処理の統合を可能にします。

Delta Lakeのクイックなオーバービューとメリットに関しては、Youtubeをご覧ください(3分)。
<iframe width="560" height="315" src="https://www.youtube.com/embed/PftRBoqjhZM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

特に、Delta Lakeは以下の機能を提供します。

- Sparkにおける[ACIDトランザクション](https://qiita.com/taka_yayoi/items/94db8363720687d17d6e): シリアライズ可能なアイソレーションレベルによって、読み取り側で一貫性のないデータを参照することがなくなります。
- スケーラブルなメタデータのハンドリング: 数十億のファイルから構成されるパタバイト規模の全てのメタデータを容易に取り扱うことができる、Sparkの分散処理のパワーを活用します。
- [ストリーミング](https://qiita.com/taka_yayoi/items/41d97a7c552f947729a0)と[バッチ](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82)の統合: Delta Lakeのテーブルはバッチテーブルであるのと同時に、ストリーミングのソース、シンクでもあります。ストリーミングのデータ取り込み、バッチによる過去データのバックフィル、インタラクティブなクエリーすべてを簡単に実行できます。
- スキーマ強制: データ取り込みの際に不正なレコードの挿入を防ぐために、自動でスキーマの変更をハンドリングします。
- [タイムトラベル](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E9%81%8E%E5%8E%BB%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E3%82%B9%E3%83%8A%E3%83%83%E3%83%97%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%BC%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%88%E3%83%A9%E3%83%99%E3%83%AB): データのバージョン管理によって、ロールバック、完全な履歴の監査証跡、再現可能な機械学習エクスペリメントを実現します。
- [upsert](https://qiita.com/taka_yayoi/items/0d8350a2b4739392a52f#merge%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%B8%E3%81%AEupsert)と[delete](https://qiita.com/taka_yayoi/items/0d8350a2b4739392a52f#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%8B%E3%82%89%E3%81%AEdelete): チェンジデータキャプチャやSCD(slowly-changing-operation)オペレーション、ストリーミングによるupsertなど複雑なユースケースを実現するためのmerge、update、deleteオペレーションをサポートします。

Delta Lakeの一般的なイントロダクションとデモンストレーションに関しては、こちらのYoutubeをご覧ください(51分)。
<iframe width="560" height="315" src="https://www.youtube.com/embed/a18C8kJfNrE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Deltaエンジンによる最適化によって、Delta Lakeのオペレーションは非常に高性能なものとなり、大規模ETL処理からアドホックなインタラクティブなクエリーといった幅広いワークロードをサポートすることができます。Deltaエンジンに関しては、[Optimizations](https://docs.databricks.com/delta/optimizations/index.html)をご覧ください。

# クイックスタート

Delta Lakeのクイックスタートでは、Delta Lakeの操作方法の基礎に関するオーバービューを提供します。[クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24)では、Delta Lakeへのデータのロード、テーブルの変更、テーブルの読み込み、テーブル履歴の表示、テーブルの最適化に関して説明します。

これらの機能をデモンストレーションするDatabricksノートブックに関しては、[Introductory notebooks](https://docs.databricks.com/delta/intro-notebooks.html)をご覧ください。

Delta Lakeを試すには、[Databrikcs](https://databricks.com/jp/try-databricks)にサインアップしてください。

# 主要なタスク

以下のリストでは、一般的なDelta Lakeのタスクに関するドキュメントへのリンクを提供しています。

- Deltaテーブルの作成: [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90)、[バッチデータタスク](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90)
- Delta Lakeテーブルへのデータのロード、書き込み:
    - [COPY INTO](https://docs.databricks.com/delta/delta-ingest.html#copy-into-sql-command)を使用
    - [Auto Loader](https://docs.databricks.com/delta/delta-ingest.html#auto-loader)を使用
    - [Databricks SQLでCreate Table UI](https://docs.databricks.com/ingestion/add-data/index.html)を使用
    - ストリーミングを使用: [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AB%E3%82%88%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%B8%E3%81%AE%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF)、[ストリーミングタスク](https://qiita.com/taka_yayoi/items/41d97a7c552f947729a0)
    - サードパーティソリューションを使用: [パートナー](https://docs.databricks.com/delta/delta-ingest.html#partner-integrations)、[サードパーティプロバイダー](https://docs.databricks.com/delta/integrations.html)
    - [データの更新](https://qiita.com/taka_yayoi/items/0d8350a2b4739392a52f#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AEupdate)
    - データのmerge(upserts: updateとinsert): [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E3%83%90%E3%83%83%E3%83%81%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A2%E3%83%83%E3%83%97%E3%82%B5%E3%83%BC%E3%83%88)、[テーブルアップデート](https://qiita.com/taka_yayoi/items/0d8350a2b4739392a52f#merge%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%B8%E3%81%AEupsert)
    - [データの追加](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E8%BF%BD%E5%8A%A0)
    - [データの上書き](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E4%B8%8A%E6%9B%B8%E3%81%8D)
- [ParquetテーブルをDeltaテーブルに変換](https://qiita.com/taka_yayoi/items/152a31dc44bda51eeecd#parquet%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92delta%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B)
- Deltaテーブルからデータの読み込み: [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF)、[バッチデータタスク](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF)、[ストリーミングタスク](https://qiita.com/taka_yayoi/items/41d97a7c552f947729a0)
- Deltaテーブルの最適化: [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96)、[bin packing](https://qiita.com/taka_yayoi/items/a82b0b8fbdc74e6f9f01#%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3bin-packing)、[Z-ordering](https://qiita.com/taka_yayoi/items/a82b0b8fbdc74e6f9f01#z-ordering%E5%A4%9A%E6%AC%A1%E5%85%83%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0)、[ファイルサイズチューニング](https://qiita.com/taka_yayoi/items/a82b0b8fbdc74e6f9f01#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0)
- [Deltaテーブルに対するビューの作成](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%83%93%E3%83%A5%E3%83%BC)
- [Deltaテーブルからデータの削除](https://qiita.com/taka_yayoi/items/0d8350a2b4739392a52f#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%8B%E3%82%89%E3%81%AEdelete)
- [Deltaテーブルの詳細の表示](https://qiita.com/taka_yayoi/items/152a31dc44bda51eeecd#delta%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E8%A9%B3%E7%B4%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)
- Deltaテーブルの履歴の表示: [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E5%B1%A5%E6%AD%B4%E3%81%AE%E8%A1%A8%E7%A4%BA)、[データユーティリティ](https://qiita.com/taka_yayoi/items/152a31dc44bda51eeecd#delta%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E5%B1%A5%E6%AD%B4%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)
- Deltaテーブルスナップショットのクリーンアップ(vacuum): [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E3%82%B9%E3%83%8A%E3%83%83%E3%83%97%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%81%AE%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97)、[データユーティリティ](https://qiita.com/taka_yayoi/items/152a31dc44bda51eeecd#delta%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%AA%E3%81%84%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B)
- Deltaテーブルカラムの操作
    - [カラム制約の操作](https://docs.databricks.com/delta/delta-constraints.html#not-null-constraint)
    - カラムによるデータのパーティション: [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3)、[バッチデータタスク](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3)
    - [自動生成カラムの利用](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%83%86%E3%83%83%E3%83%89%E3%82%AB%E3%83%A9%E3%83%A0%E3%81%AE%E4%BD%BF%E7%94%A8)
    - [カラムの更新(追加、並び替え、置き換え、名前変更、型変更)](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88)
    - [関連ParquetテーブルのカラムにDeltaテーブルのカラムをマッピング](https://qiita.com/taka_yayoi/items/50c18bc9e48a31b22951)
- [Deltaテーブルの変更を追跡(チェンジデータフィード)](https://qiita.com/taka_yayoi/items/e3c40fce43561f73a50c)
- [Deltaテーブルのクローン、コピー](https://qiita.com/taka_yayoi/items/152a31dc44bda51eeecd#delta%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%B3%E3%81%99%E3%82%8B)
- [テーブル制約の操作](https://docs.databricks.com/delta/delta-constraints.html#check-constraint)
- Deltaテーブルバージョンの操作
    - Deltaテーブルの以前のバージョンに対するクエリー(タイムトラベル): [クイックスタート](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24#%E4%BB%A5%E5%89%8D%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%82%AF%E3%82%A8%E3%83%AA%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%88%E3%83%A9%E3%83%99%E3%83%AB)、[バッチデータタスク](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E9%81%8E%E5%8E%BB%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E3%82%B9%E3%83%8A%E3%83%83%E3%83%97%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%BC%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%88%E3%83%A9%E3%83%99%E3%83%AB)
    - [Deltaテーブルを前のバージョンにリストア、ロールバック](https://qiita.com/taka_yayoi/items/152a31dc44bda51eeecd#delta%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E5%89%8D%E3%81%AE%E7%8A%B6%E6%85%8B%E3%81%AB%E5%BE%A9%E6%97%A7%E3%81%99%E3%82%8B)
    - [Deltaテーブルリーダー、ライターのバージョンを取り扱う](https://qiita.com/taka_yayoi/items/0a109082037246163218)
- Deltaテーブルメタデータを取り扱う
    - [既存のメタデータを読み込む](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF)
    - [自分でメタデータを追加する](https://qiita.com/taka_yayoi/items/47b58eb8696b278a3a82#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3)
- [Delta Lake SQL文を使用する](https://docs.databricks.com/spark/latest/spark-sql/language-manual/index.html#delta-lake-statements)
- [Delta Lake APIリファレンスを使う](https://docs.databricks.com/delta/delta-apidoc.html)
- [Delta Lakeのコンカレンシーコントロール(ACIDトランザクション)を学ぶ](https://qiita.com/taka_yayoi/items/94db8363720687d17d6e)

# リソース

- FAQについては、[Delta Lakeに対するFAQ](https://qiita.com/taka_yayoi/items/e2fe8a341c3635f72544)をご覧ください。
- Delta LakeのSQLコマンドのリファレンスについては、[Delta Lake statements](https://docs.databricks.com/spark/latest/spark-sql/language-manual/index.html#delta-lake-statements)をご覧ください。
- ブログ記事、講演、サンプルなど他のリソースに関しては、[Delta Lake resources](https://docs.databricks.com/delta/delta-resources.html)をご覧ください。

Delta Lakeにディープダイブするトレーニングについては、こちらのYoutubeをご覧ください。
<iframe width="560" height="315" src="https://www.youtube.com/embed/znv4rM9wevc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)