Delta Lake DML機能(データ追加/更新/削除)
ここでは、Delta Lakeの DML機能(データ追加/更新/削除)について、まとめていきます。
参照:https://docs.databricks.com/delta/delta-update.html
データを追加する
データを追加していく方法をまとめます。
・ファイルアップロード
ファイルからデータをアップロードしていく方法を記していきます。
ex.1直接ファイルアップロード
Dataタブをクリックし、Add Dataボタンをクリックすると上記画面に遷移される。
DBFS配下の任意のフォルダをSelectボタンから、選択していく。
特に指定しない場合は/FileStore/tables/ 配下にアップロードされる。
選択して、ウィンドウを閉じると、自動的にアップロードされる。
Remove fileを押すと、アップロードされたファイルが取り消しされる。
ex.2 S3からファイルアップロード
Create New Tableの画面から、S3タブを選択します。
Create Table with UIボタンを押下します。
クラスターを選択するところで起動しているクラスターを選択します。
その下にあるS3 Bucket Nameの項目にS3バケット名を記載します。
必要項目が設定されましたら、Browse Bucketボタンを押下します。
S3バケットの中にあるファイルを表示してくれます。
そこで、データを取り込みたいファイルを選択します。
Peview Tableボタンが表示されるので、クリックします。
データが読み込まれ、Create Tableボタンが表示されます。
ボタンをクリックすると、テーブルが作成され、Databaseにテーブル、データが追加されます。
上記はデータタブから、S3バケットを参照して、データを読み込んでくるやり方です。
※データタブからデータを読み込むにはテーブルを作成することがデフォルトの設定となっています。
Notebook上で、コマンドを叩いて、S3バケットからデータを読み込んでくるやり方も記載いたします。
- Notebookを開いてs3をマウントする
dbutils.fs.mount("s3a://PoCで使用するバケット名", "/mnt/demo")
display(dbutils.fs.ls("/mnt/demo"))
※マウントが既にされていたら、上記は必要なし。
-
csvファイルを読み込む
df = spark.read.csv("/mnt/demo/読み込みたいファイル") display(df)
読み込んできたファイルの中身がディスプレイ上で表示される。
ex.3 その他システムからファイルアップロード
Create New Tableの画面から、Other Data Sourcesタブを選択します。
Connectorが出てきますので、そこから、データツールを選択します。
Create Table in Notebookボタンを押下します。
Notebookのページに遷移して、テーブル作成の
Notebookが簡易的に作成されます。
Notebookに記載されている必要な設定をして、Runを実行すると、
データがアップロードされます。
更新と削除:
Delta Lakeは、データセットをマージ、更新、削除するためのDML APIを提供します。これにより、GDPR/CCPAに容易に準拠でき、変更データのキャプチャを簡素化できます
テーブルから削除する
述語に一致するデータをデルタテーブルから削除できます。たとえば、2017
以前のすべてのイベントを削除するには、次のコマンドを実行できます。
DELETE FROM events WHERE date < '2017-01-01'
DELETE FROM delta.`/data/events/` WHERE date < '2017-01-01'
重要:
delete
Deltaテーブルの最新バージョンからデータを削除しますが、古いバージョンが明示的にバキュームされるまで、物理ストレージからデータを削除しません。詳細については、バキュームを参照してください。
ヒント:
可能であれば、パーティション化されたDeltaテーブルのパーティション列に述語を指定します。そのような述語は操作を大幅に高速化できるためです。
テーブルを更新する
Deltaテーブルの述語に一致するデータを更新できます。たとえば、のスペルミスを修正するにはeventType
、次のコマンドを実行します。
UPDATE events SET eventType = 'click' WHERE eventType = 'clck'
UPDATE delta.`/data/events/` SET eventType = 'click' WHERE eventType = 'clck'
ヒント
削除と同様に、更新操作はパーティション上の述語を使用して大幅に高速化できます。
以上がDML機能(データ追加/更新/削除)についてでした。
見ていただき、ありがとうございました。
株式会社メソドロジック
川名智士