tencent cloud

腾讯云 BI

产品简介
产品概述
产品优势
产品功能
应用场景
购买指南
计费说明
购买指引
升配说明
续费说明
快速入门
数据接入
创建 VPC 数据源
创建云数据源
创建自有数据源
数据建表和数据加工
数据分析基础知识介绍
数据建表
数据加工
数据分析
分析设置
交互分析
即席分析
数据可视化
公共样式设置说明
筛选组件
图表组件
富文本组件
其他组件
移动端布局编辑器
主题设置介绍
页面布局介绍
看板目录管理
协作及应用
推送渠道管理
报表推送
分享
嵌出
自助取数
指标告警
数据安全
参数构建
平台管理
账号及权限管理
统计及分析
系统设置
资源迁移
实践教程
优化实践合集
如何做趋势分析
如何做占比分析
如何使用 Excel 文件分析数据
如何做表格
常见问题
相关协议
服务等级协议
隐私协议
数据处理和安全协议
联系我们
文档腾讯云 BI实践教程优化实践合集筛选器下拉加载慢,如何提速

筛选器下拉加载慢,如何提速

PDF
聚焦模式
字号
最后更新时间: 2025-09-19 15:30:18
下拉筛选器列表来源于数据表时,需要从数据表里查询并聚合结果后,载入到筛选器。导致如下图,载入下拉列表时间可能过长甚至失败。


当存在以下情况时,可能引起筛选器加载缓慢:
查询数据太多:例如底表有100万行订单数据,我们需要筛选省份,则需要先查询100万数据,然后聚合出30多个省份;
结果数据太多:例如底表有100万行订单数据,我们需要筛选销售员,则每次数据库输出5万行销售员数据,传输到 BI 服务需要较长的时间。

因此,优化思路从以下角度展开:
减少服务的查询:能不去请求列表的尽量不请求,适合字段值比较固定的场景,如选择月份、省市,这种相对固定的字段;
减少数据库的查询:能不去查询数据的尽量不去查询数据库,适合字段值实时性不高的场景,如选择部门列表,这种不需要每次去数据库查;
减少数据量的查询:能不查明细的尽量不去查明细,适合字段值较多,但实时性不高的场景,如选择供应商列表,这种不需要每次查询百万级数据。

以上,可根据实际情况选择其中一种或多种进行优化。


减少服务查询:使用手工输入静态值

适用场景:列表值比较少,值比较固定,如选择省;
优劣势:
优势:不用查询,图表加载出来数据即加载完成;
劣势:非动态,如新增值需要手工维护。

操作指引:

1. 进入筛选器编辑:

2. 设置数据来源为“自定义”:

3. 设置下拉选项值:

4. 保存后生效。


减少数据库的查询:使用筛选器缓存

适用场景:列表值不需要实时数据,可定期更新的,如选择供应商;
优劣势:
优势:相同查询条件,比直接查询快很多;
劣势:第一次加载依然会很慢; 如果查询条件发生变化,则会需要重建缓存导致比较慢。

操作指引:

1. 进入筛选器,在menubar里选择“缓存与刷新”:

2. 开启缓存,并设置缓存频率为 每天的 08:00(即在明早8点前,都无需发起查询)

3. 保存后生效。


减少数据量的查询:定期维护维表

适用场景:列表值不需要实时数据,可定期更新的,如选择商品;
优劣势:
优势:减少数据库压力,减少明细查询时间;
劣势:需要数据工程师操作。

操作指引:
1. 在数据库中建一张实体表,如下示例代码,生成一张mysql表:
-- 创建商品维度表
CREATE TABLE dim_list (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL COMMENT '商品名称',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY (product_name) -- 确保商品名称唯一
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品维度表';

-- 初始化数据
INSERT INTO dim_list (product_name)
SELECT DISTINCT 商品名称
FROM order_tab
WHERE 商品名称 IS NOT NULL
ON DUPLICATE KEY UPDATE product_name = VALUES(product_name);
* 以上代码,从订单明细表 order_tab 里取出“商品名称”字段,生成商品名称的维表 dim_list。

2. 创建定时任务,定时执行数据更新:
-- 创建存储过程
DELIMITER //
CREATE PROCEDURE update_dim_list()
BEGIN
INSERT INTO dim_list (product_name)
SELECT DISTINCT 商品名称
FROM order_tab
WHERE 商品名称 IS NOT NULL
AND 商品名称 NOT IN (SELECT product_name FROM dim_list)
ON DUPLICATE KEY UPDATE product_name = VALUES(product_name);
END //
DELIMITER ;

-- 设置定时任务(每天8点执行)
CREATE EVENT IF NOT EXISTS daily_dim_list_update
ON SCHEDULE EVERY 1 DAY STARTS '2025-05-17 08:00:00'
DO CALL update_dim_list();
3. 在 BI 里创建数据源和数据表,连接以上已创建的 dim_list 表(以下以数据表为例):


4. 筛选器关联数据表的商品名称字段:



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈