【问题标题】:How to identify all columns that have different values in a Spark self-join如何识别 Spark 自联接中具有不同值的所有列
【发布时间】:2022-10-02 13:16:09
【问题描述】:

我有一个金融交易的 Databricks 增量表,它本质上是每条记录上发生的所有更改的运行日志。每条记录由 3 个键唯一标识。因此,鉴于这种唯一性,每条记录在此表中可以有多个实例。每个代表更改的历史条目(跨该记录的一个或多个列)现在,如果我想找出特定列值发生更改的情况,我可以通过执行以下操作轻松实现 ->

SELECT t1.Key1, t1.Key2, t1.Key3, t1.Col12 as \"Before\", t2.Col12 as \"After\" from table1 t1 inner join table t2 on t1.Key1= t2.Key1 and t1.Key2 = t2.Key2 and t1.Key3 = t2.Key3 where t1.Col12 != t2.Col12

但是,这些表有大量的列。我试图实现的是一种识别在这样的自连接中发生变化的任何列的方法。本质上是所有更改的列的列表。我不在乎改变的实际值。只是在所有记录中更改的列名列表。甚至不必是每行。但是这 3 个键将始终被排除在外,因为它们唯一地定义了一条记录。

本质上,我试图找到任何容易改变的列。这样我就可以专注于它们以用于其他目的。

任何建议将不胜感激。

    标签: apache-spark databricks diff self-join delta


    【解决方案1】:

    Databricks 具有更改数据馈送 (CDF / CDC) 功能,可以简化这些类型的用例。 https://docs.databricks.com/delta/delta-change-data-feed.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多