函数HASONEFILTER,当某列被直接筛选至一个非重复值,该函数返回True,否则返回False ,其语法:
HASNONEFILTER(ColumnName), ColumnName 为一个物理存在的列
可以通过具体的例子来理解一下这个函数
首先这里有2张表,其中一张学生表,一张成绩表,其中张三与李四有多门科目的成绩,而赵四只有一门成绩

建立如下度量值hasonefilter.StuName,StuName来自学生表,结果表中的行标签也是来自学生表中的StuName,对于每一行来说,StuName都是被直接筛选至剩一个非重复值,所以度量值hasonefilter.StuName 在每一行中都是True
hasonefilter.StuName = HASONEFILTER('YiLuXiangBei Stu Student'[StuName])

但是,接着看下面的示例,虽然StuName同样是被直接筛选,但是其剩余的值为2,不唯一,所以hasonefilter.StuName结果为False

同样,当我们用学生表中的StuName去筛选成绩表中的Stu时,看看结果是什么?
即便我们选择了赵四,从上图中我们可以看出,学生表中的赵四只能在成绩表中找到一行记录,但是结果还是为False,是因为Stu没有被直接筛选,所以结果还是为False

总结一下
hasonefilter 是用来判断参数是否被直接筛选,而且还是只筛选了一个值,只有满足以上情况时,该函数才会返回True,否则False
hasonevalue 也是用来判断参数列是否被筛选至一个值,但是hasonevalue对筛选的要求是cross-filer,关于hasonevalue可以看这篇文章
所以在使用hasonefilter和hasonevalue要注意区别
参考文章
https://docs.microsoft.com/en-us/dax/hasonefilter-function-dax




