计算 Power Pivot 模型中总计的百分比
Posted
技术标签:
【中文标题】计算 Power Pivot 模型中总计的百分比【英文标题】:Calculating Percent of Total in Power Pivot Model 【发布时间】:2013-08-05 16:49:21 【问题描述】:如图所示,我创建了一个电源数据透视表。我想计算季度之间的销售变化。例如,我必须将 2012Q4
中的企业家族 "Acer"
的销售额除以所有企业家族的总和。我正在使用计算测量来执行此操作,但我不确定我可以使用什么公式。
我需要创建两列,一列用于2012Q4
总数的百分比,另一列用于2013Q1
总数的百分比。然后我将创建另一个度量来找出差异。所以 2012Q4
的公式应该是这样的 1624442 / (1624442+22449+1200+16123)
。知道哪个功能可以帮助我吗?
【问题讨论】:
这个问题不应该因为离题而被关闭。这是一个有效的问题。用户正在使用 PowerPivot 模型,不能简单地切换他的数据透视表来显示总数的百分比。这需要将 DAX 计算添加到模型中。我们一直在回答 DAX 问题。 投票重新开放。 PowerPivot 模型使用 DAX。 DAX 是一门完整的编程语言。不要让 Excel 部分欺骗您。它只是该语言的运行时主机。这不是 SU 的合适人选,因为他们专注于硬件/软件/网络。 SO 用于编程。另外,我们对 DAX 有一个血腥的标签。不要关闭你不明白的东西。 【参考方案1】:听起来您正在衡量每个企业家族在每个季度的总百分比变化。您将需要创建 3 个计算度量。我不确定你的模型是什么样的,所以我不能给你确切的公式,但这里是想法。
CurrentQtr%ofTotal:= Divide(Sum('Sales'[Units]),Calculate(Sum('Sales'[Units]), All['Product'[Corporate Family])))
PrevQtr%ofTotal:= DIVIDE(CALCULATE(Sum('Sales'[Units]), DATEADD(DimDate[DateKey], -1, QUARTER)),
CALCULATE(Sum('Sales'[Units]), DATEADD(DimDate[DateKey], -1, QUARTER), All('Product'[Corporate Family]))))
Change%ofTotal:= DIVIDE(([CurrentQtr%ofTotal]-[PrevQtr%ofTotal]),[PrevQtr%ofTotal])
我使用了divide function,因为它可以处理除以零错误。您使用 ALL function 从过滤器上下文中删除 Corporate Family 列上的过滤器。 Change%ofTotal 只是为了找到差异。我正在计算百分比变化,但您可能只想减去。
这里是the link,这是一篇关于时间智能的好博文。 here's 计算总数的百分比。
【讨论】:
【参考方案2】:有关百分比,请按照Tech on the Net 上的教程进行操作。
添加另一个用于计算两个数据透视列之间差异的列将不起作用 - 此列是“不可透视的”,因为它依赖于列定义。您需要将数据透视表作为值复制并粘贴到另一个工作表并在那里进行额外的计算。
【讨论】:
我使用的是 powerpivot 而不是简单的枢轴。我想我可以在 power pivot 中编写度量,而在 pivot 中是不可能的。枢轴的问题是,如果我更改过滤器,那么我的百分比会发生变化......我可以在功率枢轴中克服......唯一的问题是我无法正确获得总和...... 听起来您想计算当前季度和上一季度的总额百分比。两篇博文会有所帮助:blogs.msdn.com/b/analysisservices/archive/2010/04/12/…。查看 [StoreSalesPrevYr] 计算。您可以用季度替换年份。要获得总数的百分比,请参阅madronasg.com/blog/…。基本上使用 =Calculate(Sum('Sales'[Units]), ALL('Product'[Corporate Family])) 之类的东西。您将获得当前 Qtr % calc 和 Prev Qtr % calc。以上是关于计算 Power Pivot 模型中总计的百分比的主要内容,如果未能解决你的问题,请参考以下文章
在 MS SQL Server 2008 的 Pivot 中计算水平总计
157_模型_Power BI & Power Pivot 如何建立和维护维度表