SSAS 多维数据集计算的成员无穷大总计值

Posted

技术标签:

【中文标题】SSAS 多维数据集计算的成员无穷大总计值【英文标题】:SSAS Cube Calculated Member infinity Totals value 【发布时间】:2021-03-03 19:19:24 【问题描述】:

我正在使用实时连接 SSAS 多维数据集开发 Power BI。我有两个维度表,客户和年份以及一个事实表。我想生成一个报告,显示每年按公民身份划分的销售额比例。我在 SSAS Cube 上使用了这个 MDX 表达式来创建一个新的计算成员。

(([Year].[Year].currentmember,[Dim Customer].[Cittzenship].currentmember),[Measures].[Totale Sales]) /([Cittzenship].currentmember.parent,[Measures].[Totale Sales])

查询结果按预期工作,但在 Power BI 报告表上,总值为无穷大。 Result

我一直在解决这个问题。如果有人指导我如何解决这个问题,我会很高兴。

【问题讨论】:

【参考方案1】:

原因可能是对于总计,父级不存在,因此其值被替换为 null 进行计算。在大多数情况下,SSAS 将 null 替换为 0,因此除以 0,这在数学上是无穷大。您可以做的是使用Divide 函数而不是/,这正是为此目的,因为它提供与/ 相同的结果,除非除数为零,在这种情况下它提供null。

顺便说一句:Divide 是在 SSAS 2012 中引入的,因此如果您至少不在该版本上,则必须使用像 IIf(divisor <> 0, dividend / divisor, null) 这样的构造,这正是 Divide(dividend, divisor) 的定义方式。就像我说的 上面,在MDX中对比SQL,比较0也隐式比较null。

【讨论】:

谢谢@FrankPL。我使用 IIF 函数来避免被零除。

以上是关于SSAS 多维数据集计算的成员无穷大总计值的主要内容,如果未能解决你的问题,请参考以下文章

错误处理SSAS多维数据集信号灯超时

如何以编程方式检查 SSAS 数据库/多维数据集是不是正在处理?

OLAP 多维数据集中计算成员中的条件

SSAS 多维数据集 Excel 数据透视表隐藏字段

Ssas 多维数据集向导不会为事实表列创建度量

SSAS 多维数据集处理