具有默认值的列 - usql
Columns with default values - usql
我正在生成动态读取 table 模式的 usql 脚本。我在数据湖存储中存在现有的 tsv 文件,我需要将新数据附加到那些现有的 tsv 文件。
但是当我生成 usql 脚本时,table 架构可能会发生变化并且 table 可能会添加额外的列。
据我所知,usql 脚本中的列数需要与 tsv 文件中的列数相同。
是否可以让这些新添加的列具有一些默认值?
例如
@Result = EXTRACT id string,
firstname string,
lastname string,
department string = "",
emp_id int = 0
FROM @inputfile
USING Extractors.Tsv();
如您所见,部门和 emp_id 列是新添加的,我想将它们插入到带有一些默认值的输出文件中。
如果列已经存在于 tsv 中,则选择列值,否则为它们插入一些默认值。
谢谢。
您目前无法将默认列指定为提取语句架构的一部分。目前推荐的模式是:
提取 TSV 版本的正确列(确保将它们组织好,以便您轻松知道存在哪些列),然后使用 UNION ALL BY NAME
合并行集。这会将 null/default 值的列添加到缺少列的行集中。
编写一个以 SqlMap 作为参数的自定义提取器,以使用指定的默认值填充缺失的列。
我正在生成动态读取 table 模式的 usql 脚本。我在数据湖存储中存在现有的 tsv 文件,我需要将新数据附加到那些现有的 tsv 文件。 但是当我生成 usql 脚本时,table 架构可能会发生变化并且 table 可能会添加额外的列。
据我所知,usql 脚本中的列数需要与 tsv 文件中的列数相同。 是否可以让这些新添加的列具有一些默认值? 例如
@Result = EXTRACT id string,
firstname string,
lastname string,
department string = "",
emp_id int = 0
FROM @inputfile
USING Extractors.Tsv();
如您所见,部门和 emp_id 列是新添加的,我想将它们插入到带有一些默认值的输出文件中。 如果列已经存在于 tsv 中,则选择列值,否则为它们插入一些默认值。
谢谢。
您目前无法将默认列指定为提取语句架构的一部分。目前推荐的模式是:
提取 TSV 版本的正确列(确保将它们组织好,以便您轻松知道存在哪些列),然后使用
UNION ALL BY NAME
合并行集。这会将 null/default 值的列添加到缺少列的行集中。编写一个以 SqlMap 作为参数的自定义提取器,以使用指定的默认值填充缺失的列。