Time 电力双比较措施在一段时间内
我目前正在编写PowerBI脚本,这让我很头疼。我引入了一个度量,它显示了公司中每个公司的销售额。基本上是这样的Time 电力双比较措施在一段时间内,time,powerbi,measure,related-content,Time,Powerbi,Measure,Related Content,我目前正在编写PowerBI脚本,这让我很头疼。我引入了一个度量,它显示了公司中每个公司的销售额。基本上是这样的 MarketShare = DIVIDE( CALCULATE( SUM('Monthly Reports'[Active Certificates]) ), CALCULATE( SUM('Monthly Reports'[Active Certificates]), ALL('Monthly Reports'[Institute]) )
MarketShare =
DIVIDE(
CALCULATE(
SUM('Monthly Reports'[Active Certificates])
),
CALCULATE(
SUM('Monthly Reports'[Active Certificates]),
ALL('Monthly Reports'[Institute])
)
)
这是一个漂亮的矩阵,显示了每个公司的市场份额与总销售额的比较。
现在,我应该在下面的矩阵中显示每个公司每月的市场份额变化(或者相同,甚至更好)。因此,七月应该显示一个空白单元格,因为它以前没有数据。8月应显示在第一行+0,34,9月应显示+0,3。。。等等,第一行的每一个条目都将继续向下。
我试图实现一个度量,它总是从上一个度量中扣除值,但到目前为止我还没有成功
Market Share Prev Period =
(
DIVIDE(
CALCULATE(
SUM('Monthly Reports'[Active Certificates])
),
CALCULATE(
SUM('Monthly Reports'[Active Certificates]),
ALL('Monthly Reports'[Institute])
)
)
)
-
(
DIVIDE(
CALCULATE(
SUM('Monthly Reports'[Active Certificates]),
DATEADD('Monthly Reports'[LoadDate], -1, MONTH)
),
CALCULATE(
SUM('Monthly Reports'[Active Certificates]),
DATEADD('Monthly Reports'[LoadDate], -1, MONTH),
ALL('Monthly Reports'[Institute])
)
)
)
我现在得到了奇怪的结果。如果我选择按日期筛选并添加整个日期,将显示下表,其中显示了中间日期的正确差异,但不是最终日期:
当我按日期和月份(如上面的另一张表)过滤时,我再次得到完全相同的结果
谢谢,
Vincenz在计算中使用ALLEXCEPT。 ALLEXCEPT从第一个参数中指定的扩展表中删除筛选器(从此表中的所有列中删除),仅保留以下参数中指定的列中的筛选器。这意味着您从矩阵中保留上下文(从标题中保留七月)。条件是相互排斥的 如果要执行相反的操作,请从“日期”列中删除筛选器。使用全部('TableName'[ColumnName]) 您的第一个度量应该如下所示:
Simple =
DIVIDE(CALCULATE ( SUM ( 'Monthly Reports'[Sales] ) )
, CALCULATE (
SUM ( 'Monthly Reports'[Sales] ),
ALL ( 'Monthly Reports'[Company] )
))
我解决了我的计算,并为错误显示的日期层次结构找到了解决方法。 有时,如果您不熟悉编程语言,那么问题的答案可能会像人们所期望的那样简单 完成的工作代码:
Market Share Prev Period =
IF(
CALCULATE(
SUM('Monthly Reports'[Sales]),
PREVIOUSMONTH('Monthly Reports'[SaleDate])
)
<> BLANK()
,
(
DIVIDE(
CALCULATE(
SUM('Monthly Reports'[Sales])
),
CALCULATE(
SUM('Monthly Reports'[Sales]),
ALL('Monthly Reports'[Company])
)
,
0
)
)
-
(
DIVIDE(
CALCULATE(
SUM('Monthly Reports'[Sales]),
PREVIOUSMONTH('Monthly Reports'[SaleDate])
),
CALCULATE(
SUM('Monthly Reports'[Sales]),
PREVIOUSMONTH('Monthly Reports'[SaleDate]),
ALL('Monthly Reports'[Company])
)
,
0
)
),
"-"
)
上一时期的市场份额=
如果(
算计(
总额(“月度报告”【销售】,
上个月(“月度报告”【销售日期】)
)
空白()
,
(
分开(
算计(
总额('月度报告'[销售])
),
算计(
总额(“月度报告”【销售】,
全部(【公司】月度报告)
)
,
0
)
)
-
(
分开(
算计(
总额(“月度报告”【销售】,
上个月(“月度报告”【销售日期】)
),
算计(
总额(“月度报告”【销售】,
上个月(“月度报告”【销售日期】,
全部(【公司】月度报告)
)
,
0
)
),
"-"
)
我发现,如果使用DateAdd(…,-1,Month),我只更改了读到的内容,而不是它在哪一列。因此,我总是缺少最新的值,因为在非正常情况下,-1操作无法读取该值,并且我缺少最旧的报告,因为在非正常情况下之前没有任何报告。
基本上我找到了函数:上个月(太简单了,不可能是真的)
此外,我在前面添加了一个IF子句来检查我是否在第一列。如果是这样的话,我就是在冲击这个值
我唯一的问题是,当显示日期层次结构时,我只在矩阵的所有字段中看到破折号,这是最后留下的。但是,如果我显示整个日期,我可以看到所有正确的值。我的解决方法是使用格式“mmmm”设置日期。这显示了同样的情况。我希望我不需要在任何进一步的步骤日期,因为我将需要再次回到这一点
所以我的结果看起来非常完美。
谢谢你的帮助!正如你所说,我已经实现了一些改变,现在我得到了更好的结果。然而,仍然存在两个问题。列中月份名称的显示以及错误的第一列和最后一列。我相应地换了职位!