从数据到信息
从信息到洞察

CONTAINS

CONTAINS

CONTAINS ( <Table>, <ColumnName>, <Value>, [ <ColumnName>, <Value>,  [ … ] ] )

如果指定的<table>至少存在一行满足所有<ColumnName>都有对应的<Value>,返回 true,否则 CONTAINS 返回 false。

参数 属性 描述
Table 物理表或返回表的表达式
ColumnName 可重复 使用标准 DAX 语法的现有列的名称,不支持表达式
Value 可重复 任何返回单个标量值的 DAX 表达式,该值将在 columnName 中查找

注意:

  • ColumnNameValue 必须成对使用,否则将报错
  • ColumnName  必须属于第一参数或第一参数的扩展表
  • ColumnName 属于扩展表时,必须使用完全限定的名称(表[列名])

示例用法

使用 FILTERCALCULATETABLE 的组合可以筛选表中的行。但是,如果需要检查表中是否至少存在一行满足特定的条件,使用这些函数会产生额外不必要的计算过程。在作为第一参数的表中,CONTAINS 函数检查是否至少有一行包含后续参数中指定的所有列值。

比如你想检查销售表中是否至少包含一行单价为 99.99 的销售记录。因为 CONTAINS 的结果是一个标量值,所以可以将它嵌入到一个 ROW 函数中来执行查询:

EVALUATE
ROW ( "Sales Exist", CONTAINS ( Sales, Sales[Unit Price], 99.99 ) )

上述查询与下面这个等价:

EVALUATE
ROW (
    "Sales Exist", COUNTROWS ( CALCULATETABLE ( Sales, Sales[Unit Price] = 99.99 ) ) > 0
)

CONTAINS 为简单筛选提供了更好的性能,而 CALCULATETABLE 适用于复杂的筛选表达式。CONTAINS 只检查精确匹配,如果需要更复杂的筛选条件,则必须使用 CALCULATETABLEFILTER 或混合使用。不过,CONTAINS 函数允许你组合多列作为条件,这些列可以属于通过关系可访问的表。例如,如果澳大利亚至少包含了一行单价为 99.99 的销售记录,那么以下查询返回 TRUE:

EVALUATE
ROW (
    "Sales Australia", CONTAINS (
        Sales,
        Sales[Unit Price], 99.99,
        Customer[CountryRegion], "Australia"
    )
)

在这个示例中,上面的查询与下面这个等价:

EVALUATE
ROW (
    "Sales Australia", COUNTROWS (
        CALCULATETABLE (
            Sales,
            Sales[Unit Price] = 99.99,
            Customer[CountryRegion] = "Australia"
        )
    ) > 0
)

CONTAINS 的一个适用场景是,如果你希望从另一个表中获得至少有一个对应行的元素的列表时,可以将 CONTAINS 作为筛选条件。以下查询返回 Columbus 至少有一笔销售记录的日期列表:

EVALUATE
FILTER (
    VALUES ( 'Date'[Date] ),
    CONTAINS ( RELATEDTABLE ( Sales ), Customer[City], "Columbus" )
)
ORDER BY 'Date'[Date]

如你所见,CONTAINS 函数在每个日期所在的行上下文中计算。RELATEDTABLE 函数将此行上下文转换为筛选上下文,因此 CONTAINS 仅考虑这些行的销售额,并在该日期 Columbus 至少存在一行记录时返回 TRUE。

介绍 TREATAS 时你会了解到,在所有通过查找和匹配执行虚拟筛选的函数中,TREATAS 效率最高,而 CONTAINS 适用于无法使用 TREATAS 和 INTERSECT 的场景。

说点什么

avatar
1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
  订阅本文评论  
提醒
DAX 圣经

导读

初识 DAX

DAX 基础知识

DAX 原理

DAX 高级原理

基础函数类型

迭代函数

CALCULATE 函数

CALCULATE 调节器

基础表函数

条件判断函数

查找匹配函数

时间智能函数

统计类函数

投影函数

分组函数

连接函数

集合函数

其他常见函数