有没有一种方法可以对2个数据帧进行真正的sql类型合并

时间:2019-01-16 18:32:24

标签: pandas dataframe pyspark-sql azure-databricks

对于初学者,我会承认我对与它们仅工作了几个月的数据框/数据砖很陌生。

我有两个从镶木地板文件中读取的数据帧(完整格式)。在查阅文档时,似乎在熊猫中称为合并的实际上只是一个联接。

在SQL中,我将此步骤编写为:

 ml_RETURNS_U = sqlContext.sql("""
  MERGE INTO U2 as target
    USING U as source
    ON (
        target.ITEMNUMBER = source.ITEMNUMBER
        and target.PRODUCTCOLORID = source.PRODUCTCOLORID
        and target.WEEK_ID = source.WEEK_ID
        )
    WHEN MATCHED THEN
      UPDATE SET target.RETURNSALESQUANTITY = target.RETURNSALESQUANTITY + source.QTY_DELIVERED
    WHEN NOT MATCHED THEN
      INSERT (ITEMNUMBER, PRODUCTCOLORID, WEEK_ID, RETURNSALESQUANTITY)
      VALUES (source.ITEMNUMBER, source.PRODUCTCOLORID, source.WEEK_ID, source.QTY_DELIVERED)
""")

运行此命令时,出现以下错误:u'MERGE目标仅支持Delta源。\ n;'

所以我有两个问题:有没有办法使用pandas或pySpark执行此操作?

如果没有,我该如何解决此错误?

1 个答案:

答案 0 :(得分:0)

您可以使用DELTA创建表并执行此操作

请参阅:https://docs.databricks.com/delta/index.html

因此,您可以使用https://docs.databricks.com/delta/delta-batch.html#write-to-a-table

这样的合并进行upsert