理解 HASONEVALUE 和 HASONEFILTER 函数的区别

HASONEVALUEHASONEFILTER 都是用来检查筛选状态的函数。

  • HASONEVALUE 在参数列在当前筛选上下文中只有一个可见值时, 返回TRUE, 否则FALSE。
  • HASONEFILTER 在参数列被直接筛选(direct-filter)并且只筛选一个值时,返回TRUE, 否则FALSE

它们有相似的语法,都只接受基列(存在于模型中的列)作为参数。



 然而, 它们有一个显著的区别:

 我们通过2个示例,演示这一区别。

  1. 在参数列被直接筛选一个值时, 此时,HASONEFILTER 返回TRUE, 然而可能因为筛选的值在筛选上下文中不可见,HASONEVALUE 返回FALSE。
-- 一个列可能被直接筛选了一个值, 但是因为交叉筛选没有可见值。
DEFINE
    MEASURE Sales[Has One Filter] =
        CALCULATE (
            HASONEFILTER ( 'Product'[Category] ),
            'Product'[Category] = "Home Appliances",
            'Product'[Product Name] = "Contoso 512MB MP3 Player E51 Silver"
        )
    MEASURE Sales[Has One Value] =
        CALCULATE (
            HASONEVALUE ( 'Product'[Category] ),
            'Product'[Category] = "Home Appliances",
            'Product'[Product Name] = "Contoso 512MB MP3 Player E51 Silver"
        )
    MEASURE Sales[Are there any products?] =
        CALCULATE (
            COUNTROWS ( 'Product' ) > 0,
            'Product'[Category] = "Home Appliances",
            'Product'[Product Name] = "Contoso 512MB MP3 Player E51 Silver"
        )
EVALUATE
{
    ( "Has One Filter", [Has One Filter] ),
    ( "Has One Value", [Has One Value] ),
    ( "Are there any products?", [Are there any products?] )
}

▷TRY IT

  1. 一个列可能由于交叉筛选只有一个可见值,此时,HASONEVALUE 返回TRUE, 然而由于列没有被直接筛选, HASONEFILTER 返回FALSE。
-- 一个列可能由于交叉筛选只有一个可见值, 但并没被直接筛选。
DEFINE
    MEASURE Sales[Has One Filter] =
        CALCULATE (
            HASONEFILTER ( 'Product'[Category] ),
            'Product'[Product Name] = "Contoso 512MB MP3 Player E51 Silver"
        )
    MEASURE Sales[Has One Value] =
        CALCULATE (
            HASONEVALUE ( 'Product'[Category] ),
            'Product'[Product Name] = "Contoso 512MB MP3 Player E51 Silver"
        )
EVALUATE
{
    ( "Has One Filter", [Has One Filter] ),
    ( "Has One Value", [Has One Value] )
}

▷TRY IT

image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至:https://blog.51cto.com/dbaspace/2050922 DAX函数大全 针对Powe...
    夏沬沬阅读 26,330评论 0 7
  • 转至:https://zhuanlan.zhihu.com/p/35982521 DAX函数总结 1.日期与时间函...
    夏沬沬阅读 10,876评论 2 6
  • 在本章中,您将学习DAX中标量函数和表函数之间的区别。表函数对于DAX中的内部计算非常重要,当您为度量值或计算列编...
    BI_Jay阅读 9,786评论 0 7
  • 现在,您已经学习了DAX语言的基础知识。您知道如何创建计算列和度量值,并且您对DAX中的常用函数有很好的理解。本章...
    BI_Jay阅读 9,055评论 0 11
  • Power BI 是微软推出的数据分析和可视化工具 PowerBI绘图一般分为三个步骤:选择可视化图表,图标字段选...
    卅清阅读 7,706评论 0 10