【问题标题】:U-SQL Text Extractor IntegerU-SQL 文本提取器整数
【发布时间】:2019-06-27 16:27:52
【问题描述】:

我需要从文件中提取数据,请参见下面的代码。

@rows =
EXTRACT booking_date string,
        route string,
        channel string,
        pos string,
        venta string,
        flight_date string,
        ancillary string,
        paxs int?
FROM "/ventas/ventas1.csv"
USING Extractors.Text(delimiter:';', silent:true);

@output =
    SELECT booking_date,
           channel,
           Convert.ToDouble(venta.Replace(",", ".")) AS venta,
           paxs
    FROM @rows;

我的问题是数字是西班牙语格式,意思是“100,234”而不是“100.234”。 有谁知道如何更改 Extractors.Text 中的格式,或者如何在 U-SQL 中将字符串转换为整数?

【问题讨论】:

    标签: u-sql


    【解决方案1】:

    将列作为字符串导入并替换句号,例如:

    @input =
        EXTRACT venta string,
                paxs int
        FROM @inputFile
        USING Extractors.Text(delimiter : ';');
    
    
    @output =
        SELECT Convert.ToInt32(venta.Replace(".", "")) AS venta
        FROM @input;
    

    【讨论】:

    • 嗨,venta.Replace(".","") 会改为:Decimal.Parse("100,234".Replace(",", ".")) AS venta 吗?确保逗号替换为句号并转换为小数?
    • 嗨,亚历克斯,我将他们(诚然)有点困惑的注释解释为,整数数据在带有句号的平面文件中,这是西班牙语的逗号等价物,以及他们试图做什么将其导入为 decimal 并将其转换为 int。我的建议是,将其导入为 string,然后将其转换为 int。我在脚本中添加了Convert.ToInt32 以明确这一点。有意义吗?
    • 很酷,我可以看到它是如何被这样解释的,而你的解释是有道理的。我把它解释为“100,234”应该是十进制的“100.234”,我可能误解了:-),让我们等待JSI的反馈。
    • 从经验来看,JSI 不太可能再次检查这里 :)
    • 计算表达式时出现消息错误 Convert.ToDecimal(venta.Replace(",", "."))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多