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

在转换函数中更改输出数据集路径

如何解决在转换函数中更改输出数据集路径

我们可以在my_compute_function中动态更改输出数据集路径,如下所示

from transforms.api import transform,Input,Output


@transform(
  my_output=Output("/path/to/my/dataset"),my_input=Input("/path/to/input"),)
def my_compute_function(my_output,my_input):
  **my_output.path = "new path"**
  my_output.write_dataframe(
    my_input.dataframe()
  )

解决方法

否,这是不可能的。原因是输入/输出/转换固定为“ CI时间”或“构建时间”。当您在“创作”中按“提交”或合并PR时,CI作业将启动。

在此CI作业中,确定了输入和输出之间的所有关系。创建尚不存在的输出数据集,并向其中添加“ jobspec”。 “ jobspec”是JSON的一小段,向代工厂描述了如何生成特定数据集。

每当您按下数据集上的“构建”按钮(或通过时间表或类似方法构建数据集)时,都会查阅jobspec。它包含对构建此数据集的功能的存储库,修订版,源文件和入口点的引用。从那里开始构建并开始构建,调用您的函数以产生最终输出。

通过这种机制,您可以看到整个管道的“静态视图”,然后可以使用Monocle对其进行可视化,如您所见。

Notional monocle example

根据您的需求,可以使用以下一些解决方案:

  • 以某种方式标记要在转换中生成的行,以便即使将它们放入单个数据集中,也可以稍后通过此标记/类别选择它们。
  • 如果类别集不经常更改,则可以提前创建输出数据集,然后将行过滤到应放入的适当数据集中。

后一种方法的主要缺点是它不是很动态,因此,如果出现一个新类别,则必须手动更改代码以将其“分类”到新的数据集中,直到数据可用为止。

还有其他解决方案(例如,最终可以进行API调用并手动调整输入/输出),但是从维护的角度来看,它们更加复杂且不受欢迎。

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