功能背景
如下图所示,用户在使用仪表板时,常会放置一些筛选组件搭配使用。而筛选组件选择了条件后,本质上是在图表的 SQL 外层再拼接一个 WHERE 条件。当数据量非常大时,这种方式就不是很友好,需要较大的查询时间。
不设置动态传参直接使用筛序条件效果如下:
|
设置动态传参,筛选条件直接替换预置参数效果如下:
|
总结:SQL 动态传参的功能并没有直接体现在产品的使用操作上,而是通过这个方式将用户使用查询条件时的 SQL 由外传参转换为内传参从而提升查询效率。但大家不必过度使用,比如有些用户只要使用筛选条件必加动态传参,增加动态传参并非使用筛选条件的必要条件,如数据量较小,则无太大必要。同时,该功能并不能一劳永逸解决 SQL 查询效率问题,如使用了动态传参仍然查询较慢可进一步优化使用的 SQL 语句、数据库表、以及数据库等。
功能使用前提
使用 SQL 数据集;
使用直连模式(直连与定时同步的差异:https://dataease.io/docs/user_manual/dataset_description/)。
功能使用详解
SQL 数据集的设置
这部分我们以一个示例做介绍,如下图所示,通过一个简单的 SQL 我们查询了华为云账单数据。
|
当我们在仪表板上使用它时,预备将产品作为筛选条件,并且希望该条件在 SQL 数据集中作为动态传参。
这时我们便可在 SQL 语句上补充 WHERE 条件,但是条件无需写死,而是使用 ${xxx} 替代,其中 xxx 为变量名。
|
完成 SQL 语句的编写后,可以点击右上角【运行查询】进行预览,也是确认所写 SQL 执行没有问题。
注意:虽然我们增加了 WHERE 条件,但未传入实际值到变量中时,并不会影响原始 SQL 的执行及使用。
如需要进一步验证传入实际的值后,SQL 查询结果是否符合我们的预期,可以点击右上角的【参数设置】。
根据下图所示配置参数相关情况,并点击【确认】。
再次点击右上角的【运行查询】,观察运行结果,如下图所示,此次查询结果均为我们已设置的产品类型为”弹性公网IP“的数据,由此证明动态参数是正常生效的。
特别补充一下,如下图所示,在【参数设置】时,该下拉选项两个参数的区别:
仅编辑时生效:参数设置中所赋予的值仅用于在此数据集的编辑界面中的【运行查询】测试,离开数据集编辑界面后,该值无任何作用;
数据集预览时全局生效:参数设置中所赋予的值不仅在此数据集编辑中的【运行查询】测试中生效,同时其值将作为该 SQL 数据集的默认条件,在外部预览数据集时同样生效。
设置了”数据集预览时全局生效“后预览数据集的效果如下:
仪表板中应用
使用上文中我们所配置的华为云云账单 SQL 数据集制作一些简单图表,以下是未做过滤时的原貌。
同时使用该数据集做一个筛选组件(此处使用的为文本下拉组件)。我们可以先不关联上文中所设置的参数。
正如上文所说,即使 SQL 数据集设置了动态参数,我们不使用也不会对 SQL 数据集本身有影响。只是最终形成的 SQL 不同。
我们重新进入到筛选组件的编辑界面下,这次我们将该组件与 SQL 数据集中预设置的参数进行关联,如下图所示,勾选对应参数即可。
保存参数的关联后,再次返回仪表板,这次使用下图所示的筛选条件后,我们所选的值将会传入到上文所设置的“Product”变量中。