空白行没有来

时间:2017-03-28 15:14:18

标签: u-sql

运行以下代码后,我只获取存在的行,而不是只存在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(); 

2 个答案:

答案 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并得到了这些结果:

My Results with OUTER UNION

注意我已经更改了列的可为空性,否则OUTER UNION会根据the Sep 2016 release notes为.Net类型添加默认值。