Azure 数据工厂将 2 列映射到一列中

标签 azure azure-sql-database azure-blob-storage azure-data-factory

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

  • 更新 1

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

enter image description here

最佳答案

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

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

请按照此 doc 中的步骤操作:

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

enter image description here

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

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

希望对您有帮助。

关于Azure 数据工厂将 2 列映射到一列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352725/

相关文章:

Azure CLI - 将 Azure DevOps 通用包下载到 AzureML 计算实例时出现 "Hard linking failed!"

java - 使用 Hibernate JDBC 连接连接到 Azure SQL Server

azure - 如何为 Azure SQL 数据库设置 UTF-8 排序规则? UTF-8 不在支持的排序规则列表中

azure - 为什么 Polybase 对于跨越 10 亿条记录的大型压缩文件来说速度很慢?

azure - 如何访问 Azure 数据工厂中 "Lookup Activity"上的输出?

azure - 查询 CosmosDb 非结构化 JSON

javascript - 使用带有附件的 SendGrid 的 Azure Function (JS)

sql-server - 如何使用复制事件中的预复制脚本根据源中的更改跟踪表删除接收器中的记录?

azure - Azure.ConfigurationManager 与 .Net Core 兼容吗?

Azure 存储资源管理器未连接到 Azurite 本地模拟器