1

如何使用没有 my_compute_function 的数据集。从存储库中的 file1,我想调用另一个文件中定义的函数。在第二个文件中,我想利用数据集 my_input_integration,可能没有 my_compute_function。如何组合来自两个不同存储库文件的数据集。我不想合并到一个文件中,因为我想将第二个文件用作实用程序文件。如果有人能回答这个问题,那就太好了。

存储库文件 1

from transforms.api import transform, Input, Output


@transform(
    my_output=Output("/my/output"),
    my_input=Input("/my/input"),
)
def my_compute_function(my_input, my_output):
    return calling_function(my_input, my_output)

存储库文件 2

from transforms.api import transform, Input, Output


@transform(
    my_input_integration =Input("/my/input"),
)
def calling_function(my_input, my_output, my_input_integration??)
   
    return my_output.write_dataframe(
        my_input.dataframe(),
        column_descriptions=my_dictionary
    )
4

1 回答 1

4

如果我正确理解您要实现的目标,则不能直接这样做-必须在该转换中定义转换的任何输入,然后将其传递给实用程序函数,您不能“注入”输入.

因此,实现您想要的最直接的方法是执行以下操作:

文件 1:

@transform(
    my_output=Output("/my/output"),
    my_input=Input("/my/input"),
    my_input_integration=Input("/my/input_integration"),
)
def my_compute_function(my_input, my_output, my_input_integration):
    return calling_function(my_input, my_output, my_input_integration)

文件 2:

def calling_function(my_input, my_output, my_input_integration)
    return my_output.write_dataframe(
        my_input.dataframe(),
        column_descriptions=my_dictionary
    )

如果您真的认为您需要自动“注入”数据集的能力,并且将它们作为参数添加到您的转换中会太麻烦,那么可以采用更复杂的方法来定义您应用于转换的自定义包装器使输入数据集自动可用的函数。不过我真的会避免这种情况,因为它给代码增加了很多复杂性和“魔力”,对于新手和普通读者来说,这将是难以理解的。

于 2020-10-13T07:23:37.857 回答