发布日志v1.15
# 数据源
# 统一特殊字段引号包裹处理方式
我们知道当数据库字段名中出现以下情况,需要使用包裹符号来避免SQL查询中出现错误或歧义:
- 特殊字符: 如果列名或表名包含特殊字符(如空格、连字符、@符号等),必须使用包裹符号。例如,user-name在MySQL中需要使用反引号包裹:
user-name
。 - SQL关键字: 如果列名或表名与SQL关键字(如select、from、group等)相同,使用包裹符号来避免冲突。例如,在SQL Server中,表名select需要写成[select]。
- 保留字: 如果列名或表名与数据库保留字相同,需要使用包裹符号来防止语法错误。例如,MySQL的order是保留字,如果将其作为列名需要写成
order
。 - 避免歧义: 当表名、列名或别名中包含空格或其他可能引起歧义的字符时,使用包裹符号来明确标识。例如,first name应写作[first name]在SQL Server中。
- 多语言支持(中文字段名): 在多语言数据库环境中,可能需要支持包含非ASCII字符的标识符,如中文、日文等。在这种情况下,也需要使用包裹符号。
数据库 | 包裹方式 | 示例 |
---|---|---|
MySQL | 反引号(` ) | `column-name` | |
PostgreSQL | 双引号(" ) | "column-name" |
SQL Server | 方括号([] ) | [column-name] |
Oracle | 双引号(" ) | "COLUMN-NAME" |
DB2 | 双引号(" ) | "COLUMN-NAME" |
Presto | 双引号(" ) | "column-name" |
ClickHouse | 反引号(` ) | `column-name` | |
Doris | 反引号(` ) | `column-name` |
原来需要用户在建立数据集的时候设定的字段包裹参数在1.15之后版本取消,并统一由系统判断, 不需要用户考虑数据库语法差异
# 优化内置数据库字段名称
优化内置数据库字段名称, 支持内置数据库切换模型兼容以下场景
- 字段名带中文
- 字段名带有空格
- 字段名带有特殊字段
- Clickhouse、MySQL、H2对字段名大小写敏感问题统一处理
# 数据集
# 重要 计算字段
在数据分析时,如果基础数据没有包括回答问题所需的所有字段,可以增加计算字段,增加的计算字段将作为原始明细数据字段的一部分参与运算
场景
- 普通字段类型转换
- 日期格式转换: 将一个日期字段从字符串格式转换为日期格式。例如,将”20230809”转换为”2023-08-09”。
- 数值转换: 将文本格式的数值转换为实际数值类型,如将”1000”转换为整数1000,或将”3.14”转换为浮点数。
- 货币转换: 将一个货币值从一种货币单位转换为另一种货币单位,例如从美元转换为欧元。
- 字段间的运算
- 销售金额计算: 通过乘法计算单价和数量,得出销售金额(Sales Amount = Unit Price * Quantity)。
- 折扣后的价格: 计算应用折扣后的最终价格,如Final Price = Original Price - (Original Price * Discount)。
- 时间差计算: 计算两个日期或时间字段之间的差值,例如计算一个项目的完成时间或订单的处理时间(Processing Time = End Date - Start Date)。
- 逻辑判断
- 分类判断: 基于特定条件对数据进行分类,如Case When Age >= 18 Then 'Adult' Else 'Minor' End。
- 评分计算: 根据多条件对记录进行评分,如计算客户的信用评分或产品的质量等级。
- 状态标记: 基于某些业务规则为记录添加状态标记,例如,如果库存量低于某个阈值,标记为“缺货”。
- 汇总字段
累计总和: 计算一个列的累计总和,如SUM(Sales) OVER (ORDER BY Date),用以分析销售趋势。 排名: 使用ROW_NUMBER()或RANK()函数对记录进行排名,如根据销售额对销售人员排名。 分区求和: 使用SUM(Sales) OVER (PARTITION BY Region)按区域对销售进行分组汇总。
- 图形化定义普通计算字段与窗口函数计算字段
- 计算字段间引用
CASE
WHEN #{首次下单时间} = `order date` THEN '新客'
ELSE '老客'
END
2
3
4
- 动态计算:只有在分析中用到的计算字段才会在查询中构造,避免无用的运算开销
- 配套支持:过滤组合、维度成员获、指标字段统计取均已支持使用计算字段
Q&A
问: 我使用SQL数据集,这些计算字段能分分钟设计出来,还需要使用计算字段吗?
答: 如果是非汇总类型字段(不需要使用窗口函数),可以直接在数据集sql中添加,但是如果是汇总类型计算字段,BI引擎会根据分析中是否使用到该字段动态决定是否构造查询,相较直接在sql中增加汇总运算字段在性能上会比有好一些. 此外如果多个计算之间有运算,利用计算字段间的引用也能减少一些sql编写工作量, 比如上面案例中case when中使用了汇总字段。问: 计算字段与数据集表达式字段有什么区别?
答: 数据集表达式使用场景是针对汇总结果之后的字段间运算,而计算字段运行在汇总之前明细数据级别,相当于给原始表新增了列。问: 哪些类型数据源可以使用计算字段?
答: 数据源大类上目前支持关系型数据库、文本、Http、在线表格,ES和MongoDB暂不支持,此外关系型数据库如果使用汇总类型的计算字段对数据库版本也有一定要求,特别提示:MySQL需要8.0以上版本。问: 有没有详细案例?
答: 计算字段分析案例
# 数据集表达式
- 支持本次新增的计算字段
- 支持字段函数嵌套,汇总字段表达式可以不用双引号包裹
-- 汇总字段还有非汇总函数
sum(year(column))
-- 汇总字段之间有算术运算
sum(`colA` + `colB`),
-- 汇总字段是一段sql脚本
sum(case when ... end)
2
3
4
5
6
- 增加统一的数据库字段包裹符,应对不同数据库字段不一致与字段名中包含特殊字符的问题 为了区分汇总对象是单一字段还是sql运算,统一增加了字段包裹符,不分区数据库类型
sum(a-b) -- 识别为字段a减字段b
sum(`a-b`) -- 识别为字段`a-b`
2
注意
新特性加入之后,请检查原来的数据集表达式中是否有产生歧义的定义,如果有请更新表达式
# 自助分析
# 重要 工作空间保存
原本保存在浏览器本地存储中的用户多个分析表标签页,现在可以保存到服务端,并且支持保存多个分析组。这一改进带来了诸多好处:
- 跨设备访问:用户可以在不同设备上访问和恢复保存的分析标签页,不再受限于单一浏览器或设备。
- 配置持久化:将数据保存到服务端,避免了浏览器缓存清理或意外关闭时可能导致的数据丢失,确保用户的工作不间断。
- 多任务管理:用户可以创建并管理多个分析组,方便在不同的项目、部门或场景之间快速切换,提高了工作效率。
- 持续工作流:用户无需担心中断的工作进程,可以随时从保存的状态继续进行分析,提升了工作流的连续性和生产力。
这些改进显著提升了数据分析过程中的灵活性和用户体验。
- 工作空间切换
- 图表标签页支持拖动
- 新建标签页支持打开与新建图表
# 重要 交叉表数据导出到数据库
继1.11支持明细数据导出到数据库之后,交叉表数据也能导出到数据库了,利用交叉表的数据透视分析能力,可以让用户简化复杂分析逻辑,数据结果持久化与共享
- 点击导出到数据库、选择字段, 这一步可以选择需要的字段,重命名字段设置字段数据类型
- 选择目标数据库与目标表
- 多次导入字段增加、字段减少数据合并
# 重要 新增3D地图
- 3DGisBar,飞线、标签图
- 支持区域下钻、上卷
- 支持联动
- 兼容看板导出
- 丰富的样式配置
- 数据区域自适应
# 新增3D地球
从交叉表到3D地球,轻松一步直达。
数据展示形式支持多种方式,包括数据标牌、数据气泡和标线,让信息表达更加直观生动。
此外,还支持地球自动旋转和聚焦中国的功能,提供更具沉浸感和针对性的地理数据展示。
# 新增K线图
- 标准K线图的绘制需要4个关键指标,分别是:开盘价、收盘价、最高价、最低价。如果数据中不足4个指标,系统将自动使用最后一个指标补齐,确保K线图所需数据的完整性。
- 我们建议优先使用直接计算的结果绘制K线图,以确保图表的准确与性能。
- 如果计算性能允许,也可以基于原始数据使用计算字段功能,通过按行维分组、时间排序的方式计算出开盘价和收盘价,从而生成K线图。这种方法可以更灵活地处理数据,适用于更复杂的分析场景。
# 新增SvgMap
- 在配置栏背景图选项上传SVG作为底图,需要标注的区域元素上需要有 name 属性;
- 如果您没有SVG素材不要着急,您可以使用synoptic.design工具,上传图片作为底图,在图片上做区域标记再转换为SVG;
- synoptic.design标注时,仅需填入第二项AreaName(to display)
除了按数值大小映射区域颜色深度之外,还支持按列维区分色块
# 图表其他
# 日期格式化选项增加
# 允许维度字段拖到图表设计指标栏
取消对维度字段不能拖拽至指标栏的限制,允许将维度字段拖拽到图表设计的指标栏中,并设置汇总类型为计数(Count)。
- 瀑布图数字标签显示占比
- 图表指标注释
- 箱线图支持1个行维度
- 数据聚焦支持Y轴
# 复杂报表
# 重要 使用多维分析引擎构造数据查询
复杂报表设计器充分利用了多维引擎的强大计算能力,使得报表开发变得更加高效和直观。
- 通过多维引擎实现快速运算:利用多维引擎可以轻松设置同比、环比以及占比等统计分析,从而避免了复杂的报表表达式设计,大大简化了报表开发流程。
- 显著提升查询性能:相比于传统复杂报表中单元格的逐个迭代,多维数据引擎能够提供远超其上的性能。通过使用多维引擎来准备数据,可以显著提高查询效率和响应速度。
- 支持排序
- 数据集表达式
- 值类型变换
- 维度成员隐藏
# 数据集节点支持拖拽到单元格
# 表达式编辑器支持拾取单元格坐标
表达式编辑器支持拾取单元格坐标,可以直观快捷地选择单元格,减少出错并提高编辑效率。
# 看板
# 重要变量控制参数是否显示
变量控制参数是否显示, 参数显示时不生效
# 网格看板组件注释
# 其他
- 单个图表集成支持参数传递,支持图表切换
- 交叉表单元格设置宽度过小超出内容隐藏, 鼠标移入提示完整内容
- 交叉表联动事件排除空白单元格
- 单个指标,无列维默认配置不增加指标后缀
- 更新与删除记录actionLog
- 安全加固