U-SQL数据类型转换

时间:2018-07-28 14:46:43

标签: type-conversion u-sql

我的示例数据中有一列包含1或0或“空”。 由于字符串为“ null”,因此我将列的类型声明为字符串。 在下一个操作中,我仅取1&0,并执行SUM(Value),在该错误中我无法从“字符串”转换为“长?”

3 个答案:

答案 0 :(得分:1)

对于解决此问题的另一种方法,您可以执行以下操作。我建议列名称为“金额”:

@ input = 选择 CASE列金额何时“ 0”否终止金额 FROM @extractedFields

@ sum = 选择 SUM(Int32.Parse(金额)) 从@input

通过这种方法,总和的输入将仅考虑元素1和0。

答案 1 :(得分:0)

SUM功能适用于数字类型,因此请尝试类似SUM(ToInt64(VA​​LUE))

答案 2 :(得分:0)

您可以按照here的说明使用和内联函数表达式。这是一个简单的示例:

@input = 
    SELECT * FROM
        ( VALUES
            ( (string)"0" ),
            ( (string)"1" ),
          ( (string)"null")
        ) AS x( yourCol );


@output =
    SELECT y
    FROM
    (
    SELECT (
           (Func<string, int?>)
           (yourString =>
               {
               int yourInt;
               return int.TryParse(yourString, out yourInt) ? (int?) yourInt : (int?) null;
               }
           )
           ) (yourCol) AS y
    FROM @input
    ) AS x
    WHERE y IS NOT NULL;

OUTPUT @output
TO "/output/output.csv"
USING Outputters.Csv();

我的结果:

My results