0

首先,我承认我对 dataframes/databricks 只使用了几个月就很陌生。

我有两个从镶木地板文件(完整格式)中读取的数据框。在查看文档时,似乎 pandas 中所谓的合并实际上只是一个连接。

在 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 destination only supports Delta sources.\n;'

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

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

4

1 回答 1

0

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

见:https ://docs.databricks.com/delta/index.html

因此,您可以像这样使用合并进行更新插入:https ://docs.databricks.com/delta/delta-batch.html#write-to-a-table

于 2019-01-17T16:06:40.150 回答