azure DataFactory在复制数据任务中从源数据集中删除行进位

bq3bfh9z  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(83)

我在DataFactory中使用参数驱动方法和复制数据任务。
使用来自Azure SQL数据库的列表,其中包含来自不同来源的近100个表,我循环遍历此列表并调用复制数据任务,该任务将数据从源复制到目标。源是Azure和OnPrem SQL Server数据库的集合,目标是Azure存储帐户Blob存储(数据存储为CSV文件)。
这样做的原因是,我不必构建100多个不同的管道来将数据摄取到blob存储中。
现在我有一个场景,这是创造一些浩劫。
一些表的字段中包含的数据中有换行符(多行数据),在Blob存储上创建的CSV文件中现在也有这些换行符。当我从BlobStorage读取数据时,这些换行符在实际上不应该的时候证明了一个新行。

的数据

考虑到我使用参数驱动复制数据任务摄取数据的动态方法,是否有方法可以防止这种情况?

可能还需要注意的是,我使用Query(由动态列表构建)而不是Table来获取源数据。也许我可以在SELECT查询中格式化数据。


ruoxqz4g

ruoxqz4g1#

为了动态地进行这些更改,您可以使用数据流活动而不是复制活动。

  • 在数据流中,进行派生列转换。单击+Add,然后单击+Add column pattern
  • 对于替换CRLF的每一列,您可以给予如下图所示的表达式。derive(each(match(true()), $$ = replace($$, char(13) + char(10),''))) ~> derivedColumn1


的数据
如果列有多行数据,则将其替换为单行。
我使用Query(由我的动态列表构建)而不是Table来获取源数据。也许我可以在SELECT查询中格式化数据。
由于您使用的是动态列表中的query,因此可以使用SQL本身来格式化。SQL中替换CRLF的语法与数据流中的语法相同。
语法:

REPLACE(@string, CHAR(13) + CHAR(10), '')

字符串

相关问题