![f45ff230e3a5980dd1d081950838f86e.png](https://i-blog.csdnimg.cn/blog_migrate/8c222895130e4ad01c7fb76b7b66453b.png)
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 )
)
)
如图:
![49a4336f458344e0f5de2df059f5e763.png](https://i-blog.csdnimg.cn/blog_migrate/aede09a2c3c98b3471a85c101268ea45.jpeg)
![efb9ba46262c8cd4645238a785335c8f.png](https://i-blog.csdnimg.cn/blog_migrate/bf6634c5f26e04da953b05425de053a5.png)
例子1:
ISONORAFTER例子1 =
FILTER ( '日期表', ISONORAFTER ( '日期表'[年度], "2019", DESC ) )
结果:
![6a66bb04debdc24ffe089b5f94c47d50.png](https://i-blog.csdnimg.cn/blog_migrate/bf689e8ad97527c453dc3cb0c15f4b22.jpeg)
按照降序的结果,返回为2018年到2019年的所有数据。
其实,白茶不太喜欢官方的描述,因为不好理解,按照白茶个人的理解就是寻找一个点,降序就是取这个点前半部分的值,升序就是取后半部分的值。
微软官方解释:
升序是筛选第一参数大于等于第二参数的值;
降序是筛选第一参数小于等于第二参数的值。
![07572c8d550cf598fd25f5d13450e19b.gif](https://i-blog.csdnimg.cn/blog_migrate/b9c1462af6287a208a53d2d4700b1974.gif)
例子2:
代码1:
ISONORAFTER例子2 =
VAR TL =
SUMMARIZE ( '日期表', '日期表'[年度], '日期表'[月份], '日期表'[日], '日期表'[索引] )
RETURN
FILTER ( TL, ISONORAFTER ( [年度], "2019", ASC, [月份], "04月", ASC ) )
结果:
![0bfd1a3ad762e95b890cf9cad75ffc36.png](https://i-blog.csdnimg.cn/blog_migrate/01172df6dbb3bc7ef01a2f6c3b87e800.jpeg)
当出现两组比较值的情况下,这个结果看起来比较迷,别急,我们再输入一组代码。
代码2:
ISONORAFTER例子3 =
VAR TL =
SUMMARIZE ( '日期表', '日期表'[年度], '日期表'[月份], '日期表'[日], '日期表'[索引] )
RETURN
FILTER ( TL, ISONORAFTER ( [年度], "2019", ASC, [月份], "04月", DESC ) )
结果:
![4f09475f634332d2050414faa75bd33a.png](https://i-blog.csdnimg.cn/blog_migrate/9212b8e147c56a8d398c610a81ad54cd.jpeg)
这段代码返回结果是2019年1-4月,以及2020年的数据。
看到这,小伙伴们是不是很迷?
别急,听白茶慢慢叨叨。
![8a3989fc90f6624ecb4ed23c6bacb925.gif](https://i-blog.csdnimg.cn/blog_migrate/eb740d5c05e0fb3c96d0ebf23ce079dc.gif)
可能小伙伴们觉得返回结果应该是只有2019年1-4月的数据,而不是包含2020年的数据;
这样和白茶最初的理解差不多,觉得这个函数是类似于AND的效果,当二者都正确时返回TRUE,但是这个函数不是这样的。
先来看看例子2中的代码1:
![f0804cdfbcb9ca8771b3ae985c9cfadc.png](https://i-blog.csdnimg.cn/blog_migrate/1b5e827eda7080a631d89f3f8acb91c5.jpeg)
白茶将这段代码拆分成两部分:
在1这段代码中,返回结果应该是按照升序排列的结果,也就是2019年到2020年的数据;
2这段代码返回的结果是按照升序的结果,返回的是4月之后的数据;
先排序,再查找,在2019年至2020年这个时间段中,2019年四月份为节点,那么返回结果就是2019年4月至2020年的所有数据。
再来看例子2中的代码:
![95452756f8a32eadb77b4aab10d8e9df.png](https://i-blog.csdnimg.cn/blog_migrate/a35ef0e12545cf45b27d02d602f0b26b.jpeg)
依旧将其拆分成两部分:
1的结果返回为2019年至2020年的数据;
2的结果返回为2019年4月至2018年1月的数据,不包含2019年4月之后的数据;
![76fd3c9a81a7291ee26c12ab836b9cf9.png](https://i-blog.csdnimg.cn/blog_migrate/feafd8e56c7a473abc24a770e2317aa6.jpeg)
粉色和白色的线代表1的结果,黄线代表2的结果。
当1和2有交集的时候,那么这段数据算在内,也就是2019年1月至2019年4月的数据,即正+正=正;
在1部分中,包含2019年4月至2019年12月,而2不包含这个时间段这部分数据,正+负=负,结果为负,因此这段时间省略不计;
从2020年1月开始的这段时间,包含在1中,而2的结果没有计算这一部分,因此只有正,所以2020年计算在内,因此返回结果为2019年1月到4月加上2020年全年的这部分数据。
![efb9ba46262c8cd4645238a785335c8f.png](https://i-blog.csdnimg.cn/blog_migrate/bf6634c5f26e04da953b05425de053a5.png)
小伙伴们❤GET了么?
白茶会不定期的分享一些函数卡片
(文件在知识星球[PowerBI丨需求圈])
![2fb6398f662c4ec0f0070c90d4a81e92.png](https://i-blog.csdnimg.cn/blog_migrate/ef62e1d30a29e859e165b3a30c9d9d76.png)
这里是白茶,一个PowerBI的初学者。
![3d02a8976cb0735e40a718a3b550169e.png](https://i-blog.csdnimg.cn/blog_migrate/ea35a06159698ff131647d193286b594.jpeg)