0

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

Underlyings
|_ALL
|_UnderlyerCurrency

我们的用户希望对这些货币进行分组,每个组可能根据用户的选择而有所不同。

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

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

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

4

1 回答 1

2

使用 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 来编写)。

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

在此处输入图像描述 在此处输入图像描述

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

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