如何找出第一个非空数据?PowerBI做这个太简单了

您看看需不需要 2024-05-21 06:07:06

最近遇到星友问到一个这样的问题,数据有多个列,如何找出第一个非空列的值?

以下面的模拟数据来说明:

这是每个产品在2020年至2023年的数据,有些产品是从第一年就有数据,有些产品是从后面的某一年才产生业务,如何添加一列,来显示每个产品第一个有业务的年度的数据呢?

这是一种很常见的需求,从上面的表格直观来看,就是如何找出第一个非空的数据?

这种计算,普通的做法可以通过IF嵌套判断,比如在PowerQuery中可以这样添加自定义列:

第一个非空数据=

if [2020]=null and [2021]=null and [2022]=null

then [2023]

else if [2020]=null and [2021]=null

then [2022]

else if [2020]=null

then [2021]

else [2020]

虽然逻辑并不复杂,但如果列很多的话嵌套起来非常繁琐。

其实还有个简单的办法来实现这种需求,这样来添加自定义列:

第一个非空数据=[2020]??[2021]??[2022]??[2023]

双问号??是一种非空运算符,它会尝试返回符号前面的数据,如果前面的是空值,则返回后面的数据。

利用这个原理,通过多个双问号将多个列拼接起来,也就是上面的写法,就能自动判断前面每个列是否为空值,如果为空返回后面的列,非常简单地实现了这种需求。

如果用DAX来实现这种需求,也非常简单,因为DAX中有个函数与??的功能一样,专门就是做这种计算的,它就是COALESCE函数。

COALESCE的语法很简单,只需要将多个值放进去,然后它会自动按顺序返回这些值中第一个非空的数据。

上面的数据可以直接添加计算列:

第一个非空数据 =

COALESCE([2020],[2021],[2022],[2023])

本文介绍了M中??的一个经典用法,以及DAX函数COALESCE,实现快速找到第一个非空的技巧,你学会了吗?

更多PowerBI干货:

PowerBI星球

0 阅读:4

您看看需不需要

简介:感谢大家的关注