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语句、数据库表和数据库等方面也是提升查询性能的关键。