首页 文章

Azure Data Factory在一列中映射2列

提问于
浏览
1

有人可以帮助我解决错误,我正在连接我的文本文件中的两列 first namelast name 并将我的 Azure SQL database 中的两列合并为 sink 中的一个名称列,另一个问题是我想选择第一个从源文本文件中分别为男性和女性 MF 的列性别字母,并将其更改为Azure数据工厂管道_2783798中性别列中的一个字母M或F?

  • Update 1

我的表名是[dbo] . [联系方式],在应用此程序后出现此错误,我的文本文件中的列名称之间有空格,如名字和姓氏,这是否也会产生问题?

enter image description here

1 回答

  • 0

    基于doc:复制活动中的模式映射,模式映射支持合并列 .

    作为解决方法,我建议在sql server sink中配置sql server stored procedure . 它可以将正在复制的数据与现有数据合并 .

    请按照doc中的步骤操作:

    第1步:配置输出数据集:

    enter image description here

    步骤2:在复制活动中配置接收部分,如下所示:

    enter image description here

    步骤3:在您的数据库中,定义与sqlWriterTableType同名的表类型 . 请注意,表类型的模式应与输入数据返回的模式相同 .

    CREATE TYPE [dbo].[MarketingType] AS TABLE(
        [FirstName] [varchar](256) NOT NULL,
        [LastName] [varchar](256) NOT NULL,
        [Gender] [varchar](256) NOT NULL
    )
    

    步骤4:在您的数据库中,定义与SqlWriterStoredProcedureName同名的存储过程 . 它处理来自指定源的输入数据,并合并到输出表中 . 请注意,存储过程的参数名称应与dataset中定义的“tableName”相同 .

    Create PROCEDURE spOverwriteMarketing @Marketing [dbo].[MarketingType] READONLY
    AS
    BEGIN
      MERGE [dbo].[jay] AS target
      USING @Marketing AS source
      ON (1=1)
      WHEN NOT MATCHED THEN
          INSERT (name, gender)
          VALUES (source.FirstName + ' ' + source.LastName, UPPER(left(source.Gender,1)));
    END
    

    Output Screenshot:

    enter image description here

    希望它能帮到你 .

相关问题