帆软看板 - 问题收集

1、直连模式下,ORDER BY不生效

  1. 在添加 SQL 数据集时,如果 SQL 语句中用到了 ORDER BY 语句,则该 SQL 数据集的计算模式必须选择「抽取数据」来保存。在直连模式下,FineBI 会忽略 SQL 中的 ORDER BY 子句。
  2. 直连模式的机制:直连模式下,FineBI 将查询直接下发给数据库,但为了优化查询性能,FineBI 的直连引擎通常会剥离或重写 SQL 中的排序逻辑,因此预览数据会呈现数据库返回的默认随机顺序。

可以用 row_number() over()解决

核心原理是:

  • ORDER BY 只是「结果集的展示顺序」,是元信息,会被直连引擎丢弃;
  • row_number() over(ORDER BY ...) 是一个计算列 ,它在数据库端就把排序结果固化成了一个真实的数值字段(1、2、3...),以普通数据的形式返回给 FineBI,因此不受 ORDER BY 被剥离的影响。

举个例子

写法一:直连模式下 ORDER BY 失效

sql 复制代码
	SELECT 
	    city AS 城市,
	    SUM(amount) AS 销售额
	FROM t_sales
	GROUP BY city
	ORDER BY city

写法二:用 row_number() over() 生成稳定序号

sql 复制代码
	SELECT
	    t.城市,
	    t.销售额,
	    row_number() OVER (ORDER BY t.城市) AS 排序序号
	FROM (
	    SELECT 
	        city AS 城市,
	        SUM(amount) AS 销售额
	    FROM t_sales
	    GROUP BY city
	) t

返回结果会是这样,序号被固化下来,无论直连还是抽取都稳定:

2、组件显示年月并且往前推12个月

这里会有问题,默认会先走下面的条件,数据源中最新的月份是2026-08,往前推12个月

当我们选择7月份问题就出现了,并没有显示去年的8月份数据。

也就是筛选条件先过滤2026-08到2025-07的数据,然后在过滤2025-07之前的数据

这里我们需要这样设置,设置两个字段的过滤

当我们再次选择2026-07,可以看到2025-08的数据出来了,我们推测这样设置应该就是先走第一个过滤条件,然后再走第二个过滤条件,这样就是按顺序进行过滤了。

所以如果需要过滤12个月之内的数据,需要扩展两个时间字段才行。

3、横坐标显示月份

有时候横坐标只需要显示月份就行了,这里我们添加计算字段

这里的指标日期是年月时间类型

复制代码
CONCATENATE(MONTH(${安全环保-万支卷烟综合能耗_指标日期}),"月")

如下设置,就可以显示月份了

相关推荐
jianpeng的工程笔记1 小时前
EL8 / EL9 安装 Slurm 26.05.4:主备控制器、MariaDB 记账与作业验收
linux·数据库·mariadb·高性能计算·slurm
程序员-Benothing1 小时前
Linux系统时间管理:date、timedatectl、NTP、Chrony配置
linux·运维·服务器
用户83134859306981 小时前
Vue3 v-bind 使用指南,从基础到高阶
前端·javascript·vue.js
计算机魔术师1 小时前
Anthropic冲刺2万亿IPO:一年亏420亿,还要再砸5180亿算力
前端
GISer_Jing1 小时前
前端Agent架构师指南:从零搭建智能前端Agent
前端·ai·langchain
不停喝水1 小时前
【前端转全栈java速通课】 项目实战④-1 Spring Boot 创建项目-定义接口-请求参数处理-分层规范-依赖注入
java·前端·spring boot
用户298698530141 小时前
在 React 中使用 JavaScript 将 HTML 转换为 PDF
javascript·react.js·html
the3clipse2 小时前
MacOS、Linux 与 Windows 视频编解码对比:AV1、HEVC、ProRes 与硬件加速优劣势
linux·windows·macos·hevc·av1·视频解码·硬件解码