使用SQL行中的文件名和数据创建Blob

Gre*_*man 5 azure-storage-blobs azure-data-factory azure-blob-storage azure-data-factory-2

关于如何使用Azure数据工厂将数据从Blob读取到SQL中,有很多文档,甚至还有关于如何将查询的输出转储到单个Blob的文档。我试图为表中的每一行(在Azure SQL Server上)创建一个Blob,由一个字段命名,并在另一字段中包含数据。

我的表有一个GUID id字段和一个nvarchar(max)data字段(其中包含JSON,尽管基本上无关紧要)。假设我有以下几行:

                 id                    |  data
---------------------------------------+----------
38b2f551-5f13-40ce-8512-c108a05ecd44   |  foo
4db5b25b-1194-44e9-a7b2-bc8889c32979   |  bar
2a3bd653-ce14-4bd2-9243-6923e97224c6   |  baz
Run Code Online (Sandbox Code Playgroud)

我希望创建以下Blob:

https://mycontainer.blob.core.windows.net/myblobs/38b2f551-5f13-40ce-8512-c108a05ecd44
https://mycontainer.blob.core.windows.net/myblobs/4db5b25b-1194-44e9-a7b2-bc8889c32979
https://mycontainer.blob.core.windows.net/myblobs/2a3bd653-ce14-4bd2-9243-6923e97224c6
Run Code Online (Sandbox Code Playgroud)

它们的内容应该是相关的数据字段,即foobarbaz分别。

Data Factory v2-每行生成一个json文件具有有效的答案,但它涉及一次查询数据库以获取所有ids,然后再查询N次以从每一行获取数据。似乎应该只对这两个字段查询一次,对文件名使用一个查询,对内容使用一个查询,但是我还无法弄清楚该怎么做。

Tre*_*ura 2

在 ADF 中,这是一个非常简单的功能:

  1. 使用查找活动获取数据库表的行结果
  2. 使用 For Each 迭代查找中的每一行
  3. 在 For Each 中有一个复制数据活动,该活动从 DB(实际上作为直通)复制到 Blob 存储

以下是带有注释的屏幕截图,用于说明确切的步骤并证明其有效:

1,这是我的模拟表,与您的示例类似,我有一个假装的 FileID 和数据字段

模拟表

第二,我对该表进行查找,请参阅下面的详细信息和输出 查找活动示例

第三,我们放入 For Each 活动,以便我们可以对数组对象中的每个项目执行一个操作或一组操作

对于每个示例

第四,我们进入 Foreach 并使用 Azure SQLDB 源和 Azure Blob 接收器创建一个复制数据活动

来源详情: 复制数据源

水槽详细信息: 复制数据接收器

当我运行此管道时,Blob 存储中会发生以下情况:

证明它有效

如果您需要其他任何信息或有任何疑问,请告诉我,希望这会有所帮助!记得点赞、关注、关注哦:)