具有非规范化表的分析服务

时间:2010-05-11 11:21:10

标签: sql-server database ssas

我有一张包含数百万行的表格。每行代表一个用户session。有一个名为user的列并不是唯一的。每个用户可以有多个会话。我想使用Analysis服务来获取每个用户的附加属性。示例:有多少用户(唯一!)的会话超过x分钟。如果不改变数据库,这怎么可能呢?注意:没有查找表,我无法创建一个 我现在能够问的是,会议时间长于x分钟。

2 个答案:

答案 0 :(得分:1)

您是否已在此表的顶部安装了Analysis Services多维数据集?如果这样做,您可以将用户列设置为事实维度,然后使用用户维度作为唯一计算的基础。

您已经采用了哪种结构?

编辑:好的,所以你创建了一个用户事实维度,计算成员的MDX可能如下所示:

WITH MEMBER UserCount AS Count(Filter([User].[User].[User], [Measures].[YourMeasure] > 10)),
NON_EMPTY_BEHAVIOR = { [Measures].[YourMeasure] }
SELECT UserCount ON 0 FROM [Cube]

您可以将其作为计算成员放入多维数据集中,请参阅Visual Studio中多维数据集设计器中的计算选项卡。

根据您的设置,您可能需要将“Count”更改为“DistinctCount”。

请注意,应该正确设置“NON_EMPTY_BEHAVIOR”标志,我假设你有一个基于会话长度的度量?

答案 1 :(得分:0)

这比我想象的要简单得多。在用户上添加具有不同计数的度量可以解决问题。