Azure数据工厂在一列中映射2列

时间:2018-07-15 22:38:35

标签: azure azure-sql-database azure-storage-blobs azure-data-factory-2

有人可以帮助我解决该错误吗?是合并文本文件中的两列,即first namelast name并将这两列合并到我的 Azure SQL数据库中的一个名称列中作为 Azure Data Factory 中的sink,另一个问题是我想选择列性别为M或{{1}的列的首字母}分别从源文本文件中获取 male 和female并将其更改为Azure数据工厂管道enter image description here中“我的性别”列中的一个字母M或F?

  • 更新1

我的表名是[dbo]。[联系人]在应用此过程后出现此错误,并且文本文件中我的列名之间存在空格,例如名字和姓氏,这确实造成了问题也是吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

基于doc:复制活动中的架构映射,架构映射支持合并列。

作为解决方法,我建议在sql server sink中配置sql服务器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相同名称的存储过程。它处理来自指定源的输入数据,并合并到输出表中。请注意,存储过程的参数名称应与数据集中定义的“ 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

输出屏幕截图:

enter image description here

希望它对您有帮助。