Powerbi 是否可以在Power BI桌面中创建数值范围切片器并过滤矩阵中的数据?

Powerbi 是否可以在Power BI桌面中创建数值范围切片器并过滤矩阵中的数据?,powerbi,dax,powerbi-embedded,powerbi-desktop,Powerbi,Dax,Powerbi Embedded,Powerbi Desktop,我有两个度量矩阵:Total Premium和Binds Total ............................................................. 有没有可能创建一个范围切片器(类似于下面的一个),它可以根据溢价量过滤矩阵中的数据 查询中的数据如下所示: 因此每个ControlNo的Premum之和应该对应于范围切

我有两个度量矩阵:
Total Premium
Binds Total
.............................................................

有没有可能创建一个范围切片器(类似于下面的一个),它可以根据溢价量过滤矩阵中的数据

查询中的数据如下所示:

因此每个
ControlNo
Premum
之和应该对应于范围切片器

例如,
ControlNo
10应该在
10000到20000之间。因为3000+9000=12000美元

ControlNo
20应该在
20000和30000之间
因为15000+7000=22000美元


.PBIX文件可在此处访问:

首先创建一个表“范围”。您可以导入它或使用“主页”选项卡上的“输入数据”。应该是这样的:

然后创建以下三个保证:

MinThreshold=MIN('Ranges'[MIN])

MaxThreshold=MAX('Ranges'[MAX])

每个ControlNo范围内的总保费=
VAR selectedControlNo=
SELECTEDVALUE('fact\u Premium'[ControlNo])
回来
如果(
计算([总保险费],“事实保险费”[ControlNo]=selectedControlNo)
>=[MinThreshold]
&&计算([总保险费],“事实保险费”[ControlNo]=selectedControlNo)
<[MaxThreshold],
[保费总额],
空白()
)
不能直接在计算函数的[Filter1]中使用SELECTEDVALUE函数。这就是为什么您必须在这个示例中使用VAR-RETURN或CALCULATE(expression,FILTER())构造

现在您可以创建以下矩阵和切片器。将“范围”[Ranges]放入切片器。将“事实溢价”[ControlNo]放在行上,将[Total Premium per ControlNo in Range]放在矩阵中的值上


首先创建一个表“范围”。您可以导入它或使用“主页”选项卡上的“输入数据”。应该是这样的:

然后创建以下三个保证:

MinThreshold=MIN('Ranges'[MIN])

MaxThreshold=MAX('Ranges'[MAX])

每个ControlNo范围内的总保费=
VAR selectedControlNo=
SELECTEDVALUE('fact\u Premium'[ControlNo])
回来
如果(
计算([总保险费],“事实保险费”[ControlNo]=selectedControlNo)
>=[MinThreshold]
&&计算([总保险费],“事实保险费”[ControlNo]=selectedControlNo)
<[MaxThreshold],
[保费总额],
空白()
)
不能直接在计算函数的[Filter1]中使用SELECTEDVALUE函数。这就是为什么您必须在这个示例中使用VAR-RETURN或CALCULATE(expression,FILTER())构造

现在您可以创建以下矩阵和切片器。将“范围”[Ranges]放入切片器。将“事实溢价”[ControlNo]放在行上,将[Total Premium per ControlNo in Range]放在矩阵中的值上


Marco的答案看起来不错,但您也可以通过计算列实现分组,而不是定义新表,并将该列用作切片器:

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"
    )
范围=
风险溢价=
计算(总和(事实保险费[保险费]),
ALLEXCEPT(事实溢价,事实溢价[ControlNo])
)
回来
开关(TRUE(),

PremiumMarco的答案看起来不错,但您也可以使用计算列来实现分组,而不是定义新表,并将该列用作切片器:

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"
    )
范围=
风险溢价=
计算(总和(事实保险费[保险费]),
ALLEXCEPT(事实溢价,事实溢价[ControlNo])
)
回来
开关(TRUE(),

高级分组的另一个当前问题是,您只能通过使用字母数字排序的标签来控制组的顺序。例如,“1.5万至10万美元”、“2.5万至100万美元”分组的另一个当前问题是,您只能通过使用字母数字排序的标签来控制组的顺序。例如,“1.5万至10万美元”,“2.50万至100万美元”