微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Palantir Foundry中使用配置文件生成动态文件

如何解决如何在Palantir Foundry中使用配置文件生成动态文件

我在配置文件col1和col2中有两列。

enter image description here

现在,我必须在主python转换中导入此配置文件,然后提取列的值,以便通过遍历所有可能的值从这些值创建动态输出路径。

例如 ouput_path1 =常量+值1+值2

ouput_path2 =常量+值3+值4

请提出一些在palantirfoundary(code-repo)中生成输出文件解决方

解决方法

您可能要使用的是转换生成器。在文档的“ Python转换”一章中,有一个“转换生成”部分,概述了此基础。

最直接的路径可能会生成多个变换,但是如果您只想将一个变换输出到多个数据集,那也是可能的(如果稍微复杂一点)。

对于前一种方法,您将在存储库中添加.yaml文件(或类似文件),在其中定义您的值,然后读取.yaml文件并根据这些值生成多个转换。该文档提供了一个几乎可以完成此操作的示例。

对于后一种方法,您可能希望读取管道定义器中的.yaml文件,然后将输出动态添加到单个转换中。然后,在您的转换代码中,您需要能够以某种方式处理任意数量的输出(我想您有一个计划。)我怀疑您可能需要为此进行手动转换注册,否则您可能需要不使用装饰器而构造一个transforms对象。如果这是您需要的解决方案,我可以为您构建一个示例。

但是,在继续进行此操作之前,我要注意输入和输出的数量固定为“ CI-time”或“ compile-time”。当您在创作中按“提交”按钮(或合并PR)时,此时将运行代码以生成转换/输出。稍后,当您构建实际的数据集(即运行转换)时,不可能添加/删除输入,输出和转换。

因此,要更改输入/输出/转换的数量,您需要转到存储库,修改.yaml文件(或选择使用的任何文件),然后按确认按钮。这将导致CI检查运行并发布新代码,包括可能在此过程中生成的任何新转换。

如果这对您不起作用(例如,您想在数据集构建时决定要生成的输出),则必须从根本上重新考虑您的方法。否则,您应该对我上面概述的两种解决方案之一感到满意。

,

您不能以编程方式基于其他数据集的内容创建转换。这些数据集是在CI时间创建的。

但是,您可以在代码存储库中包含一个常量文件,该文件可以在CI时间读取,并使用该文件生成转换。即:

myconfig.py:
dataset_pairs = [
  {
    "in": "/path/to/input/dataset,"out": "/path/to/output/dataset,},{
    "in": "/path/to/input/dataset2,"out": "/path/to/output/dataset2,# ...
  {
    "in": "/path/to/input/datasetN,"out": "/path/to/output/datasetN,]

///////////////////////////
anotherfile.py
from myconfig import dataset_pairs

TRANSFORMS = []
for conf in dataset_pairs:
  @transform_df(Output(conf["out"]),my_input=Input(conf["in"]))
  def my_generated_transform(my_input)
     # ...
     return df

  TRANSFORMS.append(my_generated_transform)

要再次重申,您不能基于数据集的内容以编程方式创建config.py,因为运行此代码时,它是在CI时间,因此它无权访问数据集。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。