发布日志v2.0

2024-11-20 About 46 min

# 数据源

# 文本数据源优化

# 读取 Tab 分隔的 CSV 文件

CSV 是 Comma-Separated Values 的缩写,通常情况下以逗号 (,) 分隔数据。然而,在某些场景下,部分软件会生成以 Tab 键 (\t) 分隔的 CSV 文件,例如 Tableau 导出的数据文件。

为了方便从 Tableau 等工具迁移的用户进行数据验证,本版本的文本数据源功能新增了对 Tab 分隔的 CSV 文件的读取支持。通过简单的配置,用户即可加载以 Tab 分隔的 CSV 数据。

# 数值字段带有货币符号支持转数值

Excel 中数值设置格式后可能会带有货币符号。当用户将字段数据类型设置为“数值”时,BI 系统将自动去除符号前缀并转换为数值,从而减少手动调整的工作量。

# 数据集

# 重磅 数据库统一函数

我们知道,不同数据库的函数语法存在一定差异,这些差异俗称为 SQL 方言。因此,在使用 BI 工具连接不同类型的数据库时,用户常常需要频繁查阅多种数据库函数的帮助文档。

此外,还有一些常用的计算函数在某些数据库中可能并未直接支持。针对这些情况,我们提供了一些便捷的解决方案,例如:

  • DIVIDE 函数:当数据库中执行两数相除操作且除数为 0 时,通常会报错。为此,我们提供了 DIVIDE 函数,用于安全处理这种情况。
  • CHRATE 函数:在计算变化率时,除了确保除数不为 0,还需要计算变化的差值。为此,我们引入了 CHRATE 函数,简化计算过程。
-- 不是用CHRATE
CASE WHEN col_a = 0 THEN 0 
     ELSE (col_b - col_a) * 1.0 / col_a 
END as `chgrate`
-- 使用CHRATE
CHRATE(col_a, col_b)
1
2
3
4
5
6
  • MySQL 不支持日期截断 DATETRUNC,PostgreSQL 不支持 IF(test, then, else) 函数,Oracle 不支持字符串 SPLIT 等等。
  • 最麻烦的是日期操作,比如对日期增加或减少时间单位、格式化日期、计算两个日期的时间差。这类函数在数据分析中是最常用的,但在不同数据库中的用法却千差万别,简直让人抓狂。

我们提供的统一计算函数,可以屏蔽底层数据库的方言差异,支持国内使用率最高的多种数据库:

在新建 计算字段汇总表达式 时,您可以选择使用 BI 提供的系统内置函数,或者直接使用原生数据库函数。

# 常用函数体系

2.0 版本一次性带来了近 50 个常用函数,全面满足您的日常分析需求,包括:

  • 逻辑函数:如 CASEIF 等。
  • 日期函数:20 个,涵盖日期计算与格式化。
  • 字符串函数:13 个,支持字符串操作与处理。
  • 数学函数:8 个,用于常见数值计算。
  • 类型转换函数:3 个,支持数据类型灵活转换。

# 支持范围

  • 计算字段
  • 汇总表达式
  • 维度字段脚本衍生维度

# 函数目录树

首次使用函数时,您可以通过函数目录树查询函数列表及简要介绍,也可以通过在线文档查看详细介绍。点击函数目录树中的函数名称,可以快速将其插入到编辑器中。

# 编辑器函数自动补全

为了帮助熟练使用 BI 的用户,我们提供了函数快速补全功能。

# 计算字段

# 计算字段命名开放

计算字段命名放宽了限制,允许使用特殊字符和空格。之前,计算字段命名需要遵循数据库中的字段命名规则, 例如: 必须以字母或下划线开头,且不能包含空格、中文或特殊字符。这一限制增加了对熟悉 Excel 函数的非技术用户的使用难度。

命名限制放开后,您可以使用任何贴合业务场景的字符串作为计算字段名,无需再考虑命名规范。

# 重要 计算字段任意依赖

依赖计算支持基于汇总字段计算,字段之间可以自由引用

在上个版本中,如果计算字段引用了一个汇总类型的计算字段,则自身不能为汇总类型,这使得汇总字段之间的计算变得困难。然而,这种需求在许多分析场景中非常常见。
因此,在本次更新中,我们通过依赖树构建和重新设计计算字段依赖算法,并结合动态查询生成,使得计算字段之间的计算可以任意依赖(环形依赖除外)。

# 支持数据库统一函数

最重要的是,计算字段现在支持统一函数功能。计算字段是统一函数使用最频繁的场景,通过统一函数,您可以方便地对原始数据进行丰富的转换和加工操作。

# 重磅 LOD表达式

# Tableau LOD

在介绍LOD表达式之前我们先来介绍一下什么是LOD表达式,以及LOD表达式的作用, LOD源自全球知名敏捷分析BI软件厂商Tableau, 而且也是Tableau分析能力强大的核心所在

Tableau 的 LOD(Level of Detail)表达式用于控制计算的粒度(即数据聚合的级别),使用户能够在默认的视图粒度之外自定义计算的范围。 通过 LOD 表达式,可以在同一个视图中实现不同的聚合层级,便于执行复杂的数据分析。

主要作用

  1. 控制计算粒度:允许在视图的当前粒度之上或之下定义计算的范围。
  2. 实现复杂聚合:解决无法在默认聚合层级上直接实现的计算问题,比如同时计算部分和整体的值。
  3. 灵活对比和分析:支持不同层级之间的比较,例如分组内总计与整体总计的对比。

LOD 表达式的三种类型

  1. INCLUDE:在当前视图粒度的基础上,增加一个或多个维度进行计算。 • 用于在现有粒度上添加额外的维度计算细节。 • 示例:{INCLUDE [Category]: SUM([Sales])}
  2. EXCLUDE:从当前视图粒度中排除一个或多个维度进行计算。 • 用于忽略某些维度以获得更高层级的聚合。 • 示例:{EXCLUDE [Region]: AVG([Sales])}
  3. FIXED:无论当前视图的粒度如何,始终基于指定的维度计算。 • 用于创建固定维度的计算结果,独立于视图上下文。 • 示例:{FIXED [State]: SUM([Sales])}

常见场景

  • 分组内计算:计算每个组内的最大值、最小值或平均值。
  • 整体指标对比:例如,计算各地区销售额占全国销售总额的比例。
  • 时间序列分析:计算每年、每月或每季度的固定值。

# BI LOD

BI LOD实现了Tableau LOD几乎90%以上的特性,使用体验和语法也延续了Tableau的风格。此外,还额外增加了基于LOD的过滤和同环比计算功能。

# LOD表达式

{[FIXED | INCLUDE | EXCLUDE] <维度声明> : <聚合表达式> [: <过滤条件>]}
1
  • 由于 FIXED 的汇总粒度不受视图维度影响,因此我们将 FIXED 归入了计算字段。
  • 汇总表达式函数增加了 LOD INCLUDE 和 LOD EXCLUDE。

# LOD图形化配置

为了降低 LOD 的使用门槛,对于简单的 LOD 计算,我们在指标配置中提供了图形化配置。

# EXCLUDE 同比

借助LOD计算引擎,我们实现了Tableau LOD没有的同环比定义

-- 同期值
{EXCLUDE DATEADD(`r_date`, -1, 'year') : sum(`store_sales`)}
或
{EXCLUDE ADDYEAR(`r_date`, -1) : sum(`store_sales`)}

-- 同比
chgRate(${同期值}, sum(`store_sales`), 0)
1
2
3
4
5
6
7

说明

  1. 当视图中含有(且必须含有)字段 r_date 对应的维度时,将基于该字段计算同期值。
  2. r_date 可以设置为任意数据颗粒度,如:yyyy-MM、yyyy-Q、yyyy-MM-dd、yyyy-WW。
  3. 基于 LOD 的同期值可以在任意数据颗粒度上使用,您还可以添加任意维度和日期组合进行分析。
  4. 与指标字段类型的同环比计算区别:基于 LOD 的同期值计算运行在数据库层面,数据库会有额外的开销。
  5. 且表面不需要去年数据,即:可以在过滤中对 r_date 过滤只显示 23 年的数据,只要数据库中有 22 年的数据,同期值首年的同期值依然能正确计算。
    即在数据源层实现同环比计算

# EXCLUDE 环比

-- 上月值: 日期往前一个月则为月环比
{EXCLUDE DATEADD(`r_date`, -1, 'month') : sum(`store_sales`)}
-- 上周值:日期往前一周则为周环比
{EXCLUDE DATEADD(`r_date`, -1, 'week') : sum(`store_sales`)}

-- 环比
chgRate(${上月值}, sum(`store_sales`), 0)
1
2
3
4
5
6
7

  • 函数目录树
  • 编辑器LOD函数自动补全

# LOD使用案例

为了让首次接触LOD的用户更详细地了解LOD,我们特意准备了两个专项文档:

# 数据集汇总函数

  • 增加LEAST, GREATEST, CEIL, DIVIDE, CHGRATE函数

# 自助分析

# 支持图表级计算字段

为了让业务人员在自助分析时能灵活地使用分析功能,而不仅限于简单的数据可视化,计算字段除了在数据集定义之外,在自助分析页面也可以随时添加。

使用场景:技术人员准备好数据集之后,业务人员可以自行进行数据加工和分析,无需每次都修改数据集添加计算字段。

# 重要 [颜色标记] 柱线图、饼图、排行榜、环形柱、瀑布图

销量越好的产品挣得越多吗?

回答这个问题需要考虑两个指标:销售额和利润。现在,我们可以在按销售额排序的同时,按利润渲染颜色。

隐藏利润指标,销售额的值样式将根据隐藏的利润值进行着色。这样,您可以得到下面的产品类别销售额排名,其中蓝色越深表示利润越多,黄色表示利润为负,即亏损产品。

销量额和盈利能力一目了然

气泡图、排行榜、饼图、环形柱也支持按指标着色

  • 按维度着色

  • 支持正负数颜色不同,自动配色方案在指标中同时有正负数时,会为负数分配不同的颜色,便于区分。
  • 柱线图、饼图、气泡图按隐藏指标着色。
  • 支持自定义指标配色方案。

# 基于值类型变化之后的值排序

[值排序重构] 行维没有排序的情况下,对值类型变化之后的指标列排序。

下图中,2024年差值行方向滞后开销而来的年度环比。原来指标排序只能基于原始数据(即:2024年的开销)排序,现在可以支持值类型变化之后的数值排序。

排序规则

排序规则依然是维度优先,此处行维上没有顺序或者行维上部分排序都可以实现按值类型变化计算之后的值排序

# 数值样式图标

  • 交叉表分段样式/比较变色/条件样式增加图标配置。
  • 明细表条件格式增加图标配置。

  • 指标卡
    • 条件样式增加图标配置
    • 翻牌器指标卡默认样式优化

# 进度类型图目标值

图表切换为指标卡类型时,指标栏会自动添加目标值栏目。

# 增强图表系列拆分

拆分依据支持按指标位置拆分,柱线图支持配置拆分列维数量:

  • 按全部列维拆分(默认)。
  • 按部分列维拆分。
  • 按指标位置拆分。
  • 按列维+指标位置拆分。
  • 按部分列维+指标位置拆分。

# 工作空间优化

自助分析Workspace标签样式优化,当工作空间中的标签页过长时,支持滚动显示。

# 数值轴最大值、最小值表达式

数值轴的最大值和最小值配置支持使用动态计算表达式,例如:max * 1.2min - 10

# 维度过滤支持汇总过滤

  • adhoc查询点击快速添加区分字段类型

# 重要 交叉表网页分页打印

  • 支持重复表头
  • 支持横向分页

# [数字标签] 负数数字标签位置自动相对正数反转

图表组件的数字标签只能配置一个位置,但通常情况下,当出现负值时,我们习惯于数字标签显示在与正值相反的位置。

# Tree结构树图优化

# 热力图: 优化鼠标悬停提示与数字标签配置

# 过滤栏支持维度编辑

# 复杂报表

# [复杂报表-OLAP查询]

注意

复杂报表使用全功能的自助分析多维引擎需要依赖nodejs服务

  • 图表级汇总表达式
  • 计算表达式

# 斜线表头支持

  • 斜线表头Html显示、Excel导出、打印支持
  • 文字方向、位置配置
  • 按周边单元格数量自动划分区域

# 简单打印功能

复杂报表支持打印功能。当设置行类型为重复表尾后,表尾将在打印页中每页重复显示。

# 表达式数据集表达式过滤条件支持like计算

支持数据库风格的like操作,如下:

emp.sum(SALARY, FULL_NAME like '%a')
或
emp.sum(SALARY, FULL_NAME like 'a%')
1
2
3

# 优化字符串函数对null值处理

原字符串处理函数在遇到null时会直接报错, 优化下列字符串函数

emp.sum(SALARY, indexof(emp.FULL_NAME, 'a') > -1)
1
  • indexOf, length, lower, upper
  • replace, substring, trim

# 看板

# 重要 标签页容器

一个标签页中可以放置多个图表,并支持与网格布局结合使用,灵活满足多场景展示需求。

# 重要 日期查询升级

  • 看板日期范围组件支持选择年范围、月份范围和周范围。
  • 看板日期组件新增支持按周选择。
  • 单日期参数新增按范围筛选功能。
  • 日期参数支持在运行时切换类型。

周、周范围

# 联动外链支持url中带变量的模板解析

# [联动更新] 联动更新前清除上级联动

在多图联动时,根据联动触发的先后顺序建立联动关系。当上级联动发生变化时,下级联动将自动清空。

联动链条

  1. 1-产品系列联动事件引起 -> 2/3 数据更新
  2. 此时,2和1形成联动层级关系。在已经受联动影响的2图上点击产品类型,3图会发生变化。
  3. 此时,3图同时受到1和2的影响。点击3图的产品子类别,4图会随之变动。
  4. 改变2图的联动状态时,3图的联动状态会自动清空。
  5. 改变1图的联动状态时,2图和3图的联动状态会自动清空。

# 格式化日期支持联动

对于格式化后的日期,系统能够正确地保持联动关系。

# 下拉框优化

  • 解决远程搜索首次输入时不触发查询的问题。
  • 修复下拉框单元清空后搜索内容不更新的问题。
  • 解决单选模式下,搜索内容后,搜索关键词被清空的问题。
  • 点击下拉按钮可切换下拉框的开启和关闭状态。

# 大屏

# 组件绑定标签信号

解决一个组件需要在多个标签中激活的问题

  • 支持同组选择多个标签(只要组内有一个激活即可)。
  • 支持 parentKey 跨组信号传递。

如下图所示,文本组件同时绑定了标签1中的Tab1Tab2,以及标签2中的Tab4标签1标签2通过 parentKey 形成同组标签。

实现效果:

  1. 在两个标签组件中,只有一个标签信号可以被激活。
  2. Tab1Tab2Tab4 被激活时,文本组件将显示。

# 其他

# 专题分析配置节点图标

  • 优化 Ace Editor 编辑器关键词提示,避免关键词、字段和函数的混淆。
  • [优化] 解决看板导出图片时,位置计算不精确的问题。
  • [图片导出优化] 解决在缩放屏幕下导出图片时截图过大的问题。
Last update: November 20, 2024 10:13