MDX OLAP 多维数据集查询优化
MDX OLAP Cube Query Optimization
问题:我正在尝试编写一个 MDX 查询,该查询将显示成员具有度量值的第一个日期。
数据障碍:
1. 我无权访问数据 warehouse/source 数据
2. 我不能请求任何物理计算或 CUBE 更改
寻找:我知道这违背了 CUBE 应该做的事情,但是有什么办法可以达到这个结果。我正在 运行 解决锁定冲突和一般 运行 时间问题。
背景:经过反复试验。我有一个有效的查询,但遗憾的是,它只有在为 <10 名员工过滤时才实用。我已经尝试了一些循环,但立方体中有大约 60k 名员工 ID,每个员工 ID 都有 10-20 个 emp 键(一个用于员工信息的每次更改)。
//must have values for measure 1 or 2
WITH
set NE_measures as
{
[Measures].[measure1] ,
[Measures].[measure2]
}
//first date with measure values for each unique emp key
MEMBER [Measures].[changedate] AS
Head
(
NonEmpty([Dim Date].[Date].[Date].allMEMBERS, NE_measures)
).Item(0).Member_Name
SELECT non empty {[Measures].[changedate]} ON COLUMNS,
non empty [Dim Employee].[Emp Key].[Emp Key].allmembers ON ROWS
FROM [Cube]
试试这个:
MEMBER [Measures].[changedate] AS
Min(
[Dim Date].[Date].[Date].allMEMBERS,
IIF(
NOT(ISEMPTY([Measures].[measure1]))
OR NOT(ISEMPTY([Measures].[measure2])),
[Dim Date].[Date].CurrentMember.MemberValue,
NULL
)
);
我假设 KeyColumn 或 ValueColumn 比名称更有可能正确排序。因此,如果 MemberValue
不起作用,请尝试 Member_Key
。
完成此操作的最有效方法是在事实 table 中添加一个日期列,其中包含度量 1 和度量 2,然后在其上创建一个 AggregateFunction=Min 度量。但是你说你不能改变立方体所以我没有提出那个更好的选择。
问题:我正在尝试编写一个 MDX 查询,该查询将显示成员具有度量值的第一个日期。
数据障碍: 1. 我无权访问数据 warehouse/source 数据 2. 我不能请求任何物理计算或 CUBE 更改
寻找:我知道这违背了 CUBE 应该做的事情,但是有什么办法可以达到这个结果。我正在 运行 解决锁定冲突和一般 运行 时间问题。
背景:经过反复试验。我有一个有效的查询,但遗憾的是,它只有在为 <10 名员工过滤时才实用。我已经尝试了一些循环,但立方体中有大约 60k 名员工 ID,每个员工 ID 都有 10-20 个 emp 键(一个用于员工信息的每次更改)。
//must have values for measure 1 or 2
WITH
set NE_measures as
{
[Measures].[measure1] ,
[Measures].[measure2]
}
//first date with measure values for each unique emp key
MEMBER [Measures].[changedate] AS
Head
(
NonEmpty([Dim Date].[Date].[Date].allMEMBERS, NE_measures)
).Item(0).Member_Name
SELECT non empty {[Measures].[changedate]} ON COLUMNS,
non empty [Dim Employee].[Emp Key].[Emp Key].allmembers ON ROWS
FROM [Cube]
试试这个:
MEMBER [Measures].[changedate] AS
Min(
[Dim Date].[Date].[Date].allMEMBERS,
IIF(
NOT(ISEMPTY([Measures].[measure1]))
OR NOT(ISEMPTY([Measures].[measure2])),
[Dim Date].[Date].CurrentMember.MemberValue,
NULL
)
);
我假设 KeyColumn 或 ValueColumn 比名称更有可能正确排序。因此,如果 MemberValue
不起作用,请尝试 Member_Key
。
完成此操作的最有效方法是在事实 table 中添加一个日期列,其中包含度量 1 和度量 2,然后在其上创建一个 AggregateFunction=Min 度量。但是你说你不能改变立方体所以我没有提出那个更好的选择。