SYNAPSE 复制活动 - 将日期参数从文件传递到源

问题描述 投票:0回答:1

来源:REST API
(/RESTAdapter/XYZ/Dashboard/Advances?$top=1000&$skip=0&$keydate=2024-04-30)

接收器:CSV
我想将关键日期列表从 blob 存储中的 dates.csv 文件传递到 API。

日期.csv
2024-01-31,2024-02-29,2024-03-31,2024-04-30

它必须将密钥日期附加到文件名的末尾。

预期输出是根据关键日期列表提取多个 csv 文件到我的 blob 存储。文件名应该看起来像

进展2024-01-31.csv
进展2024-02-29.csv
进展2024-03-31.csv
进展2024-04-30.csv

提取后我想将 CSV 文件加载到 SQL 中

azure-synapse
1个回答
0
投票

如果您的要求只是创建

Advance<date>.csv
文件,其中日期来自
dates.csv
文件,那么您可以按照以下方法操作。

dates.csv
文件中的给定日期与您的相同:

2024-01-31,2024-02-29,2024-03-31,2024-04-30

现在,为

dates.csv
文件创建一个分隔文本数据集。在这里,该文件没有任何标题或行。因此,将列分隔符更改为与
,
不同的分隔符,并删除第一行作为标题。

enter image description here

将此数据集提供给查找活动并禁用查找活动设置中的

First row only
。查找活动将在调试时给出如下输出数组。

"value": [ { "Prop_0": "2024-01-31,2024-02-29,2024-03-31,2024-04-30" } ]
现在,在管道变量部分创建一个数组变量

dates_arr

,并在设置变量活动中使用以下表达式将上述日期值存储为数组。

@split(string(activity('Lookup1').output.value[0].Prop_0),',')

enter image description here

这将给出所需的日期数组,该数组将存储在

dates_arr

 变量中。

enter image description here

现在,采用一个

For-each 活动,并将此 @variables('dates_arr')

 变量作为 For-Each 的表达式。

在 For-Each 内,以 REST API 数据集作为源、Blob csv 数据集作为接收器进行复制活动。

在sink csv数据集中,创建字符串类型的数据集参数。

enter image description here

在数据集的文件名中使用此名称作为

@dataset('targetfilename')

enter image description here

在复制活动中,为此参数提供以下表达式。

@concat('Advances',item(),'.csv')

enter image description here

通过迭代

dates_arr

 值,将在每次迭代中生成具有所需名称的结果文件,如下所示。

enter image description here

如果您的源 REST API URL 也是动态的,这意味着,如果它还需要 keydate=

 之后的末尾日期,那么您需要在 REST 数据集中参数化 URL。

作为示例,我将以下部分作为相对 URL。首先创建一个字符串类型的数据集参数

date

并在相对URL中使用它。

@concat('?$top=1000&$skip=0&$keydate=',dataset().date)

enter image description here

您需要在 For 循环内的复制活动源中为上述

@item()

 参数提供 
date
 作为值。

© www.soinside.com 2019 - 2024. All rights reserved.