我们正在使用 Azure 数据工厂从 API 之一获取天气数据。我们必须实现多个活动,首先我们需要一个包含所有纬度和经度数据的表,然后我们需要构建一个 Azure 管道来遍历位置(坐标)并调用 API 以获取天气信息。 以下是我执行的步骤。
我能够实现大部分输出,但我遇到的问题是输出 URL 没有获取任何数据,因为对于我的 URL 的某些部分,蓝色的超链接被删除并且无法读取. 下面是屏幕截图。
两个活动 Lookup 和 foreach,声明了四个变量
我的源数据集是一个包含我想要的经纬度的 SQL 表。
此活动显示了两个集合变量以及网络和复制活动。
我添加了变量的名称和值,这些变量将传递到网址
在我传递天气 API 网址的 wen 活动下方
我传递 URL、键和纬度、经度变量、格式、天数的动态内容。
如果您看到在纬度值(即 41.4)之后删除了 URL 的超链接,我将面临问题的最终输出,因此在此之后没有读取任何内容并且数据未以 JSON 格式输入。如何解决这个问题以及我们如何传递给 URL 中的变量,因为在我的情况下,纬度和经度由逗号分隔作为分隔符,如果我尝试添加逗号,它不会读取 URL
这是我试图通过 Azure 数据工厂实现的最终 URL。
http://api.worldweatheronline.com/premium/v1/weather.ashx?key=*****************&q=41.14,80.68&format=JSON&num_of_days=5
答案 0 :(得分:0)
查询的输出是什么。从 Weather_location 中选择纬度、经度?我认为那里的 long 值是 -80,所以你遇到了问题。这是我试过的。
创建两个变量 Long 和 lat 并设置您共享的值。使用了下面的表达式。
@concat('http://api.worldweatheronline.com/premium/v1/weather.ashx?key=XXXXXX&q=',variables('lat')
,',',variables('long'),'&format=JSON&num_of_days=5')
它运行良好。
{
"data": {
"request": [
{
"type": "LatLon",
"query": "Lat 41.14 and Lon 80.68"
}
],
"current_condition": [
{
"observation_time": "11:3
.....
当您说超链接时,您说得对,它没有显示为完整(参见下面的屏幕截图),但它仍然适用于我。
输入 { "url": "http://api.worldweatheronline.com/premium/v1/weather.ashx?key=XXXXXX=41.14,80.68&format=JSON&num_of_days=5", "方法": "获取", “标题”:{} }
据我所知,我打算使用 API 并将响应 JSON 复制到 ADLE GEN 2。
这就是我尝试时所做的。 使用复制活动选择 SINK 作为 REST ,链接服务中的基本 URL 是 http://api.worldweatheronline.com。
创建一个新变量:relativeurl:
@concat('/premium/v1/weather.ashx?key=yourkey&q=',variables('lat')
,',',variables('long'),'&format=JSON&num_of_days=5')
我们将使用它作为 SOURCE 相对 url 中的参数。
转到复制活动(CA)->源DS->打开->参数->relativeurl
转到 Copy Activity ( CA ) -> Source -> 你应该看到 relativeurl ->@variables('relativeurl')
转到复制活动 (CA) -> 源 DS -> 打开 -> 相对 URL -@dataset().relativeurl
HTH