![](/img/trans.png)
[英]Accessing Delta Lake Table in Databricks via Spark in MLflow project
[英]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 表。
#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.