簡體   English   中英

如何將新的增量數據(保留舊記錄)插入源雪花表中的增量湖表 azure 數據塊表

[英]how to insert the new incremental data(keeping old records) into delta lake table azure databricks table from Source snowflake table

我正在嘗試將數據從雪花表增量插入 azure databricks delta Lake 表。

三角洲湖的雪花表數據和預期輸出

現有表數據

id 姓名 工資 部門 地址 createdate updateddate enddate
1 aaa 5000 制葯美國 08-23-2022 01-01-9999 01-01-9999
2 bbb 6000 機械英國 08-23-2022 01-01-9999 01-01-9999
3 ccc 7000 制葯 singpare 08-23-2022 01-01-9999 01-01-9999

添加到表中的新數據

id 姓名 工資 部門 地址 createdate updateddate enddate
1 AA 5000 制葯 德國 08-24-2022 01-01-9999 01-01-9999
4 fff 8000 IT 芬蘭 08-24-2022 01-01-9999 01-01-9999

表中的預期數據

id 姓名 工資 部門 地址 createdate updateddate enddate
1 aaa 5000 Pharma 美國 08-23-2022 08-24-2022 08-24-2022
2 bbb 6000 機械英國 08-23-2022 01-01-9999 01-01-9999
3 ccc 7000 制葯 singpare 08-23-2022 01-01-9999 01-01-9999
1 AA 5000 制葯 德國 08-24-2022 01-01-9999 01-01-9999
4 fff 8000 IT 芬蘭 08-24-2022 01-01-9999 01-01-9999

嘗試使用 INSERT 語句。 如果您的數據以 dataframe 的形式存儲在 memory 中,則使用以下命令創建臨時視圖:

snowflakedf.createOrReplaceTempView("<ALIAS>")

然后

INSERT INTO <EXISTING_TABLE_NAME> (id,name,salary,dept,address,createdate,updateddate,enddate)
SELECT * FROM <ALIAS>

有關它如何工作的更多信息,請查看:

https://docs.databricks.com/sql/language-manual/sql-ref-syntax-dml-insert-into.html

您可以使用MERGE將數據從Snowflake 表增量加載到 Databricks delta Lake 表

  • 首先使用使用雪花表數據加載的 dataframe 創建一個視圖。
  • 現在使用您的 delta Lake 位置在數據塊(如果不存在)中創建您的 delta Lake 表。
  • 創建一個 MERGE 語句,允許您指定匹配和不匹配時要執行的操作。
  • 您可以使用以下代碼進行必要的修改來增量加載數據。
#create view with snowflake table data loaded into dataframe
df.createOrReplaceTempView("input_snowflake_df")

#create delta table if not exists
spark.sql("create table if not exists my_delta using delta location '<delta lake location>'")
%sql

-- change the condition, matched and not matched operations as required 
-- the following is just an example for demonstration.

MERGE into my_delta as d USING input_snowflake_df as ip
ON d.id = ip.id and d.cols = ip.name  
WHEN MATCHED THEN
   update set d.id=ip.id
WHEN NOT MATCHED THEN
   INSERT (d.id,d.cols) values (ip.id,ip.name)

以下是我的 output 圖像用於演示:

  • 雪花表數據加載到 dataframe 並創建一個臨時視圖。在此處輸入圖像描述

  • 增量表中的現有數據。在此處輸入圖像描述

  • 合並后:在此處輸入圖像描述

你可以參考這個微軟官方文檔,通過幾個例子來了解更多關於 MERGE 語句的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM