首页 > 解决方案 > ADF 使用复制数据更改接收器中数据类型的列

问题描述

有没有人在使用 adf.xml 中的特定数据类型从源和接收器复制时转换列的数据类型的经验。

从 Microsoft 文档中,我注意到 adf 复制数据可以执行 1. 从本机源类型转换为 Azure 数据工厂临时数据类型 2.从 Azure 数据工厂临时数据类型转换为本机接收器类型

目前,我想从一个将所有列存储为字符串的配置单元表中复制数据,因此当使用 adf 复制数据并将其作为具有正确数据类型的镶木地板时,其中某些列可能是 int、datetime、string 等. 因此,我在通过创建动态 json 代码复制数据时使用了动态映射。

"translator": {
        "type": "TabularTranslator",
        "mappings": [
            {
                "source": {
                    "name": "commentid",
                    "type": "Int32"
                },
                "sink": {
                    "name": "commentid",
                    "type": "Int32"
                }
            },
            {
                "source": {
                    "name": "comment",
                    "type": "String"
                },
                "sink": {
                    "name": "comment",
                    "type": "String"
                }
            },
            {
                "source": {
                    "name": "commenteduser",
                    "type": "String"
                },
                "sink": {
                    "name": "commenteduser",
                    "type": "String"
                }
            },
            {
                "source": {
                    "name": "commenteddatetime",
                    "type": "String"
                },
                "sink": {
                    "name": "commenteddatetime",
                    "type": "String"
                }
            }
        ]
    }

但是,因此,复制过程是成功的,没有任何错误消息。但是当我在这些 parquet 文件上创建表时,这些列的数据类型仍然显示为字符串。

这里有没有人以前遇到过这个问题。谢谢。

标签: azureazure-data-factoryazure-data-lakeazure-databricks

解决方案


您发布的 JSON 在数据类型中看不到任何转换。我不确定您是否只是共享了具有默认映射的列。您可以尝试显式映射,我认为它应该可以工作


推荐阅读