是否可以在 Power BI Desktop 的矩阵中创建数字范围切片器和筛选数据?
Is it possible to create numeric range slicer and filter data in matrix in Power BI Desktop?
我有两个度量矩阵:Total Premium
和 Binds Total
..................................................... ............
是否可以创建范围切片器(如下所示),它会根据保费金额过滤矩阵中的数据?
查询中的数据如下所示:
所以每个 ControlNo
的 Premum
的总和应该对应于范围切片器。
例如 ControlNo
10 应该在 10,000 and 20,000
之间。因为 3,000 + 9,000 = 12,000 美元
和ControlNo
20应该在20,000 and 30,000
之间的范围内
因为 15,000 + 7,000 = 22,000 美元
.PBIX 文件可在此处访问:https://www.dropbox.com/s/a3l6e51r39t3kd1/GrossBudgetTest.pbix?dl=0
先创建一个table'Ranges'。您可以导入它或使用“主页”选项卡上的“输入数据”。它应该是这样的:
然后创建这三个masures:
MinThreshold = MIN('Ranges'[Min])
MaxThreshold = MAX('Ranges'[Max])
Total Premium per ControlNo in Range =
VAR selectedControlNo =
SELECTEDVALUE ( 'fact_Premium'[ControlNo] )
RETURN
IF (
CALCULATE ( [Total Premium], 'fact_Premium'[ControlNo] = selectedControlNo )
>= [MinThreshold]
&& CALCULATE ( [Total Premium], 'fact_Premium'[ControlNo] = selectedControlNo )
< [MaxThreshold],
[Total Premium],
BLANK ()
)
您不能在 CALCULATE 函数的 [Filter1] 中直接使用 SELECTEDVALUE 函数。这就是为什么您必须在此 maesure 中使用 VAR RETURN 或 CALCULATE(expression,FILTER()) 构造。
现在您可以创建以下矩阵和切片器。将 'Ranges'[Ranges] 放入切片器中。将 'fact_Premium'[ControlNo] 放在行上,将 [范围内每个 ControlNo 的总保费] 放在矩阵中的值上。
Marco 的答案看起来不错,但您也可以使用计算列实现分组,而不是定义新的 table 并将该列用作切片器:
Range =
VAR Premium =
CALCULATE(SUM(fact_Premium[Premium]),
ALLEXCEPT(fact_Premium, fact_Premium[ControlNo])
)
RETURN
SWITCH(TRUE(),
Premium <= 10000, "From 0 to 10,000",
Premium <= 20000, "From 10,000 to 20,000",
Premium <= 30000, "From 20,000 to 30,000",
Premium <= 40000, "From 30,000 to 40,000",
Premium > 40000, "More than 40,000"
)
它的缺点是它不是度量,并且可能不会以您想要的方式与您的切片器交互,因为计算列不受切片器的影响。
请注意 Power BI 确实有一些 built-in binning capability。
例如,您可以右键单击 Premium
列和 select 组,然后选择数据的分类方式。
在这种情况下,这对您不起作用,因为您希望在聚合级别进行分类。
我有两个度量矩阵:Total Premium
和 Binds Total
..................................................... ............
是否可以创建范围切片器(如下所示),它会根据保费金额过滤矩阵中的数据?
查询中的数据如下所示:
所以每个 ControlNo
的 Premum
的总和应该对应于范围切片器。
例如 ControlNo
10 应该在 10,000 and 20,000
之间。因为 3,000 + 9,000 = 12,000 美元
和ControlNo
20应该在20,000 and 30,000
之间的范围内
因为 15,000 + 7,000 = 22,000 美元
.PBIX 文件可在此处访问:https://www.dropbox.com/s/a3l6e51r39t3kd1/GrossBudgetTest.pbix?dl=0
先创建一个table'Ranges'。您可以导入它或使用“主页”选项卡上的“输入数据”。它应该是这样的:
然后创建这三个masures:
MinThreshold = MIN('Ranges'[Min])
MaxThreshold = MAX('Ranges'[Max])
Total Premium per ControlNo in Range =
VAR selectedControlNo =
SELECTEDVALUE ( 'fact_Premium'[ControlNo] )
RETURN
IF (
CALCULATE ( [Total Premium], 'fact_Premium'[ControlNo] = selectedControlNo )
>= [MinThreshold]
&& CALCULATE ( [Total Premium], 'fact_Premium'[ControlNo] = selectedControlNo )
< [MaxThreshold],
[Total Premium],
BLANK ()
)
您不能在 CALCULATE 函数的 [Filter1] 中直接使用 SELECTEDVALUE 函数。这就是为什么您必须在此 maesure 中使用 VAR RETURN 或 CALCULATE(expression,FILTER()) 构造。
现在您可以创建以下矩阵和切片器。将 'Ranges'[Ranges] 放入切片器中。将 'fact_Premium'[ControlNo] 放在行上,将 [范围内每个 ControlNo 的总保费] 放在矩阵中的值上。
Marco 的答案看起来不错,但您也可以使用计算列实现分组,而不是定义新的 table 并将该列用作切片器:
Range =
VAR Premium =
CALCULATE(SUM(fact_Premium[Premium]),
ALLEXCEPT(fact_Premium, fact_Premium[ControlNo])
)
RETURN
SWITCH(TRUE(),
Premium <= 10000, "From 0 to 10,000",
Premium <= 20000, "From 10,000 to 20,000",
Premium <= 30000, "From 20,000 to 30,000",
Premium <= 40000, "From 30,000 to 40,000",
Premium > 40000, "More than 40,000"
)
它的缺点是它不是度量,并且可能不会以您想要的方式与您的切片器交互,因为计算列不受切片器的影响。
请注意 Power BI 确实有一些 built-in binning capability。
例如,您可以右键单击 Premium
列和 select 组,然后选择数据的分类方式。
在这种情况下,这对您不起作用,因为您希望在聚合级别进行分类。