【问题标题】:Azure Data Factory, Copy Data, Teradata ODBC , dateTime timestamp mappingAzure 数据工厂、复制数据、Teradata ODBC、日期时间时间戳映射
【发布时间】:2021-03-13 09:23:57
【问题描述】:

我们正在使用 ODBC 连接器将 Azure Sql Server 的 ADF 复制活动实施到本地 Teradata。 我们无法为 DateTime > Timestamp6 列进行映射,并且在测试时会出现各种错误。 (由于改变了源格式) 源查询已被转换/转换为各种格式到中间 Blob 文件中。

演员/转换是:

* convert(varchar(26), EventUtcTimeStamp,121) EventUtcTimeStamp //"2020-11-03 12:01:21.928294"
* convert(varchar(19), EventUtcTimeStamp,121) EventUtcTimeStamp //"2020-11-03 12:01:21"
* cast(DATEDIFF(s, '1970-01-01 00:00:00.000', eventUtcTimeStamp) as bigint) * 1000 eventUtcTimeStamp //1604404881000

Blob 文件是第二个 Copy 活动的源,其中目标是 teradata 表。这会生成各种 ErrorCode=TypeConversionFailure 的。

我们怀疑原因是接收器映射到 teradata,因为它不能从 DateTime 更改。 Blob 文件看起来没问题。 如果可能的话,任何人都遇到过这种情况并知道如何对其进行调整以使其正常工作?

Copy Activity

Sink Mapping Teradata

【问题讨论】:

  • 您的第一个示例当然看起来像时间戳 (6)。如果您尝试将其移动到 teradata 上的 varchar 列会发生什么情况,它是什么样的?
  • 将它移动到 varchar 列工作得很好,它只是失败的时间戳。
  • 只是添加它在 teradata varchar 列中的外观:'2020-03-09 10:27:04.143333'
  • 既然您在源端应用了 CONVERT,那么接收器映射不应该将中间 Blob 文件中的字段描述为字符串而不是日期时间吗?
  • 当您尝试将其插入时间戳(6)字段时遇到什么错误? @Fred,Teradata 会不会在这里进行隐式转换?

标签: timestamp odbc teradata azure-data-factory


【解决方案1】:

因此,似乎不完全支持以 Teradata 作为目标的 ODBC 接收器。

我们通过创建一个仅包含 varchar 列和一些存储过程/触发器的 ODBC Teradata“暂存”表来解决这个问题,以将其移动到实际列中。

引用here

我得到了产品团队的确认,数据工厂可以识别 本文档中的日期格式。如今,作为接收器的 Teradata 已不再 数据流中支持尚未在加载前将其转换为日期时间 入水槽。所以,不幸的是,如果没有,这是不可能的 今天在水槽修改。

我建议在反馈论坛中提交一个想法 由数据工厂产品团队监控,并将在 未来的版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2020-08-13
    • 2012-01-21
    • 1970-01-01
    • 2022-12-01
    • 2020-04-14
    • 2021-03-01
    相关资源
    最近更新 更多