繁体   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