我正在研究一种度量值,该度量值本质上只是对与某些序列 ID 关联的付费值求和,这些值在预定义范围内,但是当我在矩阵视觉对象中使用该度量时,我在尝试解决问题时遇到问题。
该措施概述如下:
Filtered Paid :=
VAR Selection =
SELECTEDVALUE ( 'Selection'[ID], 1 )
VAR ThreeSigma =
3 * STDEV.P ( Data[PAID] )
VAR SeqMean =
AVERAGE ( Data[PAID] )
VAR ExcludedSeqs =
CALCULATETABLE (
VALUES ( Data[SequenceId] ),
KEEPFILTERS (
FILTER (
ALL ( Data[PAID] ),
Data[PAID] < SeqMean + ThreeSigma
&& Data[PAID] > SeqMean - ThreeSigma
)
)
)
RETURN
SWITCH (
Selection,
3, CALCULATE ( SUM ( Data[PAID] ), ExcludedSeqs ),
CALCULATE ( SUM ( Data[PAID] ) )
)
当我在卡片或地图中使用它时,度量值工作得很好,但是当我尝试在矩阵视觉对象中将其用作"值"字段,Data[SequenceId]
作为"行"字段时,度量值永远不会呈现任何值它只是永远旋转。我尝试使用这种措施的几种不同变体,似乎都给了我同样的问题。我还尝试了视觉级别过滤器来排除这些记录,但我似乎无法将其记下来。
任何帮助将不胜感激!
谢谢!!
我最终使用视觉级别过滤器找到了解决方案:
Visual Level Filter :=
VAR Selection =
SELECTEDVALUE ( 'Selection'[ID], 1 )
VAR ThreeSigma =
CALCULATE ( 3 * STDEV.P ( Data[PAID] ), ALL ( Data[SequenceId] ) )
VAR SeqMean =
CALCULATE ( AVERAGE ( Data[PAID] ), ALL ( Data[SequenceId] ) )
VAR Total =
SUM ( Data[PAID] )
RETURN
SWITCH (
Selection,
3, IF ( AND ( Total < SeqMean + ThreeSigma, Total > SeqMean - ThreeSigma ), 1, 0 ),
1
)
基本上,我只是将其设置为等于 1 作为视觉级别过滤器,并在矩阵上使用calculate(sum(data[paid]))
。它有效,但如果有人有一个更优雅的解决方案,可能是高性能的,我全听。