将昨天的数据与今天的数据进行比较



我有两张镶木地板桌子,一张今天用,一张昨天用。我想做的是比较今天表格中发生的变化,例如:

  • 添加了哪些新行
  • 哪些行已被删除以及何时被删除
  • 哪些行已更改

表本身有列"createdAt"one_answers"updatedAt",我可以将它们用于此目的。

我正在使用Databricks/Apache Spark,所以我可以使用它们的内置函数或SQL查询。我不知道该怎么做,任何一般的想法都值得赞赏!

在主表后面保留一个审核表。在主表上执行插入、更新或删除操作时,必须在Audit表中插入数据。审核表应包括主表的createdAt和当前日期戳
如果您使用1,2,3管理事务类型Insert、update或delete,则这将有利于查询性能。

由于我不知道您表的LoadType(full或delta(,我将尝试涵盖这两种情况:-

满载 -为此,您只需要今天的表格,因为它还将包含前几天的所有记录。因此,您只需要设置条件来检查昨天加载后使用updatedAt列修改的所有记录,即updatedAt>昨天的加载日期

增量负载 -对于delta,每天只会得到修改过的记录(新的、更新的或删除的(,因此只需查询今天的表而不需要任何条件就可以了。

现在,在spark方面,由于您有大量的记录,您可以在运行时使用以下内容来操作数据帧分区的数量:-

spark.sql("set spark.sql.shuffle.partitions = 1500");

请在这里找到其他优化技术https://deepsense.ai/optimize-spark-with-distribute-by-and-cluster-by/

最新更新