我正在使用TelemetryClient.TrackMetric
方法在.NET中记录应用程序洞察力中的一些自定义度量,并且我注意到,在Azure门户中查看它们时,偶尔会出现一些事件。
我已经钻研了数据,重复的事件具有相同的itemId
和timestamp
,但是如果我通过向查询添加| extend ingestionTime = ingestion_time()
来显示摄入时间,那么我可以看到摄入时间是不同的。
这个GitHub问题表示这种行为是预期的,因为AI至少使用一次交付。
我使用和聚合在Azure门户的图表中绘制了这些指标,但是这些重复的数据会在图表中产生信任问题,因为重复的数据被简单地作为两个单独的事件处理。
在绘制Azure门户中的数据之前,是否有一种基于itemId
的事件解除欺骗的方法?
更新
一个更具体的例子是:
我正在运行一个由事件触发的算法,结果是奖励。该算法一天可触发数十次,奖励为正负浮点值。它每次将奖励作为自定义度量(例如custom-reward
)记录到Application,以及一些用于数据分割的附加属性。
在Azure门户中,我通过访问Application Insights -> Metrics
并自定义图表来创建一个简单的图表。我在custom-reward
下拉列表中选择我的Metric
度量,并选择Sum
作为聚合。我可能会也可能不会申请分割。我把图表保存在仪表盘上。
这个简单的图表为我提供了一种很好的方法来监控系统,以确保没有意外的事情发生,并且图表左下角的求和值可以让我快速地看到奖励的总和是正的还是负的,在图表的范围内,以及多少。
然而,有时我对这个结果感到惊讶(比如说在过去的12小时里,奖励的总和是惊人的负数),在仔细检查时,我发现有几个大的负面结果被重复了。进一步的调查表明,这已经发生在其他事件,但结果较小,我往往没有注意到。
我不太熟悉应用程序洞察的高级查询部分,实际上我今天第一次使用它来深入了解事件。但是听起来好像我可以在那里做些什么来创建一个查询,然后我就可以画出结果了吗?
更新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
现在将显示为拆分下拉列表中的一个选项。在此之后,您可以单击"Pin to仪表板“。在图表的左下角,你失去了简单的“度量”图中的“时间和”指示器,但是我相信我可以用其他方式重新创建它。
发布于 2020-09-16 09:49:12
如果您正在执行您自己的查询,通常会使用像summarize
或makeseries
这样的工具来对图表进行降维。除非你看的时间范围很小,否则你一般不会画出个别的物品?
所以,而不是像这样
summarize count() ...
你可以
summarize dcount(itemId) ...
或者,您可以向一个查询添加一个“假”摘要,这个查询以前不需要使用by itemId
将多个行合并成一个行,使用any(x)
为每个itemId的每一列获取任何单个行的值。
但这确实取决于您在特定查询中所做的事情。如果你使用像sum(itemCount)
这样的东西来处理抽样,那么你现在还有其他奇怪的情况,至少一次交货可能会重复抽样项目?(更新您的问题以添加特定的查询和假设结果可能会导致更具体的答案)。
https://stackoverflow.com/questions/63920954
复制