在 Azure 数据工厂中设置外部调用活动的查询参数

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

我正在尝试使用 Azure 数据工厂查询开源 Yahoo Finance API。

我有一个数据集,其设置如下:

Dataset set up

我在数据流中调用此 API。使用上述数据集的数据流的第二行有效。设置如下:

Source settings

Source options

我的展平活动返回数据如下:

Flatten activity output

但是,我希望

period1
period2
查询参数是动态的。我有一个包含历史数据的数据集,我想从历史数据的最新日期到现在之间获取数据。这是我的数据流中的第一行出现的地方,但这不起作用。

我发现数据流中的第二行一次只能处理大约 5 天,因此我提取了历史数据并使用数据流中的前 3 个活动计算了开始和结束时间戳。 UNIX 开始时间戳的计算方式为:

toString(toLong(addDays(MAX_DATE, 1) - toTimestamp('1970-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS')) / 1000l)

UNIX 结束时间戳的计算方式为:

toString(toLong(addDays(MAX_DATE, 6) - toTimestamp('1970-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS')) / 1000l)

我得到了这个结果:

Start/End Timestamp Output

(P.S. 我不确定为什么时间戳会以这种格式显示并带有

E
?这是一个问题吗?)

从这里开始,我尝试使用外部调用活动将 startTimestamp 和 endTimestamp 作为查询参数传递,但我在第一个障碍处就失败了:

Call transformation's settings

我不确定为什么连接失败,尽管使用与工作数据集相同的设置,并且我不确定为什么我收到

Column not found
错误,尽管使用与第二行相同的设置数据流。 当我尝试预览数据时,出现以下错误:

Spark 作业失败:{ "text/plain": "{"runId":"a8c1da6c-241b-4b90-891d-3d9bba2ec317","sessionId":"b66a1630-0795-4214-894a-2f333d98b891","status":"失败","有效负载":{"statusCode":400,"shortMessage":"调用 'ImportYahooFinanceData' 时的 DF-EXPR-010(第 31 行/第 24 列):表达式中使用的列 'interval' 不可用或无效。","detailedMessage": “失败 2024-11-04 13:04:28.500 失败 DebugManager.processJob,run=a8c1da6c-241b-4b90-891d-3d9bba2ec317,errorMessage=DF-EXPR-010 在调用“ImportYahooFinanceData”(第 31 行/第 24 列):列表达式中使用的“间隔”不可用或无效。"}} ” - 运行 ID:a8c1da6c-241b-4b90-891d-3d9bba2ec317

任何有关此错误的帮助都将不胜感激!

解决此错误后,如何将开始和结束时间戳作为查询参数传递给外部调用活动?

谢谢!

rest azure-data-factory parameter-passing
1个回答
0
投票

我不确定为什么时间戳会以带有

E
的格式显示?这是一个问题吗?

显示的值是该数字的科学值,要将其转换为正确的格式,您可以在派生列中使用

todecimal()
函数,如下所示: enter image description here

输出:

enter image description here

表达式中使用的列“间隔”不可用或无效。

您收到上述错误是因为您引用的列不存在,或者列名称不正确。

query
参数可用于在 URL 中传递查询字符串参数以进行 REST API 调用。

带有查询参数的示例 URL:

https://api.example.com/data?param1=value_from_pipeline_param&param2=value2

检查您使用的 URL 是否正确或格式正确,并检查它是否在浏览器或邮递员上正常工作

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