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

2021-08-31 11:15:12 浏览数 (1)

ISONORAFTER函数

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

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

语法

代码语言:txt复制
DAX=
ISONORAFTER(<值1>, <值2>[, 排序 [, <值1>, <值2>[, 排序]]…)

参数

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

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

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

返回结果

TRUE或者FALSE

例子

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

代码语言:txt复制
日期表 =
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:

代码语言:txt复制
ISONORAFTER例子1 =
FILTER ( '日期表', ISONORAFTER ( '日期表'[年度], "2019", DESC ) )

结果:

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

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

微软官方解释:

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

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

例子2:

代码1:

代码语言:txt复制
ISONORAFTER例子2 =
VAR TL =
    SUMMARIZE ( '日期表', '日期表'[年度], '日期表'[月份], '日期表'[日], '日期表'[索引] )
RETURN
    FILTER ( TL, ISONORAFTER ( [年度], "2019", ASC, [月份], "04月", ASC ) )

结果:

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

代码2:

代码语言:txt复制
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的初学者。

0 人点赞