本篇汇总 DAX「筛选函数」共 18 个函数,常用函数标 🔥。每个函数附语法、示例与参数说明。
| 函数 | 说明 | 语法 | 示例 |
|---|---|---|---|
ALL 🔥 |
返回除筛选上下文外的所有行,或返回除指定列外的所有列。 | ALL(<tableOrColumn>) |
CALCULATE(SUM(Sales[Amount]), ALL(Sales[Region])) |
CALCULATE 🔥 |
在修改后的筛选上下文中计算表达式。 | CALCULATE(<expression>, [<filter1>], [<filter2>], ...) |
CALCULATE(SUM(Sales[Amount]), Sales[Region] = "North") |
CALCULATETABLE 🔥 |
在修改后的筛选上下文中计算表表达式。 | CALCULATETABLE(<expression>, [<filter1>], [<filter2>], ...) |
CALCULATETABLE(Sales, Sales[Region] = "North") |
FILTER 🔥 |
返回筛选后的表。 | FILTER(<table>, <filter>) |
FILTER(Sales, Sales[Amount] > 1000) |
HASONEVALUE 🔥 |
检查列中是否只有一个唯一值。 | HASONEVALUE(<columnName>) |
IF(HASONEVALUE(Sales[Region]), VALUES(Sales[Region]), "多个地区") |
LOOKUPVALUE 🔥 |
在表中查找满足搜索条件的值。 | LOOKUPVALUE(<result_columnName>, <search_columnName>, <search_value>) |
LOOKUPVALUE(Products[ProductName], Products[ProductID], Sales[ProductID]) |
SELECTEDVALUE 🔥 |
如果列只有一个值,则返回该值;否则返回备用结果。 | SELECTEDVALUE(<column>, [<alternateResult>]) |
SELECTEDVALUE(Sales[Region], "All") |
ALLEXCEPT |
除指定列外,返回上下文中所有筛选后的行。 | ALLEXCEPT(<table>, <column>) |
CALCULATE(SUM(Sales[Amount]), ALLEXCEPT(Sales, Sales[Region])) |
ALLSELECTED |
返回除当前行上下文和列上下文外的所有行。 | ALLSELECTED([<tableOrColumn>]) |
CALCULATE(SUM(Sales[Amount]), ALLSELECTED()) |
EARLIER |
返回指定列在当前上下文之前的上下文中的值。 | EARLIER(<column>, [<number>]) |
使用 EARLIER 函数在迭代中进行比较 |
EARLIEST |
返回指定列在最外层上下文中的值。 | EARLIEST(<column>) |
使用 EARLIEST 函数在最外层上下文中获取值 |
FILTERS |
返回当前上下文中应用的筛选器。 | FILTERS(<columnName>) |
FILTERS(Sales[Region]) |
ISCROSSFILTERED |
检查列是否被交叉筛选。 | ISCROSSFILTERED(<columnName>) |
ISCROSSFILTERED(Sales[ProductID]) |
ISFILTERED |
检查列是否被直接筛选。 | ISFILTERED(<columnName>) |
IF(ISFILTERED(Sales[Region]), "已筛选", "未筛选") |
KEEPFILTERS |
在应用筛选器时保留现有的筛选器。 | KEEPFILTERS(<expression>) |
CALCULATE(SUM(Sales[Amount]), KEEPFILTERS(Sales[Region] = "North")) |
LOOKUP |
在视觉计算中查找应用筛选后的值。 | LOOKUP(<expression>, [<filter>]) |
LOOKUP(SUM(Sales[Amount])) |
LOOKUPWITHTOTALS |
在视觉计算中查找应用筛选后的值。 | LOOKUPWITHTOTALS(<expression>, [<filter>]) |
LOOKUPWITHTOTALS(SUM(Sales[Amount])) |
REMOVEFILTERS |
清除指定表或列上的筛选器。 | REMOVEFILTERS([<tableOrColumn>]) |
CALCULATE(SUM(Sales[Amount]), REMOVEFILTERS(Sales[Region])) |
热门函数参数详解
ALL
返回除筛选上下文外的所有行,或返回除指定列外的所有列。
| 参数 | 说明 |
|---|---|
tableOrColumn |
要返回的表或列。如果传入列,则返回该列的所有唯一值。 |
CALCULATE
在修改后的筛选上下文中计算表达式。
| 参数 | 说明 |
|---|---|
expression |
要在修改后的筛选上下文中计算的表达式。 |
filter1, filter2... |
(可选)要应用的筛选条件。可以是布尔表达式、表表达式或筛选器函数。 |
CALCULATETABLE
在修改后的筛选上下文中计算表表达式。
| 参数 | 说明 |
|---|---|
expression |
要在修改后的筛选上下文中计算的表表达式。 |
filter1, filter2... |
(可选)要应用的筛选条件。 |
FILTER
返回筛选后的表。
| 参数 | 说明 |
|---|---|
table |
要筛选的表或表表达式。 |
filter |
返回 TRUE 或 FALSE 的布尔表达式。对表中的每一行进行计算。 |
HASONEVALUE
检查列中是否只有一个唯一值。
| 参数 | 说明 |
|---|---|
columnName |
要检查的列名。 |
LOOKUPVALUE
在表中查找满足搜索条件的值。
| 参数 | 说明 |
|---|---|
result_columnName |
包含要返回值的列。该列必须在同一个表中。 |
search_columnName |
要在其中搜索值的列。 |
search_value |
要搜索的值。 |
SELECTEDVALUE
如果列只有一个值,则返回该值;否则返回备用结果。
| 参数 | 说明 |
|---|---|
column |
要检查的列。 |
alternateResult |
(可选)当列有多个值或无值时返回的结果。默认返回BLANK。 |
由在线工具箱(www.vba.net)整理制作