页面树结构
转至元数据结尾
转至元数据起始

(本文档仅供参考)

问题说明

        自助仪表盘中,当图形数据存在空值,进行升序排序的时候,空值却出现在最下方,如下图所示,这是为什么呢?

       

问题原因

       目前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

          

  • 无标签