使用icCube的MDX中的Histrogram

使用icCube的MDX中的Histrogram,mdx,iccube,Mdx,Iccube,如何使用MDX执行动态历史记录程序 例如,我们的模式基于web访问,我们有会话数和点击次数。我们希望有一次点击退出的会话数量,考虑到这可能取决于其他维度(国家、小时、进入页面…。要解决这个问题,我们将使用两个不同的概念。首先创建一个新的层次结构,然后使用MDX+ 首先,我们要创建一个新维度,[历史程序]。此新维度将包含具有两个成员属性的桶的定义:开始桶和结束桶。看起来像 Name start-bucket end-bucket 0-1 0 1 1-2

如何使用MDX执行动态历史记录程序


例如,我们的模式基于web访问,我们有会话数和点击次数。我们希望有一次点击退出的会话数量,考虑到这可能取决于其他维度(国家、小时、进入页面…。

要解决这个问题,我们将使用两个不同的概念。首先创建一个新的层次结构,然后使用MDX+

首先,我们要创建一个新维度,[历史程序]。此新维度将包含具有两个成员属性的桶的定义:开始桶和结束桶。看起来像

Name start-bucket end-bucket
0-1       0           1
1-2       1           2
2-3       2           3
...
10++     10   2147483647
此层次结构不链接到事实,并为每个成员定义两个定义一个bucket的属性

让我们在MDX中使用它

假设我们有一个维度[Sessions]和一个度量值[click outs]。首先,我们将使用icCube的OO特性,并创建一个向量,用于为每个会话计算[点击输出]的数量

->([Sessions],[click outs],EXCLUDEEMPTY)

Vector有一个函数hist(开始,结束),它完全满足我们的需要,并且计算开始和结束(排除)之间的所有发生次数

将其与我们新创建的层次结构结合起来,可以自动实现所有存储桶的计算。const函数确保向量只计算一次,因为这可能会很耗时

最后的MDX如下所示(请注意,可以在模式脚本中创建函数和计算成员,每个模式创建一次):


这里有一个动态计算的历史程序,可以很容易地插入仪表板并重复使用。

请您为这个问题添加更多细节。也是一个启动mdx脚本。也可能是你目标的一个模型。见下面的答案,这是一个我们经常遇到的问题。所以我在这里回答分享它
Vector( [Sessions], [click-outs], EXCLUDEEMPTY )->hist(0,1)
WITH
 CONST FUNCTION ClicksBySession() AS Vector( [Sessions], [Measures].[click-outs], EXCLUDEEMPTY )
 MEMBER [Session/Clickout] AS  ClicksBySession()->hist( [Histogram].currentMember.properties("start-bucket", TYPED) , [Histogram].currentMember.properties("end-bucket", TYPED) 
SELECT
   {[Session/Clickout] } on 0,
  [Histogram].on 1
FROM [clickout]
--where  [Geography].[Europe]