SSAS MDX - 如何更改汇总方式在多维数据集中的工作方式?

时间:2012-02-10 03:00:52

标签: sql-server-2008-r2 ssas mdx ssas-2008

我想改变总结方式,以避免舍入错误。

我的计算只是A栏/ B栏

在层次结构的每个级别,我想要SUM(A列)/ Sum(B列)而不是SUM(所有单独的A列/ B列)

我如何在计算中或改变总结的工作方式?

3 个答案:

答案 0 :(得分:1)

您可以添加在聚合最后处理的calculated member。我们假设您将A和B定义为度量:

WITH
  MEMBER [Measures].[A/B] AS  ([Measures].[A]) / ([Measures].[B])
SELECT
 ...

您可以在多维数据集定义中添加计算成员,以便在所有mdx语句中都可以使用它。可以肯定的是,请注意Sum(A)/ Sum(B)!= Sum(A / B),如果需要,可以添加0 / null检查。

答案 1 :(得分:1)

您想要的是SUM(A列)/ Sum(B列)而不是SUM(所有单独的A列/ B列)。然后我假设你有两个措施:sum_column_asum_column_b

要创建新度量sum_column_a_b,您应该创建一个计算成员:

  • 在Visual Studio上打开您的多维数据集
  • 点击计算标签
  • 点击脚本视图并粘贴以下代码:

要粘贴的代码:

CREATE MEMBER CURRENTCUBE.[Measures].[sum_column_a_b]
 AS iif(  [Measures].[sum_column_b] > 0,
        [Measures].[sum_column_a] / [Measures].[sum_column_b], 
        0 ), 
FORMAT_STRING = "Percent", 
VISIBLE = 1 ,  ASSOCIATED_MEASURE_GROUP = 'yourDesiredGroup'; 

处理多维数据集时,此新度量将可用。

答案 2 :(得分:0)

据我所知,您在sql db或DSV(数据源视图)中有一个计算字段(A列/ B列)。因此,您可以为每列创建两个SUM度量(A列的一个求和度量,B列的第二个度量值),并在新计算的度量中使用它们

iif([Measure].[ColumnB]=0 OR [Measure].[ColumnB] is NULL, 0, [Measure].[ColumnA]/[Measure].[ColumnB])