首页 文章

具有默认值的列 - usql

提问于
浏览
1

我正在生成我的usql脚本动态读取表模式 . 我在data lake store上有现有的tsv文件,我需要将新数据附加到那些现有的tsv文件中 . 但是当我生成usql脚本时,表模式可能会发生变化,表可能会添加额外的列 .

据我所知,我们需要在usql脚本中使用与tsv文件中相同数量的列 . 是否可以使这些新添加的列具有一些默认值?例如

@Result =    EXTRACT id string,            
firstname string,            
lastname string,            
department string = "",

emp_id int = 0
    FROM @inputfile
    USING Extractors.Tsv();

如您所见,department和emp_id列是新添加的,我想将它们插入带有一些默认值的输出文件中 . 如果tsv中已存在列,请选取列值,否则为它们插入一些默认值 .

谢谢 .

1 回答

  • 1

    您当前无法将默认列指定为提取语句架构的一部分 . 目前推荐的模式是:

    • 提取TSV版本的右列(确保组织它们以便您轻松知道哪些列存在),然后使用 UNION ALL BY NAME 来合并行集 . 这会将null / default值列添加到缺少列的行集 .

    • 编写一个自定义提取器,它以SqlMap作为参数,用指定的默认值填充缺少的列 .

相关问题