1. RemoveFilters函数
- 是筛选函数,其本身不数据表函数,也不数据值函数,进作为calculate函数的调节器使用【不推荐】
- 跟all函数功能一样,但是只能放到calculate的筛选器
- 例子
总销售金额 = sum('REMOVEFILTERS'[销售金额]) all = CALCULATE([总销售金额],all('REMOVEFILTERS')) REMOVEFILTERS = CALCULATE([总销售金额],REMOVEFILTERS('REMOVEFILTERS'))
2. KeepFilters函数
- 追加筛选
- KEEPFILTER是内部条件与外部筛选取交集;
- CALCULATE是内部条件取交集,不涉及外部。
- 例子
总金额 = sum('KEEPFILTERS'[销售金额]) A商品销售 = CALCULATE([总金额],'KEEPFILTERS'[商品]="A") A商品销售keep = CALCULATE([总金额],KEEPFILTERS('KEEPFILTERS'[商品]="A")) A商品销售values = CALCULATE([总金额],'KEEPFILTERS'[商品]="A",VALUES('KEEPFILTERS'[商品]))
3. crossFilter函数
- 交叉筛选
- 格式:CrossFilter(多端固定列名,一段固定列名,方向)
-
必须是固定列名,不能是表达式生成的
方向 含义 oneway 单向筛选 both 双向筛选 none 无交叉筛选
-
- 注意事项
- 如果模型关系是一对一的情况,使用ONEWAY和BOTH没区别。
- 如果多端列和一端列位置反了,函数本身会自我修正。
- 此函数只能在接受筛选器作为参数的函数中使用
- CROSSFILTER函数会覆盖任何现有筛选关系。
- 如果两个参数没有任何链接关系,那么返回结果会报错。
- 如果使用多个CROSSFILTER,最内层的会覆盖外面的。
- 功能一:改变筛选方向
数量 = COUNTROWS(RELATEDTABLE('商品表')) 改变方向 = CALCULATE([数量],CROSSFILTER('销售表'[商品编码],'商品表'[商品编码],both))
- 功能二:
- 使用模型关系筛选时,数量过大会导致模型运载变慢,可以使用crossfilter函数优化
销售表数量 = COUNTROWS('销售表') 改变方向1 = CALCULATE(countrows(RELATEDTABLE('销售表')),CROSSFILTER('销售表'[商品编码],'商品表'[商品编码],oneway))
4. UseRelationShip函数
- 用途
- 用来激活指定的关系
- 适用于做关联度分析
- 案例一:处理订单数量与收货数量
下单数量 = SUM ( '某宝'[销售数量] ) 送达数量 = CALCULATE([下单数量], USERELATIONSHIP ('某宝'[收货日期], '日期表'[Date]))