如何在 Palantir Foundry 的 Python 转换中传递数据集元数据,如哈希或时间戳?

How can I pass through dataset metadata, like a hash or timestamp, in a Python Transform in Palantir Foundry?

我希望能够做两件事:

  1. 存储数据集内容的哈希值(这样我就可以决定它是否已更新)。迄今为止,我是通过第二个输出数据集完成此操作的,其中只有一行存储哈希和行数。在我的转换中,我可以读取该输出并将其与当前构建的哈希和行数进行比较,以确定数据是否已更新。这工作正常,但我想尽可能避免使用第二个数据集。

  2. 传递来自上游依赖项的时间戳,以便在下游工作流程中我可以回答“依赖项 X 上次更新时间是什么时候?”

似乎这两个问题都可以通过数据集上的某种键值元数据存储来解决。

你是对的,最直接的方法之一是用时间戳值装饰行,事实上,对于 Foundry 的 Parquet 存储系统,这将使用 Dictionary Encoding 进行编码,a存储重复值的高效机制。

这种方法的问题是您必须为要跟踪的每个更新阶段堆叠一个新列。这在实践中可能会很烦人。

但是,如果您不想将这些数据添加到您的行中,而只想存储您的元数据,您有两个选择,您已经找到了其中之一:

  1. 将元数据存储在单独的数据集中
  2. 将一个 'unused' 文件(可能 .csv.txt)写入您的输出以跟踪此信息

Foundry 不会在输出中考虑您的 .csv.txt 额外文件,如果您正在向它写入标准 DataFrame,因为默认情况下您的模式只会读取 Parquet 文件。这意味着您可以存储这一小段信息而不影响您的输出。如果您查看平台文档,您可以确认可以将 DataFrame 写入输出和您自己的文件。

与第二个输出进行交互可能更简单,但是因为增量转换和模式处理的机制将为您处理,所以我建议您继续进行 1.,就像您现在一样。