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