基于度量值的PowerBI动态装箱(范围更改)
我试图通过binning来表示一些连续的数据。一个区域的连续加权数据应分为:非常高、非常高、非常低、非常低。权重值基于按区域分组的特定类型事件之间的交互,因此可以根据报告用户选择的类型进行更改 我在下面提供了一些示例数据,并概述了迄今为止所做的工作 从五组面积数据(A-E)开始。每个事件中有一个或多个事件类型。每个事件都有一个权重和在该区域内发生的次数(计数) 添加计算列CC_ALL_WGT(加权*计数) 创建一个度量:基于度量值的PowerBI动态装箱(范围更改),powerbi,dax,powerbi-desktop,binning,summarize,Powerbi,Dax,Powerbi Desktop,Binning,Summarize,我试图通过binning来表示一些连续的数据。一个区域的连续加权数据应分为:非常高、非常高、非常低、非常低。权重值基于按区域分组的特定类型事件之间的交互,因此可以根据报告用户选择的类型进行更改 我在下面提供了一些示例数据,并概述了迄今为止所做的工作 从五组面积数据(A-E)开始。每个事件中有一个或多个事件类型。每个事件都有一个权重和在该区域内发生的次数(计数) 添加计算列CC_ALL_WGT(加权*计数) 创建一个度量: M_WGT = DIVIDE(SUM(sample_data[CC_A
M_WGT = DIVIDE(SUM(sample_data[CC_ALL_WGT]), SUM(sample_data[4_count]))
这在按区域分组后是有意义的,我们可以看到该区域得到了一个总体权重分数
这可以通过基于我们希望检查的事件类型对数据进行切片来改变:
我们还可以设置额外的措施来获得最小值;最大值;基于类型选择的测量中位数:
M_MIN_M_WGT = IF(
countrows(values(sample_data[1_area])) = 1,
sample_data[M_WGT],
MINX(
values(sample_data[1_area]),
sample_data[M_WGT]
)
)
进行切片器选择时,会按预期进行哪些更改
还应设置一个测量值,以确定最小值和中间值之间的中点以及最大值和中间值之间的中点
M_MidMinMed =
sample_data[M_MED_M_WGT] - ((sample_data[M_MED_M_WGT] - sample_data[M_MIN_M_WGT]) / 2)
我想用这些值创建一个基于以下内容的带状:
VeryLow:(最小到最小中点)
低:(最小到中值)
高:(中值到MedMax中点)
极高:(最大到最大)
所以根据下面的选择
垃圾箱的设置如下所示
Range =
VAR temp =
CALCULATE ( sample_data[M_WGT] )
RETURN
IF (
temp < 0.76,
"1_VeryLow",
IF (
AND ( temp > 0.76, temp <= 0.93 ),
"2_Low",
IF (
AND ( temp > 0.93, temp <= 1.01 ),
"3_High",
"4_VeryHigh"
)
)
)
Range =
VAR temp =
CALCULATE ( sample_data[M_WGT] )
RETURN
IF (
temp < 0.76,
"1_VeryLow",
IF (
AND ( temp > 0.76, temp <= 0.93 ),
"2_Low",
IF (
AND ( temp > 0.93, temp <= 1.01 ),
"3_High",
"4_VeryHigh"
)
)
)
范围=
变温=
计算(样本数据[M\U WGT])
返回
如果(
温度<0.76,
“1_VeryLow”,
如果(
和(temp>0.76、temp>0.93、temp您可以在一次测量中定义一个区域的桶:
Bucket =
VAR Weights =
SUMMARIZE ( ALLSELECTED ( sample_data ), sample_data[1_area], "Wgt", [M_WGT] )
VAR MinW = MINX ( Weights, [Wgt] )
VAR MaxW = MAXX ( Weights, [Wgt] )
VAR MedW = MEDIANX ( Weights, [Wgt] )
VAR MinMedW = ( MinW + MedW ) / 2
VAR MedMaxW = ( MedW + MaxW ) / 2
VAR CurrW = CALCULATE( [M_WGT], ALLSELECTED( sample_data[2_type] ) )
RETURN
SWITCH (
TRUE (),
CurrW <= MinMedW, "1_VeryLow",
CurrW <= MedW, "2_Low",
CurrW <= MedMaxW, "3_High",
CurrW <= MaxW, "4_VeryHigh"
)
将Ranges[Range]
放在轴上,并根据需要定义计数度量
CountArea =
COUNTROWS ( FILTER ( sample_data, [Range] = SELECTEDVALUE ( Ranges[Range] ) ) )
我真的不知道你想计数什么,它是否应该是一个独立的计数,或者是否应该包含4\u计数
,但根据需要修改这个计数度量。你能把样本数据放在文本形式中以便更容易复制吗?一个指向PBIX的链接也会很有用。@Alexisson我已经将原始帖子编辑为in包括数据(csv)和报告(.pbix)的链接这绝对是拥有动态箱的一种有效方法-非常感谢您的洞察力。我试图计算的是每个区域的总m_WGT,而不是每个单独类型的m_WGT。因此,对于DF,区域a将计算一次,m_WGT值为1.10,而不是计算三次(1.9)、RTC(1)和SLLR(0.35)。有什么方法可以汇总CountArea吗?类似于这样:CountArea_ii=COUNTROWS(过滤器(汇总(采样数据、采样数据[1_area]、“区域_聚合”、[Range]=SELECTEDVALUE(范围[Range]))如何SUMX(值(采样数据[1_area]),如果([Bucket]在值(范围[Range]),1])中)
?我认为这看起来很有效。我将继续进行一些检查,但根据进展情况和对问题的总体了解接受此答案。感谢您的时间、见解和帮助。如果出现其他问题,我将提出不同的问题。