Warm tip: This article is reproduced from serverfault.com, please click

powerbi-IN运算符中的通配符搜索

(powerbi - Wildcard search in the IN operator)

发布于 2020-11-30 18:47:01

我正在尝试制定一种措施:

目前我有:

a_measure = 
CALCULATE(SUM(table[Count]),
table[status] IN {"Duplicate","Returned - 10+ Days", "Returned - Inappropriate"}
)

桌子是我的桌子

table [Count]是一个帮助器列,每行的值均为“ 1”。(当我同时使用Excel和BI时,它被保留了-我发现它使求和/计数更容易)

我的测量结果是:状态为Duplicate或Returned 10+或Returned-不适当时,对Sum列进行计数。

我想做的是,而不是写出每种不同类型的返回值,是:总计数当table [status] = Duplicate OR search(“ return”,table [status],0,0)= TRUE时

这真的很有帮助。这样做可能会很好

IN {"duplicate",search("Return%"))

但是我认为从IN的工作方式(https://www.sqlbi.com/articles/from-sql-to-dax-string-comparison/)中,你无法做到这一点。如果我在RI中这样做,可以使用类似filter(str_detect(status,"foo"))|status="duplicate"

如果使用计数,则可以针对每个条件进行过滤,但是我不知道如何在过滤器中应用通配符搜索。你可以在过滤器中应用搜索吗?感觉可以。

或者,我可以在表中写入一列,以便将其分配给类似Duplicate Returned(具有多种类型的Returned),Closed(具有多种Closed类型)的组。

然后使用table [newfudgecolumn] IN {“ Duplicate”,“ Returned”}

从技术上讲,这可以解决问题,但不能以我想要的方式解决。

编辑:我需要阅读此 DAX查询-从powerbi中的表中筛选出值

搜索具有相同ID的行,并应用AND过滤器对特定事件进行计数

编辑:我已经略过那些,虽然它们通过计算针对每个单独条件过滤的行来工作(据我所知),但它们都不在单个条件下应用搜索字段(这就是我想要的)。

tl; dr我想将字段的通配符搜索应用于IN运算符

或者

我想对COUNTROWS运算符中的字段应用通配符搜索。

希望这是有道理的。

Questioner
damo
Viewed
11
Alexis Olson 2020-12-01 03:03:40

你可以像你的R代码一样进行操作:

a_measure =
CALCULATE (
    SUM ( table[Count] ),
    FILTER (
        ALL ( table[status] ),
        CONTAINSSTRING ( table[status], "Return" ) || table[status] = "Duplicate"
    )
)

table[status] IN { "Duplicate" }如果愿意,可以使用,但我想不出一种方法来处理IN集合中的通配符


请注意,CONTAINSSTRING函数确实允许使用通配符?*