MS AI:使用持久性通道重复事件

时间:2016-03-17 17:50:13

标签: c# powerbi azure-application-insights

我们正在向桌面应用推出Application Insights。由于用户在使用应用程序时可能处于脱机状态,因此我们使用PersistenceChannel来确保事件可以在以后的会话中发送,并且我们在应用程序关闭时调用flush(我们的跟踪器的Dispose()) :

public ApplicationInsightsTracker()
{
    this.client = new TelemetryClient();
    this.client.InstrumentationKey = InstrumentationKey;

    TelemetryConfiguration.Active.TelemetryChannel = new PersistenceChannel();
    TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = true;
}

~ApplicationInsightsTracker()
{
    this.Dispose();
}

public override void Dispose()
{
    this.client.Flush();
    GC.SuppressFinalize(this);
}

public override void TrackEvent(ITrackerEvent trackerEvent)
{
    try
    {
        this.client.TrackEvent(trackerEvent.Name, trackerEvent.Properties);
    }
    catch (Exception e)
    {
        Debug.WriteLine(string.Format("Failed to track event {0}.  Exception message {1}", trackerEvent.Name, e.Message));
    }
}

我们还使用持续导出将事件数据从Application Insights发送到Azure Blob数据库。我们将Power BI连接到Blob数据库,有一天刷新功能停止工作。我们进行了调查,结果发现我们正在加载具有相同唯一ID的2个事件。在查看blob时,我们发现了同一事件的2个连续blob:

blob1.blob  - Holds 1 event
{"event":...,"internal":{"data":{"id":"8709bb70-e6b1-11e5-9080-f77f0d66d988"..."data":{..."eventTime":"2016-03-10T11:15:53.9378827Z"}..."user":{..."anonId": "346033da-012d-4cc4-9841-836e5d8f8e32"..."session":{"id":"cb668d2f-9755-4afd-97c2-66cc3504349a"...

blob2.blob - Holds 3 events
{"event":...,"internal":{"data":{"id":"8709bb70-e6b1-11e5-9080-f77f0d66d988"..."data":{..."eventTime":"2016-03-10T11:15:53.9378827Z"}..."user":{..."anonId": "346033da-012d-4cc4-9841-836e5d8f8e32"..."session":{"id":"cb668d2f-9755-4afd-97c2-66cc3504349a"...
{"event":...
{"event":...

正如您所看到的,两个blob上的第一个事件是相同的。我们在PersistenceChannel上运行测试,机器与网络连接/断开,AI沿线的某处做了这个。

我们不完全确定这是否是我们如何使用它或图书馆存在缺陷的问题。您可以想象通过重复事件可能会非常痛苦(特别是如果您在外部构建模型)。

我们是否对AI做了一些奇怪的事情,或者这是一个已知的问题?

2 个答案:

答案 0 :(得分:1)

我与出口的团队核对过,他们说

  

当前的出口管道有重复出口的机会

这是他们正在研究的问题。

所以看起来你做错了什么,这只是你需要注意的一个案例,现在就可以解决了。

答案 1 :(得分:1)

AppInsights导出的数据可能包含欺骗行为。

如果要将所有数据导出到Power BI,则可以使用Power Query's built-in duplicate removal feature