首页 > 解决方案 > 在 Azure 门户中绘图之前从应用程序见解中删除重复的自定义指标事件

问题描述

我正在使用TelemetryClient.TrackMetric.NET 中的方法在应用程序洞察力中记录一些自定义指标,并且我注意到,当我在 Azure 门户中查看它们时,有时会重复一些事件。

我已经深入研究了数据,并且重复的事件具有相同的itemIdand timestamp,但是如果我通过添加| extend ingestionTime = ingestion_time()到查询中来显示摄取时间,那么我可以看到摄取时间是不同的。

这个 GitHub 问题表明这种行为是预期的,因为 AI 使用至少一次交付。

我使用总和聚合在 Azure 门户中的图表中绘制这些指标,但是这些重复项会在图表中产生信任问题,因为重复项被简单地视为两个单独的事件。

有没有办法itemId在 Azure 门户中绘制数据之前对事件进行重复数据删除?

更新

一个更具体的例子:

我正在运行一个由事件触发的算法,这会产生奖励。该算法每天可能触发数十次,奖励为正或负浮点值。它每次将奖励记录到 Application Insights 作为自定义指标(称为 say custom-reward),以及一些用于数据拆分的附加属性。

在 Azure 门户中,我通过转到Application Insights -> Metrics并自定义图表来创建一个简单的图表。我在下拉列表中选择我的custom-reward指标,然后选择作为聚合。我可能会也可能不会申请拆分。我将图表保存到我的仪表板。MetricSum

这个简单的图表为我提供了一种监控系统的好方法,以确保没有意外发生,图表左下方的 Sum 值让我可以快速查看奖励总和在图表范围内是正还是负,以及多少。

然而,有时我对结果感到惊讶(比如在过去的 12 小时内,奖励的总和令人惊讶地为负数),仔细检查后我发现重复了一些大的负数结果。进一步的调查表明,其他事件也发生了这种情况,但结果较小,我往往不会注意到。

我对 Application Insights 的高级查询位不是很熟悉,我实际上只是今天第一次使用它来挖掘事件。但听起来我可以在那里做一些事情来创建一个查询,然后我可以绘制,结果被删除了?

更新 2

感谢@JohnGardner 的提示,我已经设法在这方面取得了进展,所以我将其标记为答案。我通过将以下行添加到查询中来删除并绘制结果:

| summarize timestamp=any(timestamp), value=any(value), name=any(name), customDimensions=any(customDimensions) by itemId

更新 3

将以下行添加到查询允许我拆分自定义数据(在本例中按算法 ID 拆分):

| extend algorithmId = tostring(customDimensions.["algorithm-id"])

添加该行后,当您在查询结果中选择“图表”时,algorithmId现在在拆分下拉列表中显示为一个选项。之后,您可以单击“固定到仪表板”。您丢失了图表左下角的方便的“时间段总和”指标,您可以通过简单的“指标”图表获得该指标,但我相信我将能够以其他方式重新创建它。

标签: azure-application-insightsazureportal

解决方案


如果您正在做自己的查询,您通常会使用类似的东西summarizemakeseries对图表进行重复数据删除。除非您正在查看非常小的时间范围,否则您通常不会绘制单个项目?

所以而不是像

summarize count() ...

可以

summarize dcount(itemId) ... 

或者您可以将“假”汇总添加到以前不需要的查询中,以 by itemId将多行合并为一个,any(x)用于获取每个 itemId 的每一列的任何单独行的值。

但这实际上取决于您在特定查询中所做的事情。如果您使用类似的东西sum(itemCount)来处理采样,那么您现在还有其他奇怪的情况,至少一次交付可能有重复的采样项目?(更新您的问题以添加特定查询和假设结果可能会导致更具体的答案)。


推荐阅读