Дельта только для чтения между 2 версиями deltaLake

Есть ли способ прочитать только дельту между двумя версиями deltaLake? конкретно в синапсе

я пытался

%%pyspark
import delta
from pyspark.sql.functions import col, asc

df_delta = spark.read.format("delta") \
  .option("readChangeFeed", "true") \
  .option("startingVersion", 0) \
  .option("endingVersion", 1) \
  .load("/pathtoDeltaLake")


display(df_delta)

Но вышеприведенное, похоже, читает больше, чем просто разницу между двумя версиями. (в версии 1 добавлена ​​только 1 строка)


person user1324887    schedule 24.05.2021    source источник


Ответы (1)


В настоящее время канал разностных изменений доступен только на модулях Databricks. (и только начиная с конкретной версии среды выполнения), поэтому вы не можете использовать его в Synapse. Параметры readChangeFeed, startingVersion и endingVersion просто игнорируются библиотекой Delta с открытым исходным кодом, которую вы используете в Synapse.

Таким образом, вы либо выполняете этот код на Databricks и пишете как отдельную таблицу, которую можно прочитать из Synapse, либо вы читаете каждую версию в отдельные кадры данных (используя .option("versionAsOf", version)) и используете некоторый код для поиска различий (например, в этот ответ).

person Alex Ott    schedule 24.05.2021