表格中有一部分数据不全或者fixed计算结果为null

表格的数据不全主要体现在,将表格的翻页到最后一页,发现只展示标题,但是数据却显示不出来:

表格中有一部分数据不全或者fixed计算结果为null - 图1

还有一种就是将一个计算字段拖入到表格中,也会出现只展示标题,但是不会显示数据。

以上两种现象都是一个原因:表格中的自定义字段里面存在fixed 函数,fixed 引用的维度中有空数据导致的。比如:{fixed [地区],[城市]:sum([销售额])},如果地区或者城市字段中有空数据,就会造成上面的现象。

这个属于产品BUG么?

并不是产品BUG

原因是:fixed 会生成一个子查询,子查询的关联字段就是fixed引用的字段,如果里面存在空数据,就会导致为空的数据关联不上,就会把这部分数据过滤掉。

如何判断字段里面存在空?

可以通过有数的数据字典,如果数据里面并且数据量没有超过2W,有数就会展示出这个空数据:

表格中有一部分数据不全或者fixed计算结果为null - 图2

如果数据超过了2W,数据字典是不会展示出来的,只能去底层数据库中查询是否有空。

如何解决这个问题?

只需要再数据字典中将这个空起一个别名,然后将这个别名字段拖入到图表里面替换掉原来的字段:

表格中有一部分数据不全或者fixed计算结果为null - 图3

表格中有一部分数据不全或者fixed计算结果为null - 图4

如果fixed 里面的维度不需要再视图上展示,我们可以在fixed 的维度里面加一个STRIFNULL()函数,或者ifnull函数:

{fixed STRIFNULL([地区]),STRIFNULL([城市]):sum([销售额])}

还有一个情况也会出现上述的现象

就是对表计算度量进行了筛选:这种主要的运用场景就是我需要取排名前10的人员信息。这个时候大部分用户都会使用rank函数算出排名,然后拖入到图表里面的筛选里面。

这种情况在老版本8.5之后是不太好解决的,新版本我们可以使用row_number函数实现排名,就可以解决了。

有数8.8之后,对fixed计算进行一次优化

优化之后,当维度里面有空的时候,并不会把数据过滤掉,造成页面展示位空的情况,而是fixed计算的结果是null。解决方案也是和上面描述一样

除了表格,交叉表也会出现一样的情况。解决方案和上述一致