为维度创建自定义层次结构 MDX
Create custom hierarchy MDX for dimension
在多维数据集中有一个项目维度。项目 - 除了项目编号 - 还可以具有其他(数字)属性。
D_Item
- 属性 [attrib1]
- 元素 1 [70]
- 元素 2 [40]
- 元素 3 [1]
- 元素 4 [2]
- 其他层级
我的目标是使用 iif 或 case ... when ... 创建可用于切片的新层次结构(或集合?)。
为什么不把它持久化到立方体中呢?因为它是一个非常单一的用例,而且是在报告中使用...
我想要的结构如下所示:
WITH MyNewHierarchy AS
CASE
WHEN [D_Item].[attrib].Value = 70 then 'Company 1'
WHEN [D_Item].[attrib].Value = 40 then 'Company 2'
WHEN [D_Item].[attrib].Value = 1 OR [D_Item].[attrib].Value = 2 then 'Company 3'
END
SELECT Measure ON COLUMNS,
[D_Date].[Month].Chilren on ROWS
FROM CUBE
WHERE
[MyNewHierarchy].[Company 3]
这可能是一种非常相关的方法,但我希望有一天能达到这个结果。
我不知道你是否可以动态创建一个全新的层次结构。
我知道您可以创建自定义成员并 "host" 在未使用的现有层次结构中创建它们。您可以使用元组执行此操作,但必须在每个元组中包含主机的 [All]
成员。
所以你的三个新成员会是这样的:
MEMBER [SomeExistingDim].[SomeExistingHier].[All].[Company 1] AS
(
[SomeExistingDim].[SomeExistingHier].[All]
,[D_Item].[attrib].[Element1]
)
MEMBER [SomeExistingDim].[SomeExistingHier].[All].[Company 2] AS
(
[SomeExistingDim].[SomeExistingHier].[All]
,[D_Item].[attrib].[Element2]
)
MEMBER [SomeExistingDim].[SomeExistingHier].[All].[Company 3] AS
(
[SomeExistingDim].[SomeExistingHier].[All]
,[D_Item].[attrib].[Element3]
)
+
(
[SomeExistingDim].[SomeExistingHier].[All]
,[D_Item].[attrib].[Element4]
)
然后您可以根据以上内容创建自定义集:
SET [newMembers] AS
{
[SomeExistingDim].[SomeExistingHier].[All].[Company 1],
[SomeExistingDim].[SomeExistingHier].[All].[Company 2],
[SomeExistingDim].[SomeExistingHier].[All].[Company 3],
}
在多维数据集中有一个项目维度。项目 - 除了项目编号 - 还可以具有其他(数字)属性。
D_Item
- 属性 [attrib1]
- 元素 1 [70]
- 元素 2 [40]
- 元素 3 [1]
- 元素 4 [2]
- 其他层级
我的目标是使用 iif 或 case ... when ... 创建可用于切片的新层次结构(或集合?)。 为什么不把它持久化到立方体中呢?因为它是一个非常单一的用例,而且是在报告中使用...
我想要的结构如下所示:
WITH MyNewHierarchy AS
CASE
WHEN [D_Item].[attrib].Value = 70 then 'Company 1'
WHEN [D_Item].[attrib].Value = 40 then 'Company 2'
WHEN [D_Item].[attrib].Value = 1 OR [D_Item].[attrib].Value = 2 then 'Company 3'
END
SELECT Measure ON COLUMNS,
[D_Date].[Month].Chilren on ROWS
FROM CUBE
WHERE
[MyNewHierarchy].[Company 3]
这可能是一种非常相关的方法,但我希望有一天能达到这个结果。
我不知道你是否可以动态创建一个全新的层次结构。
我知道您可以创建自定义成员并 "host" 在未使用的现有层次结构中创建它们。您可以使用元组执行此操作,但必须在每个元组中包含主机的 [All]
成员。
所以你的三个新成员会是这样的:
MEMBER [SomeExistingDim].[SomeExistingHier].[All].[Company 1] AS
(
[SomeExistingDim].[SomeExistingHier].[All]
,[D_Item].[attrib].[Element1]
)
MEMBER [SomeExistingDim].[SomeExistingHier].[All].[Company 2] AS
(
[SomeExistingDim].[SomeExistingHier].[All]
,[D_Item].[attrib].[Element2]
)
MEMBER [SomeExistingDim].[SomeExistingHier].[All].[Company 3] AS
(
[SomeExistingDim].[SomeExistingHier].[All]
,[D_Item].[attrib].[Element3]
)
+
(
[SomeExistingDim].[SomeExistingHier].[All]
,[D_Item].[attrib].[Element4]
)
然后您可以根据以上内容创建自定义集:
SET [newMembers] AS
{
[SomeExistingDim].[SomeExistingHier].[All].[Company 1],
[SomeExistingDim].[SomeExistingHier].[All].[Company 2],
[SomeExistingDim].[SomeExistingHier].[All].[Company 3],
}