【问题标题】:Is there a way to populate column descriptions specific to data set?有没有办法填充特定于数据集的列描述?
【发布时间】:2020-10-23 22:52:04
【问题描述】:

数据集 1 和数据集 2 具有相同的列名但不同的描述。在数据集 1 转换中,我会说我正在处理数据集 1,因此它必须优先考虑该数据集 1 的特定描述。如果我正在对另一个数据集进行转换,我想优先考虑该数据集。有没有办法填充特定于数据集的列描述?

例如,my_compute_function 中的参数有没有办法传递必须优先考虑的数据集名称 Column1,数据集 1 的列描述,{Dataset 1 name}。 Column1,数据集 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"
        },
         ???  
    )

【问题讨论】:

    标签: palantir-foundry foundry-code-repositories foundry-python-transform


    【解决方案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)
      ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2020-05-14
      • 2020-01-28
      • 2017-12-27
      • 2011-05-21
      • 1970-01-01
      • 2019-09-04
      相关资源
      最近更新 更多