美文网首页BI学习笔记
函数周期表丨信息丨值丨ISONORAFTER

函数周期表丨信息丨值丨ISONORAFTER

作者: Fabric丨白茶 | 来源:发表于2021-01-06 09:57 被阅读0次

    ISONORAFTER函数

    ISONORAFTER函数隶属于“信息”类函数。这个函数的出场率并不是特别高,其效果类似于Start At的行为,属于冷门函数之一。

    用途:可以用来划定范围。

    语法

    DAX=
    ISONORAFTER(<值1>, <值2>[, 排序 [, <值1>, <值2>[, 排序]]…)
    

    参数

    值1:(可重复)与第二参数进行对比的表达式;

    值2:(可重复)与第一参数进行对比的表达式;

    排序:(可选项可重复)用来排序使用,DESC表示降序,ASC表示升序。

    返回结果

    TRUE或者FALSE

    例子

    输入如下代码作为模拟数据:

    日期表 =
    GENERATE (
        CALENDAR ( DATE ( 2018, 1, 1 ), DATE ( 2020, 12, 31 ) ),
        VAR DA = [Date]
        VAR YEAR =
            FORMAT ( DA, "YYYY" )
        VAR QUARTER =
            "季度" & FORMAT ( DA, "Q" )
        VAR MONTE =
            FORMAT ( DA, "MM" ) & "月"
        VAR DAY =
            DAY ( DA )
        VAR WEEKID =
            WEEKDAY ( DA, 2 )
        VAR YOU =
            YEAR ( DA )
        VAR TOL =
            FORMAT ( DA, "MM" )
        VAR TPO =
            FORMAT ( DA, "DD" )
        VAR YEARR =
            FORMAT ( DA, "YYYYMM" )
        RETURN
            ROW (
                "年度", YEAR,
                "季度", QUARTER,
                "月份", MONTE,
                "日", DAY,
                "年度季度", YEAR & QUARTER,
                "年度月份", YEAR & MONTE,
                "星期", WEEKID,
                "索引", YOU & TOL & TPO,
                "年月", VALUE ( YEARR )
            )
    )
    

    如图:

    例子1:

    ISONORAFTER例子1 =
    FILTER ( '日期表', ISONORAFTER ( '日期表'[年度], "2019", DESC ) )
    

    结果:

    按照降序的结果,返回为2018年到2019年的所有数据。

    其实,白茶不太喜欢官方的描述,因为不好理解,按照白茶个人的理解就是寻找一个点,降序就是取这个点前半部分的值,升序就是取后半部分的值。

    微软官方解释:

    升序是筛选第一参数大于等于第二参数的值;

    降序是筛选第一参数小于等于第二参数的值。

    例子2:

    代码1:

    ISONORAFTER例子2 =
    VAR TL =
        SUMMARIZE ( '日期表', '日期表'[年度], '日期表'[月份], '日期表'[日], '日期表'[索引] )
    RETURN
        FILTER ( TL, ISONORAFTER ( [年度], "2019", ASC, [月份], "04月", ASC ) )
    

    结果:

    当出现两组比较值的情况下,这个结果看起来比较迷,别急,我们再输入一组代码。

    代码2:

    ISONORAFTER例子3 =
    VAR TL =
        SUMMARIZE ( '日期表', '日期表'[年度], '日期表'[月份], '日期表'[日], '日期表'[索引] )
    RETURN
        FILTER ( TL, ISONORAFTER ( [年度], "2019", ASC, [月份], "04月", DESC ) )
    

    结果:

    这段代码返回结果是2019年1-4月,以及2020年的数据。

    看到这,小伙伴们是不是很迷?

    别急,听白茶慢慢叨叨。

    可能小伙伴们觉得返回结果应该是只有2019年1-4月的数据,而不是包含2020年的数据;

    这样和白茶最初的理解差不多,觉得这个函数是类似于AND的效果,当二者都正确时返回TRUE,但是这个函数不是这样的。

    先来看看例子2中的代码1:

    白茶将这段代码拆分成两部分:

    在1这段代码中,返回结果应该是按照升序排列的结果,也就是2019年到2020年的数据;

    2这段代码返回的结果是按照升序的结果,返回的是4月之后的数据;

    先排序,再查找,在2019年至2020年这个时间段中,2019年四月份为节点,那么返回结果就是2019年4月至2020年的所有数据。


    再来看例子2中的代码:

    依旧将其拆分成两部分:

    1的结果返回为2019年至2020年的数据;

    2的结果返回为2019年4月至2018年1月的数据,不包含2019年4月之后的数据;

    粉色和白色的线代表1的结果,黄线代表2的结果。

    当1和2有交集的时候,那么这段数据算在内,也就是2019年1月至2019年4月的数据,即正+正=正;

    在1部分中,包含2019年4月至2019年12月,而2不包含这个时间段这部分数据,正+负=负,结果为负,因此这段时间省略不计;

    从2020年1月开始的这段时间,包含在1中,而2的结果没有计算这一部分,因此只有正,所以2020年计算在内,因此返回结果为2019年1月到4月加上2020年全年的这部分数据。

    小伙伴们❤GET了么?

    白茶会不定期的分享一些函数卡片

    (文件在知识星球[PowerBI丨需求圈])

    这里是白茶,一个PowerBI的初学者。

    相关文章

      网友评论

        本文标题:函数周期表丨信息丨值丨ISONORAFTER

        本文链接:https://www.haomeiwen.com/subject/strbzhtx.html