基于SSAS计算量度的SSAS维度属性

时间:2018-11-26 23:48:32

标签: ssas olap olap-cube

我目前正在解决一个问题,希望您对此有所帮助。

我需要基于对多维数据集本身执行的计算来动态关联SSAS多维数据集(多维)中维度的属性。

根据用户选择的日期进行简化,我有一个计算(已经完成),该计算返回了该类型的物料有库存的天数。有了该值,我想根据一系列值返回一个属性。

例如:

Nr_Days_Calculated = 80 

尺寸:

ID  INI  END        DSC

1     0  90         TextA

2    91  180        TextB

3   181  99999      TextC

结果:1 - TextA

有人可以帮助我吗?感谢您的关注。

1 个答案:

答案 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;

输出:

DynamicDim

我认为您的过滤器必须使用> =和<= Nr_Days_Calculated。但是不确定您要显示哪种度量。 1 - TextA[Measures].[Nr_Days_Calculated]相关吗?如果是,那么我们很好,请仅使用您的度量和SUM,否则将其作为聚合而不是Count()。

这不是最佳性能的解决方案(由于动态计算),但仍然有效。希望对您有所帮助。