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

发布于 2023年08月09日

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

2023年7月上新模板

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

1 开源软件供应链生态大屏.png2 全国高考招生大数据.png3 2022年消费者权益保护.png4 1panel 数据看板.png5 业务生产看板.png6 某连锁饮品销售看板.png7 2022年医美行业网络关注度.png

模板技巧

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

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

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

8 技巧.png以下方一个简单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/)。

9 SQL数据集.png10 直连.png二、功能使用详解

1. SQL数据集的设置

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

SELECT * FROM 云账单_华为云;

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

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

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

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

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

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

14 参数设置.png按照下图说明,完成相关参数的配置,点击“确认”按钮。

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

16 弹性公网.png需要特别补充的是,如下图所示,在进行“参数设置”时,该下拉选项中两个参数的区别为:

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

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

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

18 全局生效.png2. 在仪表板中的应用

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

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

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

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

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

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

总结

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

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