Azure 数据工厂 Web API 活动

时间:2021-01-09 18:27:42

标签: azure azure-web-app-service azure-sql-database azure-data-factory

我们正在使用 Azure 数据工厂从 API 之一获取天气数据。我们必须实现多个活动,首先我们需要一个包含所有纬度和经度数据的表,然后我们需要构建一个 Azure 管道来遍历位置(坐标)并调用 API 以获取天气信息。 以下是我执行的步骤。

  1. 我正在使用查找活动从表格中获取数据。
  2. 然后我使用 Foreach 活动来遍历纬度和经度。
  3. 我正在使用设置变量活动,其中我使用一个变量表示纬度,一个变量表示经度。
  4. 我正在使用网络活动来传递来自 API 的 URL 和 GET 响应。

我能够实现大部分输出,但我遇到的问题是输出 URL 没有获取任何数据,因为对于我的 URL 的某些部分,蓝色的超链接被删除并且无法读取. 下面是屏幕截图。

  1. 两个活动 Lookup 和 foreach,声明了四个变量

  2. 我的源数据集是一个包含我想要的经纬度的 SQL 表。

  3. 此活动显示了两个集合变量以及网络和复制活动。

  4. 我添加了变量的名称和值,这些变量将传递到网址

  5. 在我传递天气 API 网址的 wen 活动下方

  6. 我传递 URL、键和纬度、经度变量、格式、天数的动态内容。

  7. 如果您看到在纬度值(即 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

1 个答案:

答案 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", "方法": "获取", “标题”:{} }

enter image description here

1/15 编辑

据我所知,我打算使用 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

enter image description here

HTH