具有默认值的列 - usql

时间:2017-08-28 12:56:00

标签: u-sql

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

据我所知,我们需要在usc脚本中使用与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 个答案:

答案 0 :(得分:1)

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

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

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