U-SQL:如何处理模式变化?
U-SQL: how to deal with schema changes?
我原来的脚本是这样的:
@input = EXTRACT A string, B string, C string,
year string, month string, day string, filename string
FROM @folder + "/{year}/{month}/{day}/{filename}.csv"
USING Extractors.Csv(skipFirstNRows : 1);
@input = SELECT A, B, C FROM @input;
OUTPUT @input
TO @parent + "/testtest.csv"
USING Outputters.Csv(outputHeader : true);
这工作正常,但有时源文件的架构(列)可能会更改。这些列可能会变成 A、B、C、D 或 A、B、E。
我知道 Visual Studio 可以生成 EXTRACT 脚本。有没有办法让U-SQL(或Visual Studio)处理这个并动态自动生成提取脚本?
Csv 提取器不允许架构更改。
如果您更改架构,您将需要更改您的 u-sql 代码!
解决方案是创建一个自定义提取器来完成您的工作,或者您可以检查允许灵活列架构的灵活提取器。
我原来的脚本是这样的:
@input = EXTRACT A string, B string, C string,
year string, month string, day string, filename string
FROM @folder + "/{year}/{month}/{day}/{filename}.csv"
USING Extractors.Csv(skipFirstNRows : 1);
@input = SELECT A, B, C FROM @input;
OUTPUT @input
TO @parent + "/testtest.csv"
USING Outputters.Csv(outputHeader : true);
这工作正常,但有时源文件的架构(列)可能会更改。这些列可能会变成 A、B、C、D 或 A、B、E。
我知道 Visual Studio 可以生成 EXTRACT 脚本。有没有办法让U-SQL(或Visual Studio)处理这个并动态自动生成提取脚本?
Csv 提取器不允许架构更改。 如果您更改架构,您将需要更改您的 u-sql 代码!
解决方案是创建一个自定义提取器来完成您的工作,或者您可以检查允许灵活列架构的灵活提取器。