热线电话:13121318867

登录
2020-02-15 阅读量: 2365
DAX函数之筛选器函数

1.ALL, ALLEXCEPT, ALLSELECTED
ALL(table/column) --ALL用来清除整个表或某个字段的筛选条件,通常配合CALCULATE使用
ALLEXCEPT(table/column) --删除表中除已应用于指定列的筛选器之外的所有上下文筛选器
ALLSELECTED(table/column) --从当前查询的列和行中删除上下文筛选器,同时保留所有其他上下文筛选器或显式筛选器

2.CALCULATE(<expression>,<filter1>,<filter2>...)
--Calculate可以应用在多个表
Calculate使用AND关系时可直接在条件间加',',但表达“或”时,必须用'||',而且连接的两个条件
必须引用同一列。
Calculate中当“[列] = 固定值”这种筛选搞不定时,可用filter/all/values筛选器搭配使用

3.FILTER(table,<filter>) --返回值:只包含筛选行数据的表
--筛选时对表进行逐行扫描,计算量很大,所以选择筛选的表尽量为lookup表

4.HASONEVALUE(<columnName>) --将 columnName 的上下文筛选为只剩下一个非重复值时,
将返回 TRUE。 否则为 FALSE。

5.RELATED(<column>) --将“一”端的列值添加到“多”端的表中
RELATEDTABLE(<tableName>) --将“多”端关联的表数据添加到“一”端的列上,
返回的是一张表

6.VALUES(<TableNameOrColumnName>) --返回由一列构成的一个表,该表包含来自指定表或列的
非重复值。 换言之,重复值将被删除,仅返回唯一值。

7.EARLIER函数:
例如我们有“产品名称”和“销售金额”两列数据。基于此,我们希望计算出每个产品的销售金额排名。
COUNTROWS(
FILTER('产品销售表',
EARLIER('产品销售表'[销售金额])<'产品销售表'[销售金额])
)+1
--EARLIER=当前行,按照当前行进行逐行扫描,SUMX+FILTER+EARLIER
是Power Pivot中比较常用的函数组合,由于Earlier针对每一行数据都进行计算,
所以理论上计算量相当于数据行数的平方。如果有10行数据,则需要计算100次,
所以数据量大的时候大家使用要小心,有可能会造成模型计算缓慢。

0.0000
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子