【问题标题】:Query from PowerBI to AI suddenly fails with (502): Bad Gateway从 PowerBI 到 AI 的查询突然失败并显示 (502):Bad Gateway
【发布时间】:2017-06-11 16:06:15
【问题描述】:

在 Power BI(桌面)中,我们使用 Power BI 查询 (M) 从 Application Insights Analytics 获取数据。我们将 Power BI 报告发布到 Power BI Online,并配置了每日刷新。它运行良好,直到它在 2017 年 1 月 25 日(UTC)停止运行。

我们得到的错误是:

DataSource.Error: Web.Contents failed to get contents from '.....' (502): Bad Gateway

这是完整的错误:

DataSource.Error: Web.Contents failed to get contents from 'https://management.azure.com/subscriptions/<subscriptionId>/resourcegroups/fps.fsa/providers/microsoft.insights/components/4PS%20Field%20Service%20iOS%20-%20iOS/api/query?api-version=2014-12-01-preview&csl=customEvents%0A%7C%20where%20timestamp%20%3E%20ago%2830d%29%0A%7C%20order%20by%20timestamp%20desc%0A%7C%20extend%20dimensionUserId%20%3D%20tostring%28customDimensions.%5B%27userId%27%5D%29%0A%7C%20extend%20dimensionHost%20%3D%20tostring%28customDimensions.%5B%27url%27%5D%29%0A%7C%20extend%20measurementQuantity%20%3D%20iff%28%20isnotempty%28customMeasurements.%5B%27value%27%5D%29%2C%20todouble%28customMeasurements.%5B%27value%27%5D%29%2C%200.0%29%0A%7C%20extend%20measurementKey%20%3D%20tostring%28customDimensions.%5B%27key%27%5D%29%0A%7C%20extend%20platform%20%3D%20%27iOS%27%0A&x-ms-app=AAPBI' (502): Bad Gateway
Details:
    DataSourceKind=Web
    DataSourcePath=https://management.azure.com/subscriptions/<subscriptionId>/resourcegroups/fps.fsa/providers/microsoft.insights/components/4PS%20Field%20Service%20iOS%20-%20iOS/api/query
    Url=https://management.azure.com/subscriptions/<subscriptionId>/resourcegroups/fps.fsa/providers/microsoft.insights/components/4PS%20Field%20Service%20iOS%20-%20iOS/api/query?api-version=2014-12-01-preview&amp;csl=customEvents%0A%7C%20where%20timestamp%20%3E%20ago%2830d%29%0A%7C%20order%20by%20timestamp%20desc%0A%7C%20extend%20dimensionUserId%20%3D%20tostring%28customDimensions.%5B%27userId%27%5D%29%0A%7C%20extend%20dimensionHost%20%3D%20tostring%28customDimensions.%5B%27url%27%5D%29%0A%7C%20extend%20measurementQuantity%20%3D%20iff%28%20isnotempty%28customMeasurements.%5B%27value%27%5D%29%2C%20todouble%28customMeasurements.%5B%27value%27%5D%29%2C%200.0%29%0A%7C%20extend%20measurementKey%20%3D%20tostring%28customDimensions.%5B%27key%27%5D%29%0A%7C%20extend%20platform%20%3D%20%27iOS%27%0A&amp;x-ms-app=AAPBI

有人知道怎么解决吗?

【问题讨论】:

  • 您是否更改了隐私设置?在 options -> Privacy -> 下设置 Ignore the Privacy levels and potentially... 。我有一个类似的问题,这个问题已经解决了。

标签: powerbi azure-application-insights ms-app-analytics


【解决方案1】:

James 建议的建议是限制结果大小,但如果您仍需要返回更大的数据集,您可以直接使用 AI API 而不是 ARM。

1) 您需要创建一个 API 密钥,请参阅 https://dev.applicationinsights.io/documentation/Authorization/API-key-and-App-ID

2) 接下来,您需要通过将 ARM URL 替换为 AI API 来更新从 Analytics 导出的 Power BI M 脚本:

替换ARM调用:

.....
来源 = Json.Document(Web.Contents("https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/&lt;RESOURCE GROUP&gt;/providers/microsoft.insights/components/&lt;APP NAME&gt;/api/query?api-version=2014-12-01-preview", [Query=[#"csl"="requests",#"x-ms-app"="AAPBI"],Timeout=#duration(0,0,4,0)])),
... ..

使用 AI API 调用:

....
来源 = Json.Document(Web.Contents("https://api.applicationinsights.io/beta/apps/&lt;APPLICATION_ID&gt;/query?api-version=2014-12-01-preview", [Query=[#"csl"="requests",#"x-ms-app"="AAPBI"],Timeout=#duration(0,0,4,0)])),
... ..

3) 最后,将凭据更新为基本凭据,并使用您的 API 密钥

enter image description here

【讨论】:

    【解决方案2】:

    502 Bad Gateway 消息通常是由于 AA 查询返回的数据过多。网关限制为 8MB 数据,期间。

    示例

    您创建了一个仪表板,该仪表板在 2016 年 12 月有效,并在该月初向您提供了所有请求。现在是 2017 年 1 月,它失败了。您可以使用 PowerBI 仪表板通过如下查询从原始结果中计算一些指标。

    requests | where timestamp > datetime(2016-12-01)
    

    修复

    确定您真正关心的天数。如果您的意图是获取所有请求和从月初开始的时间,则可以通过将时间范围限制在本月并仅投影您需要的列来减少大量额外数据

    requests | where timestamp > startofmonth(now()) | project name, duration
    

    另一个修复

    假设您正在计算平均值和百分位数之类的东西,您也可以让 Analytics 为您执行此操作,而 PowerBI 仅显示结果。

    requests | where timestamp > startofmonth(now()) | summarize count(), avg(duration), min(duration), max(duration), stdev(duration), percentiles(duration, 50, 75, 90, 95, 99) by name
    

    更多示例

    您可能需要一个有意义的图表,以便按时间段拆分聚合。这将为您提供大量数据作为回报,但比您查询原始数据点获得的数据要少得多。

    按天

    requests | where timestamp > startofmonth(now()) | summarize count(), avg(duration), min(duration), max(duration), stdev(duration), percentiles(duration, 50, 75, 90, 95, 99) by bin(timestamp, 1d), name
    

    按小时

    requests | where timestamp > startofmonth(now()) | summarize count(), avg(duration), min(duration), max(duration), stdev(duration), percentiles(duration, 50, 75, 90, 95, 99) by bin(timestamp, 1h), name
    

    我只给出了几个例子,你必须确保它们符合你的仪表板的意图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 2015-08-17
      • 2016-09-30
      • 2017-07-31
      • 2017-08-15
      • 1970-01-01
      • 2020-12-11
      相关资源
      最近更新 更多