模板学堂|SQL数据集动态参数使用场景及功能详解

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场(https://dataease.io/templates/)。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板,方便用户根据自身的业务需求和使用场景选择对应的仪表板模板,并在优质模板的基础上轻松制作自己的仪表板。目前,DataEase模板市场的模板数量已经超过了100个。

2023年7月上新模板

DataEase模板市场定期进行模板上新。2023年7月共上新7个模板,涉及教育、制造、零售、医疗、开源生态等主题,欢迎大家在DataEase模板市场下载使用。






模板技巧

本月的模板技巧为大家介绍通过DataEase开源数据可视化分析工具中SQL数据集的动态参数功能,来减少仪表板数据查询时间的方法。

在使用DataEase制作的仪表板时,用户经常会利用筛选组件来灵活地展示数据。然而,这些筛选组件实际上是在图表的SQL查询中添加了额外的WHERE条件。当数据量非常大的时候,这种简单的拼接方式可能会导致查询时间显著增加,影响用户体验。

为了加快查询的效率,我们建议用户考虑使用SQL数据集的动态参数功能。通过动态参数设置,用户可以将原本的外查询转换为内查询,从而有效地优化查询过程。这样一来,筛选条件将直接传递到原始SQL内部,避免了大规模的数据扫描,从而大幅减少查询时间。

以下方一个简单SQL语句为例,不设置动态传参,直接使用筛序条件的效果如下:

-- 原始SQL数据集语句:

select * from table_demo;

-- 仪表板使用筛选条件无动态传参的拼接语句: select * from (select * from table_demo) where condition = '仪表板筛选组件所选条件';

设置动态传参,筛选条件直接替换预置参数的效果如下:

-- SQL数据集语句设置动态参数:

select * from table_demo where condition = '${condition}';

-- 仪表板筛选条件使用动态参数做替换: select * from table_demo where condition = '仪表板筛选组件所选条件';

一、功能使用的前提

1.使用SQL数据集;

2.进入SQL数据集编辑界面后,数据链接选择使用直连模式(直连与定时同步的差异参见:https://dataease.io/docs/user_manual/dataset_description/)。

二、功能使用详解

1.SQL数据集的设置

这部分我们通过一个示例来介绍。如下图所示,通过一个简单的SQL语句,我们查询了华为云的账单数据。

SELECT * FROM 云账单_华为云;

当我们在仪表板上使用账单数据时,预备将产品作为筛选条件,并且希望该条件在SQL数据集中作为动态参数被传入。

这时我们便可在SQL语句上补充WHERE条件,但无需将条件设置为固定值,而是使用"${xxx}"进行替代,其中"xxx"为变量名。

SELECT * FROM 云账单_华为云 WHERE 产品 = '${Product}';

完成SQL语句的编写后,可以点击下图所示SQL数据集编辑界面右上角的"运行查询"按钮进行预览,并确认所写SQL的执行没有问题。

注意:虽然我们增加了WHERE条件,但未传入实际值到变量中时,并不会影响原始SQL的执行及使用。

如果需要进一步验证传入实际的值后,SQL查询结果是否符合我们的预期,可以点击SQL数据集编辑界面右上角的"参数设置"选项。

按照下图说明,完成相关参数的配置,点击"确认"按钮。

再次点击SQL数据集编辑界面右上角的"运行查询"按钮,观察运行结果。如下图所示,此次查询结果均为已设置的产品类型为"弹性公网IP"的数据,由此证明动态参数是正常生效的。

需要特别补充的是,如下图所示,在进行"参数设置"时,该下拉选项中两个参数的区别为:

■ 仅编辑时生效:参数设置中所赋予的值仅用于在此数据集的编辑界面中的"运行查询"测试,离开数据集编辑界面后,该值无任何作用;

■ 数据集预览时全局生效:参数设置中所赋予的值不仅在此数据集编辑中的"运行查询"测试中生效,同时其值将作为该SQL数据集的默认条件,在外部预览数据集时同样生效。

设置了"数据集预览时全局生效"选项后,退出SQL数据集编辑界面,此时预览数据集界面的效果如下,查询结果同样保持为已设置产品类型为"弹性公网IP"的数据。

2.在仪表板中的应用

使用上文中我们所配置的华为云云账单SQL数据集制作一些简单图表,以下是未做过滤时的原始仪表板。

该仪表板中同时放置了一个文本下拉筛选组件,并将华为云云账单SQL数据集中的产品作为筛选条件。

将该组件与SQL数据集中预设置的参数进行关联,如下图所示,勾选对应参数即可。

保存参数的关联后,返回仪表板。使用下图筛选条件任选一个值,所选的值会被直接传入到上文所设置的"Product"变量中。

重新编辑文本下拉组件,去掉参数的绑定后保存,再次测试仪表板数据筛选效果。

从筛选条件中任选一个数据值进行过滤,由于此时并未绑定SQL数据集的动态参数,即所选的值并未直接传到"Product"变量中,而是在其SQL外层拼接新的过滤条件。但其并不影响对仪表板数据的过滤,如下图所示,仪表板筛选结果与之前一致。

总结

SQL动态传参通过将用户的查询条件由外部传参转换为内部传参,有效提升了查询效率。然而,并非所有场景都需要使用动态传参,特别是在数据量较小的情况下。虽然该功能有助于改善查询效率,但并不能解决所有的SQL查询性能问题。

在使用动态传参时,需要综合考虑利弊,并视具体情况谨慎选择是否使用。进一步优化SQL语句、数据库表和数据库等方面也是提升查询性能的关键。

相关推荐
二等饼干~za89866810 小时前
从零搭建 Geo 开源项目源码开发环境——以 GeoServer 为例
开源
极客BIM工作室10 小时前
IfcOpenShell:开源BIM的核心引擎技术解析
开源
lularible11 小时前
从沙子到车辙(3.3):数据通路与控制器的“双人舞“
开源·嵌入式·汽车电子
数据法师11 小时前
MotrixNext:接棒经典 Motrix,用 Tauri 2+Rust 重构的下一代开源下载神器
重构·rust·开源
码途漫谈13 小时前
让 AI 编程不断线:9Router 的本地模型路由与 Token 节流术
人工智能·ai·开源·ai编程
SelectDB14 小时前
Agent 时代,为什么传统的可观测方案不适用了?
大数据·数据库·数据分析
kejiayuan14 小时前
FineBI组件制作-构成分析类图表
数据分析·数据可视化·finebi
kejiayuan14 小时前
FineBI组件制作-流向分析类图表
数据分析·数据可视化·finebi
幽络源小助理15 小时前
全新UI 阅后即焚V2正式版系统源码_全开源_安全加密传输
安全·ui·开源·php源码
lularible15 小时前
从沙子到车辙(3.5):存储层次
开源·嵌入式·汽车电子