运行以下代码后,我只获取存在的行,而不是只存在ID的行。
提取文件是否有问题。
DROP VIEW IF EXISTS dbo.Consolidated;
CREATE VIEW IF NOT EXISTS dbo.Consolidated
AS
EXTRACT Statement
FROM "adl:///2016/08/12/File_name.csv"
USING Extractors.Csv(silent : true, quoting : true, nullEscape : "/N");
@Temp =
SELECT *
FROM Consolidated;
OUTPUT @Temp
TO "adl://arbit/new_cont_check.csv"
USING Outputters.Csv();
答案 0 :(得分:2)
所以你的列数有所不同?如果是,请尝试使用用户定义的提取器。可以在@ Using User-Defined Extractor - FlexExtractor看到用户定义的提取器的示例,其中列数变化。
答案 1 :(得分:1)
您已将silent: true
参数添加到USING
子句中,这意味着EXTRACT
不会失败,甚至会抱怨行是否与您的架构定义完全匹配。这是预期的行为,可能是您对此示例的要求。要获取其他行,您可以使用OUTER UNION
,例如this recent example:
与您类似的另一个工作示例:
@input =
EXTRACT ControllerID int?,
ParameterID int?,
MeasureDate DateTime,
Value float
FROM "/input/input56.csv"
USING Extractors.Csv(silent : true, quoting : true, nullEscape : "/N", skipFirstNRows : 1)
OUTER UNION ALL BY NAME ON ( ControllerID )
EXTRACT ControllerID int?
FROM "/input/input56.csv"
USING Extractors.Csv(silent : true, quoting : true, nullEscape : "/N", skipFirstNRows : 1);
OUTPUT @input
TO "/output/output.txt"
USING Outputters.Tsv(quoting : false);
我使用了这个sample file并得到了这些结果:
注意我已经更改了列的可为空性,否则OUTER UNION
会根据the Sep 2016 release notes为.Net类型添加默认值。