如何在Azure数据工厂中动态更改复制活动中的数据类型

7y4bm7vi  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(114)

这里我从Oracle数据库复制到Parquet,这里我找不到任何选项来更改数据类型,因为导入模式检测到日期列为INT96。那么如何更改回日期列?

ctehm74n

ctehm74n1#

AFAIK,在 parquet 文件中,DateTimeOffset仅表示Int_96类型。这就是为什么它检测的类型为Int96
这里的例子我复制下面的SQL表与日期数据到一个 parquet 文件相同的模式。

当我在复制活动中导入源和接收器的Map时,你可以看到我得到了相同的Map。

但是,当我们看到INT_96的符号时,它是日期时间符号。这意味着当数据复制到parquet文件时,源的日期时间类型数据将被复制到日期时间类型(即parquet类型中的INT_96)。
我可以在这里复制没有任何问题。

当我在复制活动中交换源数据集和接收数据集时,它将其识别为Date类型。

此行为可能是由于Parquet文件类型的性质。但它表明,当您在任何源中使用目标Parquet文件时,它将被识别为仅日期类型,这是您所需的类型。
当sink是parquet时,您可以在Pipeline JSONMap中看到该列的date类型。

那么如何改回日期列呢?
如果你想改变,你可以编辑physicalTypeINT_96到Pipeline JSONMap中的日期。

修改管道JSON后的Map:

(Or)你可以在ADF中使用数据流来改变数据类型。在数据流中使用Cast转换。

相关问题