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

Posted

技术标签:

【中文标题】Azure 数据工厂在一列中映射 2 列【英文标题】:Azure Data Factory mapping 2 columns in one column 【发布时间】:2018-12-23 11:08:25 【问题描述】:

有人可以帮我解决连接两列(即我的文本文件中的first namelast name)并将这两列合并到我的Azure SQL 数据库中的一个名称列 时出现的错误吗作为 Azure 数据工厂 中的 sink,另一个问题是我想为 male 选择 MF 列的第一个字母和女性分别从源文本文件中,并在 Azure 数据工厂管道enter image description here的我的性别列中将其更改为一个字母 M 或 F?

更新 1

我的表名是 [dbo].[Contact],在应用此过程后出现此错误,并且我在文本文件中的列名之间有空格,例如名字和姓氏,是否会产生问题也是?

enter image description here

【问题讨论】:

请参考我的更新答案并按照我的步骤在您的数据库中配置存储过程。任何问题,请告诉我。只需在我的答案中添加评论即可。 您可以投票并标记答案以供他人参考。 我已经标记了我需要更多的声誉来反映投票,我确实为你投票,感谢所有的帮助。 【参考方案1】:

根据文档:复制活动中的架构映射,架构映射支持合并列。

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

请按照doc中的步骤操作:

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

第 2 步:在复制活动中配置 Sink 部分,如下所示:

第 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

输出截图:

希望对你有帮助。

【讨论】:

你能帮忙吗***.com/questions/66739714/…

以上是关于Azure 数据工厂在一列中映射 2 列的主要内容,如果未能解决你的问题,请参考以下文章

如何用同一数据框中其他列的实际列值替换一列中的字符串值?

在映射数据流(Azure 数据工厂)内的表达式函数中创建动态 Json

使用宽松字典映射列中的值

在 Azure 数据工厂映射数据流中截断(非舍入)十进制数

Azure 数据工厂将数据流映射到 CSV 接收器导致零字节文件

怎么把excel一列中内容中间加个逗号