使用多个切片器选择更新百分比度量
Update a Percent Measure with Multiple Slicer Selections
我有一个 table,我想在其中更新每个过滤器的“百分比值”度量值(用户可以 select slicer/s 中的一个或多个值]).在可视化一年的所有标记中,月份需要添加到 1.0 有或没有切片器 selections。
在@Phil Leh () 的帮助下,度量适用于年、月,并且度量给出了正确的值:
但是我不确定我能做些什么来使用多个 select 离子更新 % 值。例如,这里的百分比值没有计算为 1.0 对于 Race 和 Year,每个 Year,Month 的月份:
我更改了现有的 DAX(根据年、月给出正确的值),以便它也可以捕获 Race。但是结果是错误的。
Percent Values =
VAR num =
CALCULATE( SUM ( question[Count Values] ))
-- this one filters month and year
VAR fmy =
FILTER (
-- clear all filter from our table
ALL ( question ),
-- and keep only the values matching the
-- filter context's current month and year
question[Date].[Month]
= MAX ( question[Date].[Month] )
&& question[Date].[Year]
= MAX ( question[Date].[Year] )
--|| question[Race]
-- = MAX ( question[Race] )
--|| question[Gender]
-- = MAX( question[Gender] )
--|| question[visa_country]
-- = MAX( question[visa_country] )
)
VAR fr =
FILTER (
-- clear all filter from our table
ALL ( question ),
-- and keep only the values matching the
-- filter context's current month and year
question[Race]
= MAX ( question[Race] )
)
VAR denom =
IF (
-- checking if Month is in current filter context
ISINSCOPE ( question[Date].[Month] ), --|| ISINSCOPE ( question[Race] ) || ISINSCOPE ( question[Gender] ) || ISINSCOPE (question[visa_country] ),
-- if yes, use the filter fmy (calculate denom for this quarter
CALCULATE (
SUM ( question[Count Values] ),
ALLSELECTED (),
fmy
),
--IF (
-- ISINSCOPE ( question[Race] ),
-- CALCULATE (
-- SUM ( question[Count Values] ),
-- ALLSELECTED (),
-- fr
-- ),
-- else, calculate the denom for all values
-- this could also be BLANK() or some other calculation
-- CALCULATE (
-- SUM ( question[Count Values] ),
-- ALLSELECTED ()
-- )
--)
CALCULATE (
SUM ( question[Count Values] ),
ALLSELECTED ()
)
)
RETURN
DIVIDE (
num,
denom
)
在上面的照片中,没有重新计算 % 值。
这里是 .csv 格式的数据:
Race,Gender,visa_type,Count Values,visa_country,Processing Type,Date
White,Female,C,1,Canada,Custodial,2/14/2014 0:00
Other,Male,M,5,Mexico,Express,1/20/2015 0:00
Hispanic,Male,R,6,Russia,Refugee,2/18/2014 0:00
White,Female,B,4,Brazil,Asylum,3/7/2014 0:00
Hispanic,Male,C,1,Canada,Refugee,4/11/2015 0:00
White,Female,R,7,Russia,Custodial,4/23/2014 0:00
White,Male,M,9,Mexico,Express,4/1/2014 0:00
Hispanic,Male,B,3,Brazil,Refugee,4/13/2014 0:00
White,Female,R,1,Russia,Express,7/31/2014 0:00
White,Male,C,7,Canada,Asylum,9/6/2015 0:00
White,Female,M,2,Mexico,Express,7/22/2014 0:00
Black,Female,B,5,Brazil,Custodial,8/13/2014 0:00
White,Male,R,1,Russia,Asylum,12/9/2014 0:00
White,Female,M,4,Mexico,Asylum,12/6/2014 0:00
Black,Female,B,6,Brazil,Express,12/13/2015 0:00
White,Male,C,7,Canada,Refugee,10/26/2014 0:00
Hispanic,Female,R,5,Brazil,Refugee,9/6/2015 0:00
White,Male,B,9,Mexico,Asylum,9/6/2015 0:00
.xlsx 文件在这里:https://github.com/TestingGround00/powerbi_question/blob/main/input_data_table.xlsx
我制作了另一个 DAX,现在在整个子集中提供 100%,但它确实需要为每年添加 100%,没有切片器 and/or 的月份。
Sum Value = SUM ( Table[Count Values] )
% Value =
DIVIDE (
[Sum Value],
CALCULATE ( [Sum Value], ALLSELECTED ( ) )
)
我需要的输出是这样的:
我看过这些问题,但它们有些无关紧要:
- Power BI - Dynamic measure based on slicer selection
没有 Slicer selections 我需要这个输出-
但是,使用 Smpa01 的 post 无切片器数据更改的度量 -
如果我对问题的理解正确,您希望采取措施 return 以下
您可以通过这样一个非常简单的措施来实现
Measure =
VAR _numerator =
CALCULATE ( SUM ( question[Count Values] ) )
VAR _denominator =
CALCULATE ( SUM ( question[Count Values] ), ALLSELECTED () )
RETURN
DIVIDE ( _numerator, _denominator )
在 DAX 中处理日期时,需要记住一些事情。
一种。使用 Calendar Table 并从 table 中引入年、月名称切片器。
b.除非绝对需要,否则不要使用事实 table 中的日期层次结构。
Edit
这是没有任何选择的样子
感谢@smpa01 的帮助。如果我在任何地方传达错误,我深表歉意。但这成功了,这就是我要找的东西:
创建 Sum 度量:
Sum Value = SUM ( question[Count Values] )
然后创建一个 % 值度量,您可以在其中计算值:
% Value =
DIVIDE (
[Sum Value],
CALCULATE (
[Sum Value],
ALLSELECTED (),
VALUES ( question[Date].[Year] ),
VALUES ( question[Date].[Month] )
)
)
我有一个 table,我想在其中更新每个过滤器的“百分比值”度量值(用户可以 select slicer/s 中的一个或多个值]).在可视化一年的所有标记中,月份需要添加到 1.0 有或没有切片器 selections。
在@Phil Leh (
但是我不确定我能做些什么来使用多个 select 离子更新 % 值。例如,这里的百分比值没有计算为 1.0 对于 Race 和 Year,每个 Year,Month 的月份:
我更改了现有的 DAX(根据年、月给出正确的值),以便它也可以捕获 Race。但是结果是错误的。
Percent Values =
VAR num =
CALCULATE( SUM ( question[Count Values] ))
-- this one filters month and year
VAR fmy =
FILTER (
-- clear all filter from our table
ALL ( question ),
-- and keep only the values matching the
-- filter context's current month and year
question[Date].[Month]
= MAX ( question[Date].[Month] )
&& question[Date].[Year]
= MAX ( question[Date].[Year] )
--|| question[Race]
-- = MAX ( question[Race] )
--|| question[Gender]
-- = MAX( question[Gender] )
--|| question[visa_country]
-- = MAX( question[visa_country] )
)
VAR fr =
FILTER (
-- clear all filter from our table
ALL ( question ),
-- and keep only the values matching the
-- filter context's current month and year
question[Race]
= MAX ( question[Race] )
)
VAR denom =
IF (
-- checking if Month is in current filter context
ISINSCOPE ( question[Date].[Month] ), --|| ISINSCOPE ( question[Race] ) || ISINSCOPE ( question[Gender] ) || ISINSCOPE (question[visa_country] ),
-- if yes, use the filter fmy (calculate denom for this quarter
CALCULATE (
SUM ( question[Count Values] ),
ALLSELECTED (),
fmy
),
--IF (
-- ISINSCOPE ( question[Race] ),
-- CALCULATE (
-- SUM ( question[Count Values] ),
-- ALLSELECTED (),
-- fr
-- ),
-- else, calculate the denom for all values
-- this could also be BLANK() or some other calculation
-- CALCULATE (
-- SUM ( question[Count Values] ),
-- ALLSELECTED ()
-- )
--)
CALCULATE (
SUM ( question[Count Values] ),
ALLSELECTED ()
)
)
RETURN
DIVIDE (
num,
denom
)
在上面的照片中,没有重新计算 % 值。
这里是 .csv 格式的数据:
Race,Gender,visa_type,Count Values,visa_country,Processing Type,Date
White,Female,C,1,Canada,Custodial,2/14/2014 0:00
Other,Male,M,5,Mexico,Express,1/20/2015 0:00
Hispanic,Male,R,6,Russia,Refugee,2/18/2014 0:00
White,Female,B,4,Brazil,Asylum,3/7/2014 0:00
Hispanic,Male,C,1,Canada,Refugee,4/11/2015 0:00
White,Female,R,7,Russia,Custodial,4/23/2014 0:00
White,Male,M,9,Mexico,Express,4/1/2014 0:00
Hispanic,Male,B,3,Brazil,Refugee,4/13/2014 0:00
White,Female,R,1,Russia,Express,7/31/2014 0:00
White,Male,C,7,Canada,Asylum,9/6/2015 0:00
White,Female,M,2,Mexico,Express,7/22/2014 0:00
Black,Female,B,5,Brazil,Custodial,8/13/2014 0:00
White,Male,R,1,Russia,Asylum,12/9/2014 0:00
White,Female,M,4,Mexico,Asylum,12/6/2014 0:00
Black,Female,B,6,Brazil,Express,12/13/2015 0:00
White,Male,C,7,Canada,Refugee,10/26/2014 0:00
Hispanic,Female,R,5,Brazil,Refugee,9/6/2015 0:00
White,Male,B,9,Mexico,Asylum,9/6/2015 0:00
.xlsx 文件在这里:https://github.com/TestingGround00/powerbi_question/blob/main/input_data_table.xlsx
我制作了另一个 DAX,现在在整个子集中提供 100%,但它确实需要为每年添加 100%,没有切片器 and/or 的月份。
Sum Value = SUM ( Table[Count Values] )
% Value =
DIVIDE (
[Sum Value],
CALCULATE ( [Sum Value], ALLSELECTED ( ) )
)
我需要的输出是这样的:
我看过这些问题,但它们有些无关紧要:
- Power BI - Dynamic measure based on slicer selection
没有 Slicer selections 我需要这个输出-
但是,使用 Smpa01 的 post 无切片器数据更改的度量 -
如果我对问题的理解正确,您希望采取措施 return 以下
您可以通过这样一个非常简单的措施来实现
Measure =
VAR _numerator =
CALCULATE ( SUM ( question[Count Values] ) )
VAR _denominator =
CALCULATE ( SUM ( question[Count Values] ), ALLSELECTED () )
RETURN
DIVIDE ( _numerator, _denominator )
在 DAX 中处理日期时,需要记住一些事情。 一种。使用 Calendar Table 并从 table 中引入年、月名称切片器。 b.除非绝对需要,否则不要使用事实 table 中的日期层次结构。
Edit
这是没有任何选择的样子
感谢@smpa01 的帮助。如果我在任何地方传达错误,我深表歉意。但这成功了,这就是我要找的东西:
创建 Sum 度量:
Sum Value = SUM ( question[Count Values] )
然后创建一个 % 值度量,您可以在其中计算值:
% Value =
DIVIDE (
[Sum Value],
CALCULATE (
[Sum Value],
ALLSELECTED (),
VALUES ( question[Date].[Year] ),
VALUES ( question[Date].[Month] )
)
)