ActivePivot中的动态分段

时间:2014-09-03 12:24:48

标签: mdx activepivot

在我们的ActivePivot项目中,我们使用预定义的层次结构和级别设计了我们的多维数据集。其中,我们的货币都属于同一水平。

Underlyings
|_ALL
|_UnderlyerCurrency

我们的用户希望将这些货币分组,根据用户的选择,每组可能会有所不同。

我知道已经可以使用Analysis Dimension对ActivePivot中的成员进行分组/分组,但这对我们的用例来说太静态了。

是否可以按用户对这些货币进行分组?是否可以在不重新启动服务器的情况下进行配置?

PS:我们使用Excel和ActivePivot Live作为UI

1 个答案:

答案 0 :(得分:1)

使用MDX,可以定义存储桶或组。

下面是一个示例MDX,它在您现有的层次结构中动态创建两个存储桶欧洲和亚洲(我假设维度和层次结构具有相同的名称):

WITH 
Member [Underlyings].[Underlyings].[ALL].[Europe] AS Aggregate(
  {
    [Underlyings].[Underlyings].[ALL].[AllMember].[EUR],
    [Underlyings].[Underlyings].[ALL].[AllMember].[GBP],
    [Underlyings].[Underlyings].[ALL].[AllMember].[CHF]
  }
) 
Member [Underlyings].[Underlyings].[ALL].[Europe].[EUR] AS Aggregate(
  {
    [Underlyings].[Underlyings].[ALL].[AllMember].[EUR]
  }
) 
Member [Underlyings].[Underlyings].[ALL].[Europe].[GBP] AS Aggregate(
  {
    [Underlyings].[Underlyings].[ALL].[AllMember].[GBP]
  }
) 
Member [Underlyings].[Underlyings].[ALL].[Europe].[CHF] AS Aggregate(
  {
    [Underlyings].[Underlyings].[ALL].[AllMember].[CHF]
  }
) 
Member [Underlyings].[Underlyings].[ALL].[Asia] AS Aggregate(
  {
    [Underlyings].[Underlyings].[ALL].[AllMember].[JPY]
  }
) 
Member [Underlyings].[Underlyings].[ALL].[Asia].[JPY] AS Aggregate(
  {
    [Underlyings].[Underlyings].[ALL].[AllMember].[JPY]
  }
) 
SELECT NON EMPTY {
  [Underlyings].[Underlyings].[ALL].[Europe],
  [Underlyings].[Underlyings].[ALL].[Europe].[EUR],
  [Underlyings].[Underlyings].[ALL].[Europe].[GBP],
  [Underlyings].[Underlyings].[ALL].[Europe].[CHF],
  [Underlyings].[Underlyings].[ALL].[Asia],
  [Underlyings].[Underlyings].[ALL].[Asia].[JPY]
} ON ROWS 
FROM [YourCube]

使用ActivePivot Live,用户可以编写自己的MDX(尽管如此,您无法使用Excel)。

然后界面将足够智能,以便为用户提供此表上的所有常规控件(向导操作,向下钻取,排序,过滤......)。最重要的是,他们将能够在其中导航,就像它是一个常规的层次结构一样!

enter image description here enter image description here

如果您不希望用户编写自己的MDX,您有两种解决方案:

  • 让具有足够MDX知识的人编写这些查询,将其保存在将与非技术用户共享的书签中
  • 扩展界面以创建自己的UI,生成这些存储桶:非技术用户将是自主的