Живые таблицы Delta - Медленно меняющиеся размеры

Можно ли создать механизм медленно меняющихся измерений с помощью таблиц Delta Live Tables? Я хотел бы реализовать что-то вроде этого https://docs.databricks.com/_static/notebooks/merge-in-scd-type-2.html

Но в документах DLT я обнаружил, что «Обработка обновлений из исходных таблиц, например, слияние и удаление, не поддерживается. Для обработки обновлений см. команду ПРИМЕНИТЬ ИЗМЕНЕНИЯ В» — но https://docs.databricks.com/data- Engineering/delta-live-tables/delta-live-tables-cdc.html это только для CDC, у вас есть идеи для SCD?

2 ответа

DLT теперь поддерживает SCD Type 2 в общедоступной предварительной версии. Узнать об этом и посмотреть примеры можно в этом документе

Слияние поддерживается в DLT, см. пример кода ниже.

      mergeDF1
  .as("merge_tbl1")
  .merge(mergeDF2.as("merge_tbl2"), "merge_tbl1.key = merge_tbl2.key")
  .whenMatched("merge_tbl1.isCurrent = true AND (merge_tbl2.country <> merge_tbl1.country OR merge_tbl2.region <> merge_tbl1.region)")
  .updateExpr(Map(
    "isCurrent" -> "false",
    "endDate" -> "<date>",
  .whenNotMatched()
  .insertExpr(Map(
    "personId" -> "<personId>",
    "personName" -> "<personName>",
    "country" -> "<country>",
    "region" -> "<region>,
    "isCurrent" -> "true",
    "effectiveDate" -> "<date>",
    "endDate" -> "null"))
  .execute()
Другие вопросы по тегам