【问题标题】:Azure Data Factory Web API activityAzure 数据工厂 Web API 活动
【发布时间】:2021-01-09 18:27:42
【问题描述】:

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

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

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

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

  2. 我的源数据集是一个具有我想要的纬度和经度的 SQL 表。

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

  4. 我添加了变量的名称和值,它们将被传递到 Web URL

  5. 在我通过天气 API url 的活动下方

  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

【问题讨论】:

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


    【解决方案1】:

    查询的输出是什么。从 Weather_location 中选择纬度、经度?我认为那里的长期价值是-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", “方法”:“获取”, “标题”:{} }

    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 中的参数。

    转到 Copy Activity (CA) -> Source DS -> Open -> Parameter -> relativeurl

    转到复制活动 (CA) -> 源 -> 你应该看到 relativeurl ->@variables('relativeurl')

    转到复制活动 (CA) -> 源 DS -> 打开 ->相对 URL -@dataset().relativeurl

    HTH

    【讨论】:

    • 你好 Himanshu,我也得到了你的输出,但我忘了提,从 REST 获取数据后,我需要将其作为 json 存储到 ADLS 中,我遇到了问题,我愿意不知道如何将基本 url 添加为我的 REST 作为复制数据活动的来源,如果您能证明需要添加的内容作为基本 url 将会很有帮助。
    • 谢谢我现在能够得到想要的输出,一旦我收到 JSON 数据,我将 Azure 数据流中的数据展平,最后想存储在 sql server 表中,但我被困在一个地方我的纬度和经度数据存储在同一列即查询中,我想主要修剪数据并分别存储纬度和经度。请看下面的例子。知道我该如何实现。示例:[查询] 纬度经度 Lat 41.14 和 Lon -80.68 41.14 -80.68
    猜你喜欢
    • 2021-01-25
    • 2019-08-20
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2022-01-04
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多