(本文档仅供参考)
问题说明
自助仪表盘中,当图形数据存在空值,进行升序排序的时候,空值却出现在最下方,如下图所示,这是为什么呢?
问题原因
目前Smartbi系统中的排序,是通过数据库order by语句去排序的,但是不同数据库下效果可能不同,例如:MySQL将null视为最小,oracle认为 null 最大。详见网络文档:https://blog.csdn.net/weixin_42511157/article/details/113208547。
因此,在Smartbi系统中,null值是没有参与排序的,就会排在最后。
解决方案
如果要把null值视为0去排序的话,需要手动转为特定值去进行排序,有如下三个方案:
1、通过sql update语句去将null值修改为0。
2、在原生sql查询的时候,将空值转化为0。
例如:原sql为:
select `CategoryName`, `Column1` from `categories`
修改为:
select `CategoryName`,(case when (`Column1` is null) then 0 else `Column1` end) as `Column1` from `categories`
3、通过数据模型新建一个计算字段,把null转为0。
例如:case when [Column1] is null then 0 else [Column1] end