作为Application Insights自定义遥测的一部分,我从我的应用程序创建和发送,我可以提供我选择跟踪的事件的自定义属性。然后可以在常规AI UI或Analytics界面中查看这些内容以进行查询。同样,当用户开始会话时,我可以使用AI API来设置应用程序定义的用户标识符或应用程序定义的会话标识符。
但有没有办法做两个十字架?例如,有没有办法可以为给定用户设置自定义属性(例如她所属的受众或角色)?或者为给定用户会话设置自定义属性的方法? (可能是它们所在的连接类型或公司分支机构)有许多预定义的用户和会话相关属性,AI隐式地与每个用户会话相关联。 (如城市,国家,设备等)
我真的想为该会话(或用户)设置类似一次的属性,然后能够将该用户会话期间的其他活动与这些属性相关联。 (例如自定义事件,指标,跟踪条目等)我需要避免需要为每个事件,每个跟踪或记录的每个指标设置此类属性(例如,使用ITelemetryInitializer)因为我在客户端和服务器端有大约25种不同的ASP.NET应用程序,而且只有客户端才有一些单独的SaaS应用程序。要尝试引入自定义扩展,然后不断重复确定要添加到所有记录的自定义属性,这将是许多团队的一项重大任务。
这可能吗?如果是这样,怎么样?我无法在API文档中找到任何提及它的内容,而且C#API中的Intellisense snooping同样没有发现任何明显的内容。 (例如,使用Microsoft.ApplicationInsights.Channel.ITelemetry.Context.Session或.User)
答案 0 :(得分:0)
是的,您可以在每个会话中设置一次属性。然后使用join将其与其他事件相关联。
例如,下面的查询计算每个会话的事件,然后将此计数与自定义属性相关联。之后,如果需要,可以通过管道进行进一步的聚合。
let events = customEvents
| where timestamp > ago(1d);
events
| summarize count() by session_Id
| join kind=inner (
events
| where name == "MySingleEventPerSession"
| summarize any(*) by session_Id
) on session_Id
| project count_, any_customDimensions.MyCustomProperty, session_Id