这里我从Oracle数据库复制到Parquet,这里我找不到任何选项来更改数据类型,因为导入模式检测到日期列为INT96。那么如何更改回日期列?
ctehm74n1#
AFAIK,在 parquet 文件中,DateTimeOffset仅表示Int_96类型。这就是为什么它检测的类型为Int96。这里的例子我复制下面的SQL表与日期数据到一个 parquet 文件相同的模式。
DateTimeOffset
Int_96
Int96
当我在复制活动中导入源和接收器的Map时,你可以看到我得到了相同的Map。
但是,当我们看到INT_96的符号时,它是日期时间符号。这意味着当数据复制到parquet文件时,源的日期时间类型数据将被复制到日期时间类型(即parquet类型中的INT_96)。我可以在这里复制没有任何问题。
INT_96
当我在复制活动中交换源数据集和接收数据集时,它将其识别为Date类型。
此行为可能是由于Parquet文件类型的性质。但它表明,当您在任何源中使用目标Parquet文件时,它将被识别为仅日期类型,这是您所需的类型。当sink是parquet时,您可以在Pipeline JSONMap中看到该列的date类型。
那么如何改回日期列呢?如果你想改变,你可以编辑physicalType从INT_96到Pipeline JSONMap中的日期。
physicalType
修改管道JSON后的Map:
(Or)你可以在ADF中使用数据流来改变数据类型。在数据流中使用Cast转换。
1条答案
按热度按时间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类型。
那么如何改回日期列呢?
如果你想改变,你可以编辑
physicalType
从INT_96
到Pipeline JSONMap中的日期。修改管道JSON后的Map:
(Or)你可以在ADF中使用数据流来改变数据类型。在数据流中使用Cast转换。