Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 如何从DAX过滤器中获取1个值?_Powerbi_Dax - Fatal编程技术网

Powerbi 如何从DAX过滤器中获取1个值?

Powerbi 如何从DAX过滤器中获取1个值?,powerbi,dax,Powerbi,Dax,我有用户表,其中包含用户电子邮件、用户名称、用户类别 以下DAX筛选器返回一个表: FILTER(Users,[User_Email] = userprincipalname()) 我想获得用户类别 1方法是SELECTEDCOLUMNS(过滤(用户,[User\u Email]=userprincipalname()),“用户类别”,“用户类别])。这将以列的形式返回结果 是否有其他方法仅返回1个值?例如: SELECTEDVALUE ( SELECTEDCOLUMNS( FILTER(Us

我有用户表,其中包含用户电子邮件、用户名称、用户类别

以下DAX筛选器返回一个表:

FILTER(Users,[User_Email] = userprincipalname())
我想获得用户类别

1方法是
SELECTEDCOLUMNS(过滤(用户,[User\u Email]=userprincipalname()),“用户类别”,“用户类别])
。这将以列的形式返回结果

是否有其他方法仅返回1个值?例如:

SELECTEDVALUE ( SELECTEDCOLUMNS( FILTER(Users,[User_Email] = userprincipalname()), "User_category", [User_Category] ) )


您可以在由
FILTER
生成的表上使用
MAXX

MAXX(
       FILTER(Users,[User_Email] = userprincipalname()),
       [User_Category]
)

您可以在由
FILTER
生成的表上使用
MAXX

MAXX(
       FILTER(Users,[User_Email] = userprincipalname()),
       [User_Category]
)

假设不希望有多个值可供选择(如果有,将返回空白),则可以使用CALCULATE执行此操作


假设不希望有多个值可供选择(如果有,将返回空白),则可以使用CALCULATE执行此操作


最后一个参数应该是[User\u Category]而不是[User\u Email],对吗?是的,计算已修复。在这里,类似于FIRST的任何东西都是给定第一个值而不是MAXX?最后一个参数应该是[User\u Category]而不是[User\u Email],对吗?是的,计算已修复。在类似FIRST的情况下,给定第一个值而不是MAXX?就性能而言,最好使用您的方法(计算)还是另一个答案中的方法(MAXX)?作为一般规则,使用过滤器进行计算往往比使用迭代器更快,但我怀疑对于这样简单的东西有什么明显的区别。如果您特别关心性能,那么您可能应该只对单个列进行筛选,而不是对整个表进行筛选。例如,
KEEPFILTERS(Users[User\u Email]=userprincipalname())
而不是FILTER参数。您建议使用column是因为使用表名会导致表扩展吗?“在DAX世界中很少有黄金法则,但有一条是肯定的:当你可以过滤列时,千万不要过滤表。事实上,筛选表要求您了解扩展表及其在计算中将其用作筛选参数时的行为。“来自筛选表的结论”通常是编写有效复杂筛选表达式的“简单”方法,但是,考虑到过滤器参数中扩展表的相关成本,过滤器迭代器的粒度可能较大,过滤器本身的计算成本较高。“从性能方面得出的结论是,使用您的方法(计算)还是使用另一个答案(MAXX)更好?作为一般规则,使用过滤器进行计算往往比使用迭代器更快,但我怀疑这种简单的计算方法是否有明显的区别。如果您特别关注性能,您可能应该只对单个列进行过滤,而不是对整个表进行过滤。例如,
KEEPFILTERS(用户[User\u Email]=userprincipalname())
而不是FILTER参数。您建议使用column是因为使用表名会导致表扩展吗?”DAX世界中很少有黄金法则,但有一条是肯定的:当您可以筛选列时,永远不要筛选表。事实上,筛选表要求您了解扩展表及其在计算中将其用作筛选参数时的行为。“来自”筛选表的结论通常是“简单的”编写一个有效的复杂过滤器表达式的方法,但考虑到过滤器参数中扩展表的相关成本,过滤器迭代器的粒度可能较大,而过滤器本身在计算中的成本可能较高
CALCULATE (
    SELECTEDVALUE ( Users[User_Category] ),
    FILTER ( Users, Users[User_Email] = userprincipalname() )
)