gpt4 book ai didi

palantir-foundry - 如何在保留已删除行的同时合并增量数据集和快照数据集?

转载 作者:行者123 更新时间:2023-12-04 12:27:24 24 4
gpt4 key购买 nike

我有一个创建两个数据集的数据连接源:

  • 数据集 X(快照)
  • 数据集 Y(增量)

  • 这两个数据集来自同一个来源。数据集 X包含源表中所有行的当前状态。数据集 Y拉取自上次构建以来已更新的所有行。然后将这两个数据集下游合并为数据集 Z与数据集 Z要么是数据集 X或数据集 Y 中每行的最新版本.这使我们既可以进行低延迟更新,又可以保持良好的分区。
    删除源表中的行后,数据集 X 中不再存在这些行但仍然存在于数据集中 Y .
    将这些“已删除”行保留在数据集中的最佳方法是什么 Z ?理想情况下,我还可以快照数据集 Y不会丢失任何“已删除”的行。

    最佳答案

    好问题!据我了解,您需要数据集 Z只有最新的行,包括最新的删除行。 Y 中同时存在更新的行和删除的行.在这种情况下,我建议先联合 YX在一起,以便所有行,包括删除的行都存在于联合数据集中。然后,在日期列上使用窗口函数以获得每一行的最新版本。这是我为此建议的 pyspark 代码的概要:

    from pyspark.sql import Window
    import pyspark.sql.functions as F

    window = Window.partitionBy(primary_keys).orderBy(F.col(date_column).desc())
    Z = X.unionByName(Y) # union to get all columns, including deleted
    Z = Z.withColumn("row_num", F.row_number().over(window)) # rank by date created/updated
    Z = Z.filter(F.col("row_num") == 1).drop("row_num") # keep only the latest version of each row
    请注意,此解决方案无法解决 Y 快照时会发生什么的问题。

    关于palantir-foundry - 如何在保留已删除行的同时合并增量数据集和快照数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69586926/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com