如何填充Power BI矩阵中的空白?
经常会遇到这样的问题,如何对可视化的表格或者矩阵中出现的空白,进行向下填充数据?从PowerBI功能上来说,并没有这个设置,无法直接对可见的单元格数据进行操作。
但从数据的计算逻辑上并非不能实现,就是让空值等于上面最后一个非空数据,可以用DAX来完成这种填充。
以下面这个简单的数据为例:
因为并不是每天都有数据,所以如果用个连续的日期表作为矩阵的行,类型作为列,就变成了下面样式的表:
这样的矩阵是不是很常见?对于其中的空白如何填充完整呢?
先以向下填充为例,实际上就是,如果某天的数据是空值,就让它等于该日期之前的最后一个非空数据,建一个度量值,用DAX表达如下:
今日数量 =
VAR curdate=MIN('日期表'[日期])
RETURN
CALCULATE(
LASTNONBLANKVALUE(
'日期表'[日期],
[数量]
),
'日期表'[日期]<=curdate
)
主要是利用了DAX函数LASTNONBLANKVALUE的逻辑,这个函数通过对已排序的列对应的表达式求值,返回不为空的表达式的最后一个值。
上面的度量值的逻辑,就是对日期表中,先筛选小于等于当前日期的日期,对每一个满足条件的日期计算数量,返回最后一个有数据的日期所对应的数量,结果如下:
这就是向下填充的效果。
同理,如果想向上填充,也就是让空值等于之后日期的第一个非空的数据,可以用FIRSTNONBLANKVALUE来实现,它与LASTNONBLANKVALUE的用法完全一致,只是逻辑正好是相反的,返回第一个非空数据。
今日数量 =
VAR curdate=MIN('日期表'[日期])
RETURN
CALCULATE(
FIRSTNONBLANKVALUE(
'日期表'[日期],
[数量]
),
'日期表'[日期]>=curdate
)
向上填充的效果如下:
如果你也有类似的填充需求,可以试试用上面的思路来实现。
不过LASTNONBLANKVALUE和FIRSTNONBLANKVALUE也是一种迭代函数,如果你的数据量较大,应该谨慎使用这些函数,以免影响报告的性能。
帮你从0到1,轻松上手PowerBI
赞 (0)