演示文档还是放在公众年夜众号供***利用~
先说一下目前最常见的用法,不显示表格的汇总。在此之前还是大略看看两个函数的语法格式,非常的大略,就一个参数,便是用来判断columnName是否是非重复值,返回TRUE或者FALSE↓
HASONEVALUE(<columnName>)HASONEFILTER(<columnName>)

还是我们熟习的发卖数据,我们选了三个大的品类和他们下面品牌的发卖金额,在表格中正常的展示效果如下↓
但是呢,我们不想展示汇总的数据。这里就可以用HASONEVALUE函数来处理一下了,如果我们不想展示品牌和总的汇总数据,就对品牌列就行判断,分步演示一下,先求出返回值,DAX如下↓
VALUE品牌 = HASONEVALUE('产品表'[品牌])
我们可以看到,每个小类和汇总都没有品牌数据,以是返回FALSE,我们只须要再写个IF语句,如果返回FALSE的设置成空值,就可以实现不显示分类汇总效果了,DAX语句和结果如下↓
HASONE_VALUE品牌 = IF(HASONEVALUE('产品表'[品牌]), [金额(万)], BLANK())
如果只想对总的汇总不展示,只须要把参数改成品类就可以了,DAX语句和结果如下↓
HASONE_VALUE品类 = IF( HASONEVALUE('产品表'[品类]), [金额(万)], BLANK())
目前由于直接对品牌/品类就行判断的,以是利用HASONEFILTER效果也是一样的,两个DAX语句和结果如下↓
HASONE__FILTER品牌 = IF(HASONEFILTER('产品表'[品牌]),[金额(万)],BLANK())HASONE__FILTER品类 = IF(HASONEFILTER('产品表'[品类]),[金额(万)],BLANK())
下面再讲讲两个函数的差异,网上给了一些抽象的阐明,说的是HASONEVALUE是基于交叉筛选器事情,HASONEFILTER是通过直接筛选器事情的,我想大部分人看到这两句话也是一篇茫然。以是我就直接举两个例子,看完后该当就有自己的理解了。
首先,我们利用的只是一张表,目前创造通过建立关联关系的表是无效的。我们就利用产品品牌来做实验,分别利用VALUE函数和FILTER函数浸染于产品id,DAX语句和结果如下↓
本表VALUE = HASONEVALUE('发卖数据'[产品id])本表FILTER = HASONEFILTER('发卖数据'[产品id])
这里由于我们对品类就行了筛选,把软件类的产品给去掉了,以是VALUE函数返回了FALSE值,但是FLITER函数仍旧是TRUE值。这是二者的一个差异FLITER函数没有受到外部筛选器的影响。
连续利用上面两个度量值,须要把稳这两个度量值是浸染于产品id的,我们现在利用日期维度来进行判断,先看看效果↓
可以看到,虽然度量值是浸染于产品id的,但是9.11号、9.12号两天VALUE函数还是返回了TRUE值,由于这两天的订单表中只有一个非重复的产品id,这也是HASONEVALUE(只有一个值)的浸染。这里也可以看出,HASONEVALUE可以和其他维度交叉筛选,只要两个维度交叉筛选出来的值是唯一的就可以了,而FLITER函数只能对所在参数进行判断,这也是二者的紧张差异。
End