卡片常见问题
1. 当颜色栏拖入字段后,图例不按数值字段区分了
对于图例的颜色,「颜色」的优先级高于「数值」。
2. 直连数据库整数相除结果仍为整数的解决办法
Greenplum、PostgreSQL、Presto等多个数据库会出现,2个整数相除结果仍为整数,小数精度丢失的情况。
【解决方案】
1)方案1:数值直接乘以1.0。分子或者分母任一个乘以1.0即可以把整数转换为浮点数,但要注意,小数点后位数可能影响数据精度,小数点后位数最好按需确定。观远BI最多支持小数点后保留6位,所以即使乘以1.00000000000也只会保留前6位。
2)方案2:先把分子或者分母任一字段转换成double/float类型,然后再用round( )函数,或者cast(xxxxx as decimal())来指定小数点后保留位数。请使用数据库对应的函数。
? 方案2 示例
3. 长数值显示错误的解决方法
【背景】:用户使用CSV文件创建文件数据集,或者新建抽取数据集的时候,有字段存储的是超过15位的长数值(例如订单ID、用户ID),创建数据集后系统识别为Long型字段,然后数值会发生变化,例如末几位可能会显示为0。这样的话后续创建报表,一直使用的都是错误的数据。
【原因】:Long 型和Int 型类似,用来存储整数,虽然一般认为Long型占用4个字节,数值范围内的最大值为10位数(大约为21亿),不过不同编译环境下可能会不统一。这一情况在使用Excel打开CSV文件,或者在Excel单元格里直接输入长数值时,也是经常发生的。
【解决方案】
1)方案1:升级BI版本至4.4版本及以上。
2)方案2:如果任何情况下都不希望该类型字段值发生变化,建议在原始数据库里把长数值格式都存储为String字符串,或者创建数据集最后一步预览阶段把该字段类型改为String,或者之后把字段类型转换为String字符串(Spark函数推荐 cast([字段名] as string) )。
4. 时间戳和日期对比判断时返回结果不正确
【原因】:日期的格式为时间戳(timestamp)格式,但是“>=2020-02-02”或者“<=2020-02-02”里的“2020-02-02”为string格式,这里是按照字符串来比较的也就是比较长度,所以会有问题。
【解决方案】
1)方案1:改变维度里的日期格式:用to_date()函数把时间戳格式改为date格式。
2)方案2:改变比较条件。直接把比较条件改为:[日期]>= "2020-02-02 00:00:00" 和 [日期] <= "2020-02-02 00:00:00"。
? 衍生问题
【问题】两个参数筛选器分别设置了开始时间和结束时间,且默认为{{{yesterday}}},默认值或者选择同一天时,被联动的卡片会没有数据。【原因】排查发现数据集的日期字段为时间戳格式,所以无法正确对比,解决方案可以参考方案1,用to_date() 函数把时间戳格式改为date格式。【小结】作日期对比的时候,格式或者字符串长度要对应上,如果是时间戳格式,那么原则上对比的条件也应该是时间戳格式,如果是date格式,那对比的条件原则上也应该是date格式。
5. 去重计数时,空字符串也计数吗?
是的,空字符串是计数的,如果不想计数,可以把空字符串替换成null值,null值不计数。
6. 用卡片制作明细数据下载,为什么有些限制5万行下载,有些限制100行数据?
导出数据为excel的默认限制是5万行,可以从管理员设置里修改上限;但卡片编辑页面维度里如果设置了显示数量为100,那么导出的数据就是100行。
7. 如果把文本格式的字段放到数值上,聚合方式选择“无处理”、“最大值”和“最小值”的时候,展示的逻辑分别是什么?
文本也是可以比较大小的,依照的是ASCII 码的顺序。最大是 max(),最小是min(),无处理是取数据集中第一行(无排序)。
8. 同一直连数据集,相同筛选条件的两个卡片数据为何不一致?
【可能原因】:直连数据集缓存导致的。
假如数据集开启“支持实时卡片数据”,且页面开启“实时数据”,则卡片数据的可能是存在缓存的(具体的缓存有效期,要看数据集/数据更新那里的设置)。
卡片编辑会触发数据查询,在卡片编辑页,如果开启了“更改后自动刷新数据”,则每次编辑都会刷新缓存,从数据库中直取数据;如果未开启“更改后自动刷新数据”,则每次编辑都是在缓存有效期内,查询的缓存数据。
【解决方案】
1)卡片编辑保存后:都统一刷新下页面(目的:刷新缓存数据)。
2)直连数据集/数据更新那里,设置缓存有效期时可以选择无缓存(目的:尽量消除缓存数据)。
9. 编辑卡片提示“ 支持自动刷新的数据集行数已达上限 ”?
【原因】:出现这个情况是因为数据集过大(超过100w行)为了保障系统运行效率,这个开关默认是不允许打开了。可以在管理员设置-运维管理-卡片参数配置,这个页面里修改 编辑非直连卡片时自动支持自动刷新的数据集行数上限。
10. 加入“工具提示”后图表颜色变了
原因分析:加入“工具提示”实际是加维度了,所以数值顺序上会有变化。
解决方式:①如果没有【对比】字段,加入工具提示前后颜色不会变化(可以考虑取消【对比】字段);
②如果一开始的着色是按照维度【颜色】的字段着色的,那么加入工具提示前后颜色也不会变化(可以考虑加入【颜色】字段)。
11. 卡片中表格设置了总计,但没有数据
(1)出于表格展示性能考虑,对表格计算的数据量聚合后数据是有2w行的限制的。 所以数据量过大的情况下总计可能会显示不出。一般外部会对表格有筛选,会缩小数据范围,数据量不超过限制的时候总计是会有值的。推荐添加筛选器,既可以使得数据有条理,又解决显示不全的问题;
(2)某些使用公式的聚合度量,系统没办法正确显示总计,所以就不显示。
(3) 数值字段聚合方式选了“无处理”,那就不进行总计计算,需要切换成其他聚合方式。
12. 总计不展示,总计展示的样子不正常
表格的维度里列数不能超过31列,超过的话会不展示小计/总计。
13. 用户行为分析页面的原始数据在哪里可以看到?
原始数据可以在数据中心看到,文件夹为“Built-in-Dataset”,数据集类型为“内置数据集”。
14. 行总计是灰的,如何设置行总计
对比栏里有字段时才能计算行总计。
15. 表格排序不生效(排序规则)
(1)无小计总计时
-
-
对同一个字段,既有表头排序,也有「排序」时,表头排序优先;
-
有对比项,无表头排序时,数值类型字段排序会被拆分成多个数值项,因此不处理数值排序,仅支持维度的排序。
-
(2)有小计总计时
-
-
首先保证总计小计的位置
-
对同一个字段,既有表头排序,也有「排序」时,表头排序优先;
-
有对比项,无表头排序时,数值类型字段排序会被拆分成多个数值项,因此不处理数值排序,仅支持维度的排序。
-
16. 卡片下钻时报错
下钻的卡片里必须存在点击下钻的同维度字段才能下钻。如果下钻用的字段是卡片的新建字段,或者下钻卡片用的是不同的数据集,那么会无法下钻。
【解决方法】:保证一级卡片展示出来的维度字段,二级下钻卡片里存在同名同类型字段。
17. 表格的列数限制是怎么样的?
表格类型 | 维度 | 数值 | 对比 | 筛选 | 排序 |
普通表格 | 维度+对比字段<=32(维度+对比字段>31时小计总计不显示) | 124 | 维度+对比字段<=32(维度+对比字段>31时小计总计不显示) | 20 | 20 |
分组表 | 64 | 无限制 | \ | 20 | 20 |
明细表 | 无限制 | \ | \ | 20 | 20 |
轮播列表 | 聚合主键+字段<=50 | \ | 20 | 20 | |
热力图 | 1 | 1 | 1 | 20 | 20 |
注意:预览或者导出卡片出现报错“Cannot cast [Ljava.lang.Object; to org.apache.spark.sql.Column”是因为后端在处理时需拼接SQL,聚合等操作,还可能会超出长度,此时减少字段的数量即可解决。
18. 表格-热力图的对比字段值数量限制
对比字段里的值个数限制100个内。
19. 页面中表格无法左右拖动,横轴滚动条失效
设置的表头固定的默认列数较多,超过了一屏的显示,建议减少一下维度下的字段数量,即表头固定的列数。
20. 卡片上的数据标签显示不全
在数据标签设置里勾选下“允许重叠”,数据标签就能全部显示。
21. 在文本字段内容前面添加空格来实现维度字段的层级缩进,但不生效
观远BI前端界面(包括页面卡片、数据集预览),会默认去掉前面的半角空格显示。如果要实现缩进效果,建议在字段前添加全角空格,然后设置字段左对齐。
22. 漏斗图的转化率和到达率是什么意思?
漏斗图的转化率是当前环节人数/上一个环节人数,到达率是当前环节人数/第一个环节人数。
23. 卡片编辑页面,修改后一直处于加载状态
卡片编辑以后默认自动预览页面,如果在加载中状态原因一般是预览任务还在执行中,如果耗时较长,可以参考文档《任务长时间运行或者任务卡住怎么处理 》解决。
24. 编辑卡片时提示“当前卡片数据超过上限,仅显示前20000行”
原因分析:为性能考虑,当数据量过大,超过了2w行的时候,会限制数据的展示,即仅展示前2w行。(这里的2w行与导出Excel中的前2w行对应)
解决方案:①设置筛选条件,控制数据量在2w行之内;②优化卡片结构,控制对比项及对比值的数量。
注:其他类型的图表也有行数限制,顺序参考导出excel之后的前N行。
25. 有日期字段,无法选择同环比计算
高级计算-同环比只支持日期格式(date和timestamp),如果日期字段是string类型的需要先转换字段类型,非直连数据集可以用to_date()函数。
26. 筛选器里批量粘贴搜索的上限是多少?
目前设定是1000。
27. 卡片里用函数获取的今天日期为什么没有实时更新?
原因:卡片里所有数据的更新都依赖于数据集的更新。如果数据集当天未更新,用函数current_date()/now()/today()等获取的日期、时间不会自动更新,显示的是数据集最近一次更新时的缓存。
解决方案:设置数据集每天最少要更新一次。
28. 如何在表格中实现手机拨号
需求:工作人员需要在卡片中通过点击手机号就触发拨号功能。
方案:将[手机号]这个文本字段放在维度里,设置显示为“超链接”,地址写tel:${{{value}}},如图
注意:确保表格关联的数据集进行了严格的数据管控
补充场景:
在卡片中通过点击手机号发短信:sms:${{{value}}}
在卡片中通过点击邮箱发邮件:mailto:${{{value}}}
29. 为什么把内容为图片URL的字段设置为“显示为图片”不生效?
可能原因:包含URL的文本类型字段只有放在维度栏或者对比栏才能生效,放到数值栏无法生效。
30. 表格设置了固定表头,为什么只有部分列固定住了?
原因:表格锁定的最大区域为表格区域的60%,超出的列不锁定,此时手动设置的固定列数不生效,处理为自动状态。
解决方案:调整表头字段列宽,使要固定的部分小于卡片大小的60%。
31. 对聚合度量设置了条件格式,和当前列的平均值作比较,为什么不生效?
原因:条件格式比较里的平均是基于“聚合后的数据“”计算得到的平均值,其实是正确的;觉得不生效是因为总计小计用了“以原始数据计算”的平均值。