数据集1和数据集2具有相同的列名但描述不同。在数据集1转换中,我会说我正在处理数据集1,因此它必须优先考虑该数据集1的特定描述。如果要对另一个数据集进行转换,则希望优先考虑该数据集。有没有办法填充特定于数据集的列描述?
例如,my_compute_function
中的参数可以通过一种方式传递必须赋予优先级的数据集名称
列1,数据集1 {数据集1名称}的列描述。
列1,数据集2 {Dataset 2 name}的列描述,
...
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):
my_output.write_dataframe(
my_input.dataframe(),
column_descriptions={
"col_1": "col 1 description"
},
???
)
答案 0 :(得分:1)
执行此操作的一种方法是为所有数据集提供“替代字典”,其中特定于数据集的描述可能优先。
即你有:
from transforms.api import transform, Input, Output
GENERAL_DESCRIPTIONS = {
"col_1": "my general description"
}
LOCAL_DESCRIPTIONS = {
"/path/to/my/dataset": {
"col_1": "my override description"
}
}
@transform(
my_output=Output("/path/to/my/dataset"),
my_input=Input("/path/to/input"),
)
def my_compute_function(my_output, my_input):
local_updates = LOCAL_DESCRIPTIONS.get(my_output.path, {})
local_descriptions = GENERAL_DESCRIPTIONS.copy()
local_descriptions.update(local_updates)
my_output.write_dataframe(
my_input.dataframe(),
column_descriptions=local_descriptions
)
然后,您可以将GENERAL_DESCRIPTIONS
放在模块的根目录中,并在每个转换.py
文件的顶部用“本地”描述覆盖。您甚至可以将“本地”描述放在一组转换之上,这样就不必检查每个文件来指定替代。
更新描述字典的最精细的方法是:
...
GENERAL_DESCRIPTIONS = {
"col_1": "my general description"
}
LOCAL_DESCRIPTIONS = {
"col_1": "my override description"
}
...
def my_compute_function(my_output, my_input):
local_descriptions = GENERAL_DESCRIPTIONS.copy()
local_descriptions.update(LOCAL_DESCRIPTIONS)
...