【问题标题】:Databrick SQL - Insert data to a partitioned tableDatabrick SQL - 将数据插入分区表
【发布时间】:2021-12-25 00:28:49
【问题描述】:

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

tbl1:历史

day sales
2021-01-01 10
2021-01-02 15
2021-01-03 12
2021-01-04 10

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

day sales
2021-01-04 25
2021-01-05 20

tbl1:预期输出:

day sales
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

【问题讨论】:

    标签: sql etl databricks


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-10
        • 1970-01-01
        • 2019-03-02
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2016-12-04
        相关资源
        最近更新 更多