什么是仪表板的基础查询
仪表板的"基础查询"是包含查询语句和查询时间范围的查询标记,用户可以方便的在图表查询语句中使用仪表板的"基础查询", 用来优化仪表板的加载速度,让图表更快呈现展示。
为什么需要基础查询
当有以下情况时,你可以考虑使用基础查询来优化仪表板:
●仪表板中多个图表的查询有部分查询步骤相同或相似
●仪表板中多个图表查询数据相同,但图表的配置选项不同。比如不同的图表类型,不同的标题,图表颜色等
例如在一份销售数据展示的仪表板中,有几个图表都是查询某一年的销售数据,只是过滤条件不同。
图表分别展示了各个来自不同区域的销售数据,在这种情况下当一些图表使用了同一份查询结果或者类似的查询结果时,我们就可以优先考虑仪表板的"基础查询"来优化仪表板图表查询了。
不同的图表可以引用同一个基础查询的结果集来展示图形,由于优化了查询任务并大大减少了仪表板中查询任务的个数,从而达到了加速仪表板的效果。
在鸿鹄中如何使用基础查询
1、创建基础查询
打开仪表板,在仪表板右上方的"配置"下拉选项中选择"基础查询"。
在"基础查询"面板中,点击右上方"新建基础查询"按钮。在新建基础查询对话框中
输入基础查询的名称,例如base_search_1
输入查询语句,例如select _source, count(*) from _internal where _source is not null group by _source having count(*) > 3000
2、在图表查询语句中使用基础查询
与仪表板输入标记语法一致,使⽤ $...$在查询语句中就可以引用基础查询的查询结果。例如在上面步骤中已经创建了名称为base_search_1的基础查询,接下来在两个不同的图表中分别设置图表查询语句为
select * from $base_search_1$
select * from $base_search_1$ where _source like '%/opt%'
图表类型均设置为表格,即可得到如下所示的图表:
上图示例的两个图表引用基础查询base_search_1, 减少了仪表板的查询任务数量,查询速度得到了优化。
基础查询的实践
基础查询使用输入标记
新建一个选择器输入标记field, 标记值选项分别为action和method
新建仪表板基础查询base_search_2,设置查询语句为select $field$, count(*) from _internal where $field$ is not null group by $field$ having count(*) > 300
添加两个图表使用上面创建的基础查询, 例如一个折线图和一个柱状图图,设置图表查询为select * from $base_search_2$这样就可以通过更改标记field的选项值来更新基础查询的查询结果从而控制图表的显示:
基础查询与图表中使用预存查询的比较
在图表中使用预存查询时,由于有预先执行获得的缓存结果集,可以避免使用时再做查询,从而加速结果集的获取速度。预存查询利用周期性执行获得的缓存结果集,所以仪表板的基础查询在及时性上要更好。如果图表数据对实时性要求较高,需要及时把最新查询结果反馈在图表中时,可以使用仪表板基础查询。
预存查询的查询语句无法引用到仪表板中的输入标记。如果图表的查询语句使用了仪表板输入标记作为参数,那么可以优先使用基础查询。
基础查询与图表中使用SQL视图的比较
SQL视图只有在SQL执行的时候,才会计算相应的数据,所以SQL视图和基础查询在数据及时性上一致。但多个图表引用同一个SQL视图并不会加速仪表板的加载速度。
SQL视图同样不能很方便的直接使用仪表板的输入标记。如果图表的查询语句使用了仪表板输入标记作为参数,那么可以优先使用基础查询。
基础查询与图表中使用物化视图的比较
物化视图会预先计算查询结果,并且能够提供实时数据的计算结果而无需关心物化视图预计算导致的延迟问题。
物化视图同样不能很方便的直接使用仪表板的输入标记
限制:
基础查询名称不可与已有仪表板输入标记名称重复
查询类型输入标记的查询语句中不可以引用基础查询
基础查询语句中暂时不可以引用时间类型的输入标记
基础查询语句不可以引用其他基础查询
使用提示:
使用了基础查询的图表,点击图标刷新只会刷新图表的查询结果,而不会触发刷新图表查询中引用到的基础查询的查询结果
使用了基础查询的图表,图表的查询时间范围不会影响和改变引用到的基础查询的查询结果。因为基础查询的结果集范围由基础查询本身的查询时间而定。
使用了基础查询额图表,同样支持钻取、在搜索中打开等操作
定义了基础查询的仪表板,在导出仪表板或克隆仪表板时,基础查询的设置同样会被导出或克隆。