【问题标题】:Azure Data Factory Unable to convert string column value to DatetimeAzure 数据工厂无法将字符串列值转换为日期时间
【发布时间】:2020-12-31 20:58:38
【问题描述】:

我正在使用现有的 ADF 管道将数据从 blob 复制到 sql。我的源数据有一个像“20000101”这样的列值。当 ADF 尝试将其从字符串转换为 dateTime 格式时出现错误。我正在使用像“dateTimeFormat”这样的json翻译器:“yyyy-MM-dd HH:mm:ss.fff”。但最终仍然出现错误,因为“将值 '20000101' 转换时发生异常无法将字符串转换为日期时间类型。

有什么建议吗?

注意:我只能通过 json 映射来处理这个问题。无法编辑现有管道。这里有什么可能吗?

【问题讨论】:

  • '20000101',yyyy='2000',01=MM and 01='dd'的数据格式是什么?
  • @LeonYue 是的,正确
  • 源文件是什么,csv还是txt?可以使用数据流吗?它可以实现,我将向您展示步骤。
  • @LeonYue 这个得通过拷贝数据来实现。数据源将是本地 NFS。所以我们不能直接将本地数据集映射到数据流。现在出于测试目的,数据在 blob 中。是的,源文件是 txt
  • 如果您可以在复制数据中将本地 NFS 设置为源,数据流也应该支持它作为源。仅在激活复制数据的情况下,我们无法做到这一点。我们需要进行数据转换,例如将'20000101'转换为'2000-01-01'。数据工厂无法直接将“20000101”转换为日期。

标签: azure azure-data-factory


【解决方案1】:

无论 blob 中的数据还是本地 NFS 中的数据,数据工厂副本活动都无法将“20000101”转换为日期时间。甚至我们将其设置为 DateTime 列。

"errorCode": "2200",
    "message": "ErrorCode=TypeConversionFailure,Exception occurred when converting value '20000101' for column name 'dd' from type 'String' (precision:, scale:) to type 'DateTime' (precision:, scale:). Additional info: String was not recognized as a valid DateTime."

为此,我们必须在数据流中进行一些数据转换与DerivedColumn

表达式:

toTimestamp(toDate(concat(substring(dd,0, 4), '-',substring(dd,5, 2),'-',substring(dd,7, 2))))

那么它可能会映射到您的接收器表。

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2019-03-14
    • 2015-04-25
    相关资源
    最近更新 更多