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 在Power BI的if条件中使用USERNAME()测量_Powerbi - Fatal编程技术网

Powerbi 在Power BI的if条件中使用USERNAME()测量

Powerbi 在Power BI的if条件中使用USERNAME()测量,powerbi,Powerbi,我有一个特定的要求,我想在IF语句中使用Power BI中可用的USERNAME()函数,使用它的那一刻,我得到以下错误: CUSTOMDATA, USERNAME, USERCULTURE and USERPRINCIPALNAME functions are not supported in calculated tables/columns. These functions may only be used in Measures or in the AllowedRowsExpressi

我有一个特定的要求,我想在IF语句中使用Power BI中可用的USERNAME()函数,使用它的那一刻,我得到以下错误:

CUSTOMDATA, USERNAME, USERCULTURE and USERPRINCIPALNAME functions are not supported in calculated tables/columns. These functions may only be used in Measures or in the AllowedRowsExpression.
我知道我们可以创建一个度量值作为MeasureXYZ=USERNAME(),我的要求是在IF条件下使用这个USERNAME()值


似乎是产品限制,除了username()、USERPRINCIPALNAME等之外,我们还有其他方法获取用户名吗?

如果您想使用度量,这对我很有用

当前用户=如果(用户名()=“域\用户”、“它的我”、“它不是我”)


Obv需要在您的域名和用户名中进行交换

如果,这不是
的问题

如错误消息所示,您不能在计算列或计算表中使用
USERNAME
USERPRINCIPALNAME
。这与无法在计算列/表中引用切片器选择的原因相同。也就是说,模型在加载数据时计算一次,而不是每次更改切片器或访问新用户时计算一次


这就是说,度量可以很好地与过滤器和用户名一起工作,并且username函数可以通过在模型上用作过滤器。如果您尝试的操作无法通过度量或RLS实现,我会感到惊讶。

“。计算表/列中不支持”您的度量或仅计算列会出现相同的错误吗?我首先创建了计算度量。MeasureXYZ=USERNAME(),没有问题。但是当我使用计算度量值'MeasureXYZ'使用IF条件创建计算列时,我得到了上述错误。我最初使用RLS,我还可以通过创建一个度量值(比如“GetRoleID”)并在度量值定义中使用DAX函数FIRSTNONBLANK,从安全表中获取登录用户的RoleID。但是,当我在计算列中使用GetRoleID measure in IF condition时,它返回的是第一个角色ID,而不是登录用户的角色ID(正好是我的第三排)。当我在UI中看到安全表时,它已在记录的用户ID上正确筛选,但度量值不采用筛选的上下文。我知道模型已计算,因此第一个非空值为1,但我们是否有一个解决方法来存储或检索可见的RoleID并在计算列中使用它?有没有将动态值放入计算列的解决方法。您需要放弃这种方法。很可能您最终尝试做的事情是可能的,而不是您尝试实现它的方式。不寻找度量值,而是希望在IF条件下的计算列中使用此度量值。USERNAME()的用法不允许在计算列级别使用。如果需要它作为计算列,则power bi不支持它。这是有意义的,因为在刷新数据库(行上下文)时计算计算列,而不是在用户使用报表时计算计算列(因此不是筛选上下文)因此,一个经过计算的专栏永远不会知道用户名。亚当·萨克斯顿和克里斯·韦伯分别发表了一篇好文章