问题:我正在尝试编写一个MDX查询,该查询将显示成员具有度量值的第一个日期。
数据障碍: 1.我无权访问数据仓库/源数据 2.我无法请求任何物理计算或多维数据集更改
寻找:我知道这与CUBE应该做的事情背道而驰,但是有什么方法可以实现这一结果。我遇到了锁定冲突和一般运行时问题。
背景:经过反复试验。我有一个有效的查询,但可悲的是,只有为少于10名的员工过滤时,它才是实际的。我尝试了一些循环,但是多维数据集中有约6万个员工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]
答案 0 :(得分:2)
尝试一下:
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
。
完成此操作的最有效方法是在事实表中添加带有度量1和度量2的日期列,然后在其上创建AggregateFunction = Min度量。但是您说您无法更改多维数据集,因此我没有提出该高级选项。