数据自动补全是指Sugar BI将 SQL 查询出来的数据中空缺的数据自动填补上对应的值,自动补全可以自动填补零或补空(即null
,对于折线图而言补空的效果是折线补空的地方无值,折线分成多段)。一个典型的使用场景是,例如用一条折线来展示本月 1 号到 30 号的数据,但是由于一些原因,数据库中缺失 5、6 号两天的数据,这时如果没有自动补全功能,折线图上就会完全忽略 5、6 号的数据,4 号之后就直接是 7 号,用户完全不知道缺失了两天的数据,这样对用户很不友好,这个时候自动补全功能就有用武之地了,它能将 5、6 号的数据补上 0 或者空,让用户在浏览折线图的时候能够一眼看出这两天数据缺失了。
Sugar BI中的折线图、柱状图、表格等一些图表在使用 SQL 方式绑定数据时,支持数据自动补全。自动补全有以下四种方式:
简单补全
简单补全是指补全查询结果中没有取值的列,例如您 select 了 id、pv 两个字段,但是有些数据行中 pv 字段没有取值即是null
,这个时候如果你想把这些null
值都展示为0
,就可以使用简单补全。
按日期补全
在一些情况下,我们期望数据能够自动按照日期连续,对缺失日期的数据自动补上零或者空之类。
例如折线图展示多天的数据,但是由于一些原因,数据库中缺失了几天的数据,这时如果没有自动补全功能,折线图上就会完全忽略这些缺失的数据,用户完全不知道缺失了数据,这样对用户来说并不友好。因此Sugar BI提供了数据按照日期自动补全的功能。
需要注意的是,按日期补全需要图表绑定的 SQL 模型中有日期类型的字段。
原始的折线图效果:
按日期补零后效果:
按日期补空后效果:
按时间补全
按时间补全和上一节的按日期补全很类似,按日期补全的数据粒度是天,按时间补全的数据粒度可以让您自己选择(支持小时、半小时、10 分钟、1 分钟、10 秒等)。如果数据的开始和结尾不在某一天的 0 点或 24 点,可以选择「时间起点是 0 点」或「时间补全到 24 点」。
需要注意的是,按时间补全需要图表绑定的 SQL 模型中有时间类型的字段。
原始折线图效果:
按2小时
粒度的时间补零的效果:
按数字序列补全
有时,数据库中保存的日期、小时或其他有序数据是使用数字序列标识的,比如:-2,-1,0,1,2,3.....。或者是前面有 0 的格式(如一天的 24 小时):00,01,02,03.....。 此时,如果你的数据中这个序列存在空缺(例如一天 24 小时,数据只有 0 点到 15 点的数据,但是用户想把 16 到 23 点的数据补成 0),这时可以选择「按数字序列补全」,补全数据的类型同样可以选择补空或者补零。
首先需要选择数字序列所在的字段,这个字段在 SQL 模型中的数据类型需要是整数或字符串。比如下图例子中选择了 info 字段。并且 info 在数据库中的数据内容如下:
如果在 SQL 模型中将 info 字段的数据类型设置为「整数」,则补全结果如下:
可以看到,虽然数据库中保存的是有补位格式的数字,由于数据类型设置为「整数」,前面的 0 被忽略了。
如果在 SQL 模型中将 info 字段的数据类型设置为「字符串」,则补全结果如下:
此时,Sugar BI会识别数字序列中的补位形式,并自动生成相同形式的补充数据。
这里需要注意,数据中的补位格式需要固定,如果有:01,2,03 这样的数据,会导致最终结果中补位形式的不统一
最后,通过配置「序列起始值」和「序列结束值」可以对数据补全的范围进行设定,范围外不会进行补全,但如果有数据还是会展示。