【问题标题】:ADF data flow how to handle empty string when converting to integerADF数据流转换为整数时如何处理空字符串
【发布时间】:2019-08-27 16:44:15
【问题描述】:

当使用 ADF 数据流将数据从一个 sql 表复制到另一个表时,如何处理字符串到整数的转换? 我有一个为空的字段,使用 toInteger() 函数会导致错误。 如果值为 null,我如何告诉表达式不转换?

我看到有一个 if 表达式,但我不确定如何让它正常工作。我尝试使用 iif,但复制仍然失败,因为 toInteger() 函数无法将空字符串转换为整数

iif(DivisionNumber == ' ',0, toInteger(DivisionNumber))

【问题讨论】:

    标签: azure-data-factory


    【解决方案1】:

    空字符串是'',与' ' 不同。您是否尝试过引号之间没有空格?

    希望对你有帮助。

    【讨论】:

    • 我确实尝试了两种方法,但得到相同的消息“列'DivisionNumber'包含无效值''”
    • 这两种情况你都试过了吗?也许你得到了 '' ' ' ' ' ' '... 在这种情况下,你应该尝试 TRIM() 你输入的内容如下:iif(trim(DivisionNumber) == ' ',0, toInteger(DivisionNumber))
    • 感谢您的解决方案,在解决了我自己的数据流错误后,此解决方案也很有效,我将您的解决方案标记为我的问题的答案,因为我不必像 AM07300222 那样满足所有情况推荐。
    【解决方案2】:

    看来我们这里可能有很多情况,在这种情况下使用case()函数可能是更好的选择,试试如下:

    case(DivisionNumber == ' ',0,DivisionNumber == '',0,isNull(DivisionNumber),0,toInteger(DivisionNumber))
    

    值会被0替换,同时包括这些:' ' or '' or null,除此之外将使用toInteger()

    如果有其他情况需要转换,也可以添加到这个脚本中。

    【讨论】:

    • 我也试过这个,但它似乎没有帮助,所以现在想也许我应该花时间弄清楚为什么从 json 到 sql 表的副本没有插入 null 时json 中的值是一个空字符串。
    • 所以这很愚蠢,一旦我的数据流正常工作,这个解决方案也能正常工作,所以谢谢@AM07300222
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2014-09-19
    • 2010-10-13
    相关资源
    最近更新 更多