如何从USERNAME()函数传入的单个值创建复杂的筛选器



我正在为行级安全性生成Power BI嵌入令牌。

令牌包含USERNAME()函数要接收的角色值,然后在表过滤器DAX表达式中使用该值,例如:[Region] = USERNAME()。当从令牌传递一个值(比如West(,并且销售报告将由WestRegion进行筛选时,这就起作用了。

接下来,我需要添加额外的过滤器,如:[Region] = USERNAME() && [Customer] IN {"Delta", "Echo"}。我尝试将West|Delta|Echo传递给USERNAME((,并将DAX表达式更改为:[Region] = LEFT(USERNAME(), FIND("|", USERNAME())-1) && [Customer] IN {"Delta", "Echo"}

这个版本有效,但IN过滤器的列表必须进行硬编码。

有没有一种方法可以编写一个DAX表达式来提取由|分隔的多个值,并为上面显示的IN运算符创建一个列表?

我会在中间有一个表,然后将适当的字段链接到该表,所以West | Delta | Echo将是2行:West,Delta和West,Echo。然后,此表与Region和Customer表具有关系(单向(。

根据您当前正在做的工作,如果客户条目之间没有重叠(例如,没有Echo和Echo2(,您可以使用CONTAINSSTRING(USERNAME(), [Customer])

最新更新