我目前正在解决一个问题,希望您对此有所帮助。
我需要基于对多维数据集本身执行的计算来动态关联SSAS多维数据集(多维)中维度的属性。
根据用户选择的日期进行简化,我有一个计算(已经完成),该计算返回了该类型的物料有库存的天数。有了该值,我想根据一系列值返回一个属性。
例如:
Nr_Days_Calculated = 80
尺寸:
ID INI END DSC
1 0 90 TextA
2 91 180 TextB
3 181 99999 TextC
结果:1 - TextA
有人可以帮助我吗?感谢您的关注。
答案 0 :(得分:0)
如果您的维度也具有动态计算,这是可行的。让我向您展示另一个示例,但是想法是相同的。
如果有第二次,第三次,第四次签署的客户(通过电子邮件标识),我有一个[重复客户]维度-请将该客户移至该维度的适当成员。
首先,使用一个默认成员创建尺寸。
第二,添加几个空成员:
(您可以跳过它,因为暗淡的成员在您的情况下已实现)
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[One] as NULL;
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Two] as NULL;
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Three] as NULL;
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Four] as NULL;
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Five] as NULL;
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[6+] as NULL;
CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[N/A] as NULL;
第三,添加他们的计算:
SCOPE([Repeat Customers].[Repeat Customers].[All].[One],[Measures].[Count]);
THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])=1));
END SCOPE;
SCOPE([Repeat Customers].[Repeat Customers].[All].[Two],[Measures].[Count]);
THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])=2));
END SCOPE;
...
SCOPE([Repeat Customers].[Repeat Customers].[All].[6+],[Measures].[Count]);
THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])>=6));
END SCOPE;
SCOPE([Repeat Customers].[Repeat Customers].[All].[N/A],[Measures].[Count]);
THIS=([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])
-SUM({
[Repeat Customers].[Repeat Customers].[All].[One]
,[Repeat Customers].[Repeat Customers].[All].[Two]
,[Repeat Customers].[Repeat Customers].[All].[Three]
,[Repeat Customers].[Repeat Customers].[All].[Four]
,[Repeat Customers].[Repeat Customers].[All].[Five]
,[Repeat Customers].[Repeat Customers].[All].[6+]
},[Measures].[Count]);
END SCOPE;
输出:
我认为您的过滤器必须使用> =和<= Nr_Days_Calculated。但是不确定您要显示哪种度量。 1 - TextA
与[Measures].[Nr_Days_Calculated]
相关吗?如果是,那么我们很好,请仅使用您的度量和SUM,否则将其作为聚合而不是Count()。
这不是最佳性能的解决方案(由于动态计算),但仍然有效。希望对您有所帮助。