使用 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 来生成这些存储桶:非技术用户将是自主的