Skip to main content
Version: 2.13.0

基础查询

仪表板中经常会出现多个图表的查询有部分查询步骤是相同的,如果图表可以基于相同的仪表板"基础查询"那么就可以加速查询速度,提高性能表现。

于是,当一些图表使用了同一份查询结果或者类似的查询结果时(例如几个图表都是查询某一年的全国销售数据,只是过滤条件不同比如展示了各个来自不同区域的销售数据),你可以使用仪表板的"基础查询"。 不同图表可以引用同一个基础查询的结果集来展示,由于优化了查询任务并大大减少了仪表板中查询任务的个数,从而达到了加速仪表板的效果。

info

仪表板内的基础查询只能在当前的仪表板中使用,无法被其他仪表板使用。

步骤

  1. 打开仪表板,在仪表板右上方的"设置"下拉选项中选择"基础查询"

    base_search_entry

  2. "基础查询"面板中,点击右上方"新建基础查询"按钮。

    base_search_list_create

info

您需要有当前仪表板的编辑权限才能新建或更改仪表板基础查询

  1. 打开新建基础查询对话框。

    • 输入基础查询的名称,例如base_search_1
    • 输入查询语句,例如select _source, count(*) from _internal where _source is not null group by _source having count(*) > 3000

    base_search_create_modal

    • 点击"确定"按钮,保存仪表板基础查询设置。

    base_search_create_done

    • 基础查询使用时间类型标记

    除了使用默认的时间选择器作为基础查询的时间范围,您还可以使用仪表板已有的时间类型标记作为基础查询的时间范围:

    base_search_trp_token

  2. 当基础查询添加之后,可以在图表的查询中引用基础查询,与仪表板输入标记语法一致,使⽤ $...$。 例如在上面步骤中已经创建了名称为base_search_1的基础查询,那么图表查询语句为select * from $base_search_1$,图表类型设置为表格,如图所示

    base_search_1_in_widget

  3. 接下来您可以创建第二个图表使用base_search_1的基础查询,查询语句为select * from $base_search_1$ where _source like '%/opt%',

    base_search_in_widget_2

基础查询使用输入标记

  1. 创建一个选择器输入标记field, 标记值选项分别为actionmethod

    base_search_use_token_1

  2. 添加基础查询base_search_2, 查询语句为select $field$, count(*) from _internal where $field$ is not null group by $field$ having count(*) > 300

    base_search_2

  3. 添加一个折线图和一个柱状图图表,设置图表查询为select * from $base_search_2$,这时就可以通过更改标记field的选项值来更新基础查询的查询结果从而控制图表的显示了:

    base_search_2_done

    base_search_2_done_2

基础查询实践

基础查询与图表中使用预存查询的比较

  • 在图表中使用预存查询时,由于有预先执行获得的缓存结果集,可以避免使用时再做查询,从而加速结果集的获取速度。预存查询利用周期性执行获得的缓存结果集,所以仪表板的基础查询在及时性上要比预存查询更好。 如果图表数据对实时性要求较高,需要把最新查询结果反馈在图表中时,可以使用仪表板基础查询。
  • 预存查询的查询语句无法引用到仪表板中的输入标记。如果图表的查询语句需要使用仪表板输入标记作为参数,那么建议使用基础查询。

基础查询与图表中使用SQL视图的比较

  • SQL视图只有在SQL执行的时候,才会计算相应的数据,所以SQL视图和基础查询在数据及时性上一致。但多个图表引用同一个SQL视图并不会加速仪表板的加载速度。
  • SQL视图同样不能很方便地直接使用仪表板的输入标记。如果图表的查询语句需要使用仪表板输入标记作为参数,那么建议使用基础查询。

基础查询与图表中使用物化视图的比较

  • 物化视图会预先计算查询结果,并且能够提供实时数据的计算结果而无需关心物化视图预计算导致的延迟问题。
  • 物化视图同样不能很方便地直接使用仪表板的输入标记。
对比维度基础查询预存查询SQL视图物化视图
使用仪表板输入标记✅支持
缓存结果集
结果集更新模式自动更新
注:基础查询任务过期后会自动更新
定时更新 或 手动更新自动更新
注:多个图表引用同一个SQL视图可简化查询语句和查询逻辑,并不会加速仪表板的加载速度。
实时更新(自动)
支持的SQL语法所有所有所有有限的语法支持:聚合计算
不支持:join,distinct,多数据集查询
权限配置无(只在仪表板内部使用) ✅支持✅支持✅支持✅支持
页面配置无(只在仪表板内部使用)✅支持✅支持✅支持
资源消耗计算资源计算资源计算资源存储资源

使用限制

  • 基础查询名称不可与已有仪表板输入标记名称重复
  • 查询类型输入标记的查询语句中不可以引用基础查询
  • 基础查询语句中暂时不可以引用时间类型的输入标记
  • 基础查询语句不可以引用其他基础查询

使用提示

  • 使用了基础查询的图表,点击图标刷新只会刷新图表的查询结果,而不会触发刷新图表查询中引用到的基础查询的查询结果
  • 使用了基础查询的图表,图表的查询时间范围不会影响和改变引用到的基础查询的查询结果。因为基础查询的结果集范围由基础查询本身的查询时间而定。
  • 使用了基础查询额图表,同样支持钻取、在搜索中打开等操作
  • 定义了基础查询的仪表板,在导出仪表板或克隆仪表板时,基础查询的设置同样会被导出或克隆。