Databricks Delta表合并发言中使用的R

0

的问题

我们最近开始工作Databricks和我一直试图找到一种方式执行合并声明,在三角洲的表格,虽然使用R api(最好sparklyr). 最终的目的是以某种方式强加一个'重复'约束所描述的 在这里. 上述文件描述了蟒蛇的工作流程:

deltaTable.alias("logs").merge(
    newDedupedLogs.alias("newDedupedLogs"),
    "logs.uniqueId = newDedupedLogs.uniqueId") \
  .whenNotMatchedInsertAll() \
  .execute()

但是,我想知道是否有直接的方式来实现这一过R.任何援助/想法,对该问题将非常感激,因为我是一个新的用户(如上所述). 在此先感谢!

databricks delta-lake duplicates r
2021-11-23 14:03:15
2
1

没有官方R API for三角洲湖,但你只能使用SQL的 合并到 的命令是(我常常做这类/蟒蛇,只是因为它的更易于阅读,至少对我)。 你需要注册一个临时观的数据,你想要投入的目的地表,并就跑 sql样本(string分为便于阅读):

library(SparkR)
updates_df <- ...get updates...
createOrReplaceTempView(updates, "updates")
result <- sql(
  "MERGE INTO <your_table> AS target USING updates 
   ON target.id = updates.id WHEN NOT MATCHED THEN INSERT *")
2021-11-23 16:56:28

这是可悲的,ref没有官方支持R三角洲湖API支持。 无论如何,谢谢你的解决方案和提供的反馈;任何情况下,我可以避免的TempView? 我想不会,正确吗?
takmers

你在理论上可以写下来盘,并使用它,但是它将比临时看
Alex Ott

顺便说一句,它看起来像某些包装R被释放,虽然没有正式
Alex Ott
1

提供的这个答案,因为你评论说,没有R三角洲湖API支持。 现在有一个新R包,提供了一个R API for三角洲湖: 外观设计法. 该法非常相似的蟒蛇API for三角洲湖泊。

在这种情况的例子:

# Install and laod the `dlt` package
remotes::install_gitlab("zero323/dlt")
library(dlt)
...

# Use the Delta Lake R API from the dlt package
deltaTable <- dlt_for_path("<path to table>")

deltaTable %>%
  dlt_alias("logs") %>%
  dlt_merge(alias(newDedupedLogs, "newDedupedLogs"), expr("newDedupedLogs.uniqueId = logs.uniqueId")) %>%
  dlt_when_not_matched_insert_all() %>%
  dlt_execute()
2021-11-27 18:23:06

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................