[英]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 into
和insert 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 。
不确定,你的表格格式是什么。 但如果您的表是Parquet
或delta
格式,则处理这种情况非常简单。 你可以参考链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.