Databricks Delta Masă Fuziona declarație folosind R

0

Problema

Recent am început să lucrez la Databricks și am fost încercarea de a găsi o modalitate de a efectua o îmbinare declarație pe un Delta de masă, deși folosind o R api (de preferință sparklyr). Scopul final este de a cumva să impună un "duplicat" constrângere așa cum este descris aici. În documentația menționată mai sus descrie Python flux de lucru :

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

cu toate acestea, mă întrebam dacă există un mod de a realiza acest lucru printr-R. Orice ajutor/idei pe această temă va fi mult mai apreciat din moment ce eu sunt un utilizator nou (ca mai sus). Multumesc anticipat!

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

Nu există nici un oficial R API pentru Delta Lac, dar puteți folosi doar SQL este FUZIONA ÎNTR - comanda pentru asta (eu de multe ori face în Scala/Python, doar pentru că e mai ușor de citit, cel putin pentru mine). Aveți nevoie pentru a înregistra o temp de vedere cu date pe care doriți pentru a pune în destinație masă, și chiar a alerga sql, cum ar fi acest lucru (string este divizat pentru lizibilitate):

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

Asta e trist, ref la nici un sprijin oficial pentru R Delta Lac API support. Oricum, multumesc mult pentru soluție, și feedback-ul oferit ; în orice caz, pot evita TempView? Cred că nu, corect?
takmers

Puteți teoretic scrie pe disc și de a folosi, dar ar fi mai rău decât temp vedere
Alex Ott

Btw, se pare ca un înveliș pentru R este eliberat, deși nu oficial
Alex Ott
1

Furnizarea de acest răspuns din moment ce ai comentat că nu există nici un R Delta Lac API support. Există acum un nou pachet R, care oferă o R API pentru Delta Lac: dlt. Sintaxa este foarte asemănătoare cu cea a Python API pentru Delta Lac.

În caz de exemplu:

# 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

În alte limbi

Această pagină este în alte limbi

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