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 度量。但是你说你不能改变立方体所以我没有提出那个更好的选择。