[函数大全] CROSSFILTER

  [复制链接]
查看109958 | 回复120 | 2021-2-21 21:50:30 | 显示全部楼层 |阅读模式
指定 DAX 表达式在求值过程中使用的交叉筛选的方向。

语法
  1. CROSSFILTER ( <关系的左列>, <关系的右列>, <筛选类型> )
复制代码

参数属性描述
关系的左列用于建立关系的两列之一
关系的右列用于建立关系的两列之一
筛选类型关闭筛选使用 0,单向筛选使用 1,双向筛选使用 2;也可以使用 None, OneWay, Both

返回值

函数不返回任何值。仅在查询期间为所指示的关系设置交叉筛选方向。

备注
  • 在一对一关系的情况下,设置为单向和双向并无任何区别。
  • CROSSFILTER 只能用于支持将筛选器用作参数的函数中,例如:CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTD 和 TOTALYTD 函数。
  • CROSSFILTER 使用模型中的现有关系,通过位于关系两端的列标识关系。
  • 在 CROSSFILTER 中,模型设置的关系的交叉筛选方向并不重要;也就是说,在模型中将关系设置为单向或双向筛选不会影响函数的使用。 CROSSFILTER 将覆盖任何现有的交叉筛选设置。
  • 如果作为为参数的列不属于一个关系,或者参数属于不同的关系,则会返回错误。
  • 如果 CALCULATE 表达式是嵌套的,并且多个 CALCULATE 表达式包含 CROSSFILTER 函数,那么最内层的 CROSSFILTER 就是在有冲突或歧义的情况下起作用的函数。


CROSSFILTER 不能在 DirectQuery 模式下创建计算列,所引用的表不支持行级别安全性,也就是说你不能对开启行级别安全性的表使用这个函数,USERELATIONSHIP 也存在同样的限制。可以考虑用 LOOKUPVALUE 或者 TREATAS 作为替代方案。

示例

以下度量值在计算期间激活 Sales 表和 DimProduct 表的双向关系:

  1. = CALCULATE([Distinct Count of ProductKey],
  2.             CROSSFILTER(Sales[ProductKey], DimProduct[ProductKey] , Both)
  3.   )
复制代码
理解 CROSSFILTER

CROSSFILTER在公式级别控制关系的函数,与直接使用模型的双向关系相比,CROSSFILTER更加灵活,并且可以减少不必要的计算开销



回复

使用道具 举报

sldj | 2021-4-25 09:05:05 来自手机 | 显示全部楼层
我也来支持一下,很喜欢这里老师
回复

使用道具 举报

我是你的好大哥 | 2021-6-11 17:04:40 | 显示全部楼层
为了三千积分!
回复

使用道具 举报

车行天下 | 2021-6-12 11:16:04 来自手机 | 显示全部楼层
回个帖子,下班咯~
回复

使用道具 举报

清新贵族 | 2021-6-27 16:35:56 | 显示全部楼层
啥玩应呀
回复

使用道具 举报

花猪54288 | 2021-8-2 06:38:15 | 显示全部楼层
众里寻他千百度,蓦然回首在这里!
回复

使用道具 举报

google | 2021-8-15 21:13:39 | 显示全部楼层
太棒了,感谢唐楼主精彩的分享
回复

使用道具 举报

dickson | 2021-8-19 10:33:21 | 显示全部楼层
支持你哈...................................
回复

使用道具 举报

monkeyking | 2021-10-6 17:01:22 | 显示全部楼层
沙发~支持云发教育
回复

使用道具 举报

Sanie | 2021-10-22 10:46:05 来自手机 | 显示全部楼层
这个不错,学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则