繁体   English   中英

Databrick SQL - 将数据插入分区表

[英]Databrick SQL - Insert data to a partitioned table

我有一个关于将增量数据插入到分区表的最佳实践的问题。 目前我有一个按天分区的历史表,我有另一个 sql,它用最近两天的数据生成同一个表。 这是一个示例历史表和增量表 -

tbl1:历史

销售量
2021-01-01 10
2021-01-02 15
2021-01-03 12
2021-01-04 10

tbl2:增量表(截至 2021 年 1 月 6 日)

销售量
2021-01-04 25
2021-01-05 20

tbl1:预期输出:

销售量
2021-01-01 10
2021-01-02 15
2021-01-03 12
2021-01-04 25
2021-01-05 20

我尝试insert intoinsert overwrite ,但似乎insert into不会替换现有的 1/4 数据,但会添加额外的行并创建重复项,而insert overwrite将删除 1/1 到 1/3 的所有数据。

我写的示例代码: INSERT INTO tbl1 PARTITION (day) SELECT * FROM tbl2

INSERT OVERWRITE 重写整个表或分区,但它适用于许多文件格式。 因此,要使用 INSERT OVERWRITE 进行 upsert,您必须首先将新数据与现有数据 LEFT JOIN,然后使用它来替换分区。

如果您使用 Delta,则可以改为MERGE

不确定,你的表格格式是什么。 但如果您的表是Parquetdelta格式,则处理这种情况非常简单。 你可以参考链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM