帆软看板 - 问题收集

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(${安全环保-万支卷烟综合能耗_指标日期}),"月")

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

相关推荐
LucianaiB9 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
excel9 小时前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
陈随易11 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
LongRunning12 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
子兮曰13 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
IT_陈寒13 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手13 小时前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript
石小石Orz13 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
陈随易14 小时前
专注飞机 FocusFlight,两个人把番茄钟做成了一趟航班
前端·后端·程序员
总要学点什么14 小时前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质