【问题标题】:Error while mapping .tsv file data with Azure data warehouse using data factory使用数据工厂将 .tsv 文件数据映射到 Azure 数据仓库时出错
【发布时间】:2020-02-16 09:18:41
【问题描述】:

我想将 .tsv 文件中的表单数据湖中的数据复制到 Azure 数据仓库,但有 2 列属于 date 数据类型,因此我在映射列时遇到问题。因此,我无法加载数据。我只能在需要时使用 u-SQL 活动。

【问题讨论】:

  • 您能向我们展示一下您的 tsv 文件中的一些数据吗? Azure SQL 数据仓库支持date 数据类型,请检查您的tsv 文件中的日期字符串是否正确?请参考Supported string literal formats for date
  • 在 .tsv 中,该列位于字符串中,数据类似于“20100101”,我想将此列映射到数据类型为 date 的数据仓库表
  • 你的错误信息和我一样吗? 'Message=Column '\t'dd'' 包含无效值 '\t'20100101''。无法将 '\t'20100101'' 转换为类型 'DateTime'。您可以编辑您的问题并通过屏幕截图提供更多详细信息。
  • 是的,我遇到了同样的错误,但我尝试使用 u-SQL 活动将该列转换为日期时间,之后我得到的日期类似于“1900-01-01T00:00:00.0000000 " 所以实际上它就像 19000101 但现在即使在那之后我也无法映射列并加载它。另外,我希望日期类似于“1900-01-01”,但我得到的是 datetime2 格式。
  • 请看我的回答,您可以按照我的步骤解决错误。

标签: azure azure-sql-database azure-data-factory azure-data-lake u-sql


【解决方案1】:

我试过并测试过,总是得到错误信息:

"ErrorCode=UserErrorInvalidDataValue,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,
Message=Column 'dd' contains an invalid value '20190101'.,Source=Microsoft.DataTransfer.ServiceLibrary,''Type=System.ArgumentException,Message=String was not recognized as a valid DateTime.Couldn't store <20190101> in dd Column.  Expected type is DateTime.,Source=System.Data,''Type=System.FormatException,Message=String was not recognized as a valid DateTime.,Source=mscorlib,'",
        "failureType": "UserError",
        "target": "Copy_b70"

如果您不想更改 tsv 文件,我建议您使用数据流派生列。它可以帮助将“20100101”数据转换为正确的日期格式。

派生列

将此表达式用于字段列“20100101”:

   add( (substring(Column_2, 1, 4)),'-')+
   add((substring(Column_2, 5, 2)), '-')+
   substring(Column_2, 7, 2)

一切正常。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2020-04-14
    • 2020-06-25
    • 2017-11-02
    • 2020-03-24
    • 2018-11-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多