R kullanarak Databricks Delta Tablo Birleştirme deyimi

0

Soru

Yakın zamanda Databricks üzerinde çalışmaya başladım ve bir R apı (tercihen sparklyr) kullanmama rağmen bir Delta tablosunda bir birleştirme ifadesi gerçekleştirmenin bir yolunu bulmaya çalışıyorum. Nihai amaç, burada açıklandığı gibi bir şekilde 'yinelenen' bir kısıtlama getirmektir. Yukarıda belirtilen belgelerde Python iş akışı açıklanmaktadır :

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

bununla birlikte, bunu R ile başarmanın doğrudan bir yolu olup olmadığını merak ediyordum.Konuyla ilgili herhangi bir yardım/fikir, yeni bir kullanıcı olduğum için (yukarıda belirtildiği gibi) çok takdir edilecektir. Şimdiden teşekkürler!

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

Delta Gölü için resmi bir R API'si yoktur, ancak bunun için Sql'in MERGE İNTO komutunu kullanabilirsiniz (çoğu zaman Scala/Python'da yaparım, çünkü en azından benim için okunması daha kolaydır). Hedef tabloya koymak istediğiniz verilerle geçici bir görünüm kaydetmeniz ve yalnızca çalıştırmanız gerekir sql bunun gibi (dize okunabilirlik için bölünmüştür):

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

Bu üzücü, R Delta Lake API desteği için resmi destek yok. Her neyse, sağlanan çözüm ve geri bildirim için çok teşekkürler; Her durumda Tempview'den kaçınabilir miyim? Sanırım değil, değil mi?
takmers

Teorik olarak diske yazabilir ve kullanabilirsiniz, ancak geçici görünümden daha kötü olur
Alex Ott

Btw, resmi olmasa da, R için bazı sarmalayıcılar serbest bırakılmış gibi görünüyor
Alex Ott
1

R Delta Lake API desteği olmadığını belirttiğinizden beri bu cevabı sağlamak. Şimdi Delta Lake: dlt için bir R API sağlayan yeni bir R paketi var. Sözdizimi, Delta Gölü için Python API'sine çok benzer.

Örneğiniz söz konusu olduğunda:

# 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

Diğer dillerde

Bu sayfa diğer dillerde

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