如何将上下文附加到分析事件

时间:2016-03-11 14:16:42

标签: analytics powerbi azure-application-insights

我希望收集一些与分析相关的集体智慧。

以下是一个说明问题的示例:

  

用户打开应用程序并启动会话。他们打开数据库A 并执行操作X 。然后他们打开数据库B 并再次执行操作X

每当有人执行操作X 时,我们都会跟踪事件。

我们可以很容易地看到,在此会话中,操作X 执行了两次。但是,我们想知道操作X 数据库A 的上下文中执行一次,在的上下文中执行 / em> 数据库B 。这意味着我们可以通过在制作时使用的数据库来过滤操作X 事件。

我可以想到两种方法:

  1. 每次触发事件时,都会将当前数据库名称(以及任何其他上下文)附加到事件中。然而,这似乎是浪费,因为每个事件最终可能会支持很多背景。

  2. 在数据库发生变化时发送事件,并以某种方式推断每个事件X 发送时数据库打开时的年表。这种方法不那么浪费,但会使分析更加困难。

  3. 您会建议采用哪种方法?还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

我绝对会选择选项1.

首先它更简单 - 您描述的场景可能很简单,但如果用户在会话期间切换10次上下文会发生什么?分析数据可能变得非常困难。

其次,它稍后允许一系列切片 - 骰子场景,因为您可以轻松分析在每个上下文中执行的每个事件。

答案 1 :(得分:0)

我们在内部使用两种模式的混合。对于超级重要的字段(例如,哪个集群发生了错误),我们在每个事件上实现了集群ID。这不会超出一定数量的分类字段。然后,我们为每个事件使用两个标识符的模式,以帮助我们回答更深层次的问题。第一个标识符标识单个事件,让我们称之为EventID。第二个是根的id(导致所有其他活动发生的初始活动),让我们称之为会话ID。该系统非常灵活,可以满足您未来的需求。您需要发布处理事件以进行分析,这将要求您在事件捕获后进行一些工作。基本上你需要As Assaf在他的回答中注意到,如果你只为这一个场景进行设计,将数据库ID硬编码到你的事件中会让生活变得简单。但如果这不是一个常见的分析,你最终会膨胀你的事件,使整个遥测管理变得更难。