跳到主要内容
跳到主要内容
编辑此页

查询构建器

任何查询都可以使用 ClickHouse 插件运行。查询构建器是较简单查询的便捷选项,但对于复杂查询,您需要使用 SQL 编辑器

查询构建器中的所有查询都具有查询类型,并且至少需要选择一列。

可用的查询类型有

  • 表格:最简单的查询类型,用于以表格格式显示数据。非常适合作为包含聚合函数的简单和复杂查询的通用类型。
  • 日志:针对构建日志查询进行了优化。在探索视图中与配置的默认值配合使用效果最佳。
  • 时间序列:最适合用于构建时间序列查询。允许选择专用时间列并添加聚合函数。
  • 追踪:针对搜索/查看追踪进行了优化。在探索视图中与配置的默认值配合使用效果最佳。
  • SQL 编辑器:当您想要完全控制查询时,可以使用 SQL 编辑器。在此模式下,可以执行任何 SQL 查询。

查询类型

查询类型设置将更改查询构建器的布局,以匹配正在构建的查询类型。查询类型还决定了可视化数据时使用的面板。

表格

最灵活的查询类型是表格查询。这是其他查询构建器的通用类型,旨在处理简单查询和聚合查询。

字段描述
构建器模式简单查询排除聚合和分组依据,而聚合查询包含这些选项。
选定的列。原始 SQL 可以键入到此字段中,以允许使用函数和列别名。
聚合聚合函数列表。允许为函数和列自定义值。仅在聚合模式下可见。
分组依据GROUP BY 表达式列表。仅在聚合模式下可见。
排序依据ORDER BY 表达式列表。
限制LIMIT 语句附加到查询末尾。如果设置为 0,则将其排除。某些可视化可能需要将其设置为 0 以显示所有数据。
过滤器要在 WHERE 子句中应用的过滤器列表。
Example aggregate table query

此查询类型会将数据呈现为表格。

日志

日志查询类型提供了一个专注于查询日志数据的查询构建器。可以在数据源的日志配置中配置默认值,以允许查询构建器预加载默认数据库/表和列。还可以启用 OpenTelemetry 以根据模式版本自动选择列(禁用列选择)。

默认情况下,会添加时间级别过滤器,以及时间列的排序依据。这些过滤器与其各自的字段相关联,并将随着列的更改而更新。默认情况下,级别过滤器从 SQL 中排除,将其从 IS ANYTHING 选项更改将启用它。

日志查询类型支持数据链接

字段描述
使用 OTel启用 OpenTelemetry 列。将覆盖选定的列,以使用所选 OTel 模式版本定义的列(禁用列选择)。
要添加到日志行的额外列。原始 SQL 可以键入到此字段中,以允许使用函数和列别名。
时间日志的主要时间戳列。将显示类似时间的类型,但允许自定义值/函数。
日志级别可选。日志的级别严重程度。值通常看起来像 INFOerrorDebug 等。
消息日志消息内容。
排序依据ORDER BY 表达式列表。
限制LIMIT 语句附加到查询末尾。如果设置为 0,则将其排除,但这不建议用于大型日志数据集。
过滤器要在 WHERE 子句中应用的过滤器列表。
消息过滤器一个文本输入框,用于使用 LIKE %value% 方便地过滤日志。当输入为空时排除。
Example OTel logs query

此查询类型将在日志面板中呈现数据,并在顶部显示日志直方图面板。

在查询中选择的额外列可以在展开的日志行中查看

Example of extra fields on logs query

时间序列

时间序列查询类型类似于表格,但侧重于时间序列数据。

这两个视图大致相同,但有以下显着差异

  • 一个专用的时间字段。
  • 在聚合模式下,时间间隔宏会自动应用,并对时间字段进行分组依据。
  • 在聚合模式下,“列”字段被隐藏。
  • 自动为时间字段添加时间范围过滤器和排序依据。
您的可视化缺少数据吗?

在某些情况下,时间序列面板似乎被截断,因为限制默认为 1000

尝试通过将其设置为 0 来删除 LIMIT 子句(如果您的数据集允许)。

字段描述
构建器模式简单查询排除聚合和分组依据,而聚合查询包含这些选项。
时间查询的主要时间列。将显示类似时间的类型,但允许自定义值/函数。
选定的列。原始 SQL 可以键入到此字段中,以允许使用函数和列别名。仅在简单模式下可见。
聚合聚合函数列表。允许为函数和列自定义值。仅在聚合模式下可见。
分组依据GROUP BY 表达式列表。仅在聚合模式下可见。
排序依据ORDER BY 表达式列表。
限制LIMIT 语句附加到查询末尾。如果设置为 0,则将其排除,建议对于某些时间序列数据集这样做,以便显示完整可视化。
过滤器要在 WHERE 子句中应用的过滤器列表。
Example time series query

此查询类型将使用时间序列面板呈现数据。

追踪

追踪查询类型提供了一个查询构建器,用于轻松搜索和查看追踪。它专为 OpenTelemetry 数据而设计,但可以选择列以从不同的模式呈现追踪。可以在数据源的追踪配置中配置默认值,以允许查询构建器预加载默认数据库/表和列。如果配置了默认值,则默认情况下会折叠列选择。还可以启用 OpenTelemetry 以根据模式版本自动选择列(禁用列选择)。

添加默认过滤器旨在仅显示顶级 span。还包括时间和持续时间时间列的排序依据。这些过滤器与其各自的字段相关联,并将随着列的更改而更新。默认情况下,服务名称过滤器从 SQL 中排除,将其从 IS ANYTHING 选项更改将启用它。

追踪查询类型支持数据链接

字段描述
追踪模式将查询从追踪搜索更改为追踪 ID 查找。
使用 OTel启用 OpenTelemetry 列。将覆盖选定的列,以使用所选 OTel 模式版本定义的列(禁用列选择)。
追踪 ID 列追踪的 ID。
Span ID 列Span ID。
父 Span ID 列父 span ID。对于顶级追踪,这通常为空。
服务名称列服务名称。
操作名称列操作名称。
开始时间列追踪 span 的主要时间列。span 开始的时间。
持续时间时间列span 的持续时间。默认情况下,Grafana 期望这是一个以毫秒为单位的浮点数。转换会通过“持续时间单位”下拉列表自动应用。
持续时间单位用于持续时间的单位。默认为纳秒。选定的单位将转换为 Grafana 要求的以毫秒为单位的浮点数。
标签列Span 标签。如果未使用基于 OTel 的模式,请排除此项,因为它期望特定的 Map 列类型。
服务标签列服务标签。如果未使用基于 OTel 的模式,请排除此项,因为它期望特定的 Map 列类型。
排序依据ORDER BY 表达式列表。
限制LIMIT 语句附加到查询末尾。如果设置为 0,则将其排除,但这不建议用于大型追踪数据集。
过滤器要在 WHERE 子句中应用的过滤器列表。
追踪 ID要过滤的追踪 ID。仅在追踪 ID 模式下使用,以及在打开追踪 ID 数据链接时使用。
Example OTel trace query

此查询类型将使用表格视图呈现追踪搜索模式的数据,并使用追踪面板呈现追踪 ID 模式的数据。

SQL 编辑器

对于查询构建器过于复杂的查询,您可以使用 SQL 编辑器。这使您可以通过编写和运行纯 ClickHouse SQL 来完全控制查询。

可以通过在查询编辑器顶部选择“SQL 编辑器”来打开 SQL 编辑器。

宏函数仍然可以在此模式下使用。

您可以在查询类型之间切换,以获得最适合您查询的可视化效果。即使在仪表板视图中,此切换也有效,尤其是在时间序列数据方面。

Example raw SQL query

Grafana 数据链接可用于链接到新查询。ClickHouse 插件中已启用此功能,用于将追踪链接到日志,反之亦然。它最好与为日志和追踪配置的 OpenTelemetry 配合使用,在数据源的配置

表格中追踪链接的示例

Trace links in table

日志中追踪链接的示例

Trace links in logs

您可以通过在查询中选择名为 traceID 的列来创建数据链接。此名称不区分大小写,并支持在“ID”之前添加下划线。例如:traceIdTraceIdTRACE_IDtracE_iD 都是有效的。

如果在日志追踪查询中启用了 OpenTelemetry,则会自动包含追踪 ID 列。

通过包含追踪 ID 列,“查看追踪”和“查看日志”链接将附加到数据。

链接能力

使用数据链接,您可以使用提供的追踪 ID 打开追踪和日志。

查看追踪”将打开一个包含追踪的拆分面板,“查看日志”将打开一个按追踪 ID 过滤的日志查询。如果从仪表板而不是探索视图单击链接,则链接将在探索视图的新选项卡中打开。

当跨查询类型(从日志到追踪和从追踪到日志)时,需要为日志追踪配置默认值。当打开相同查询类型的链接时,不需要默认值,因为可以简单地复制查询。

从日志查询(左侧面板)查看追踪(右侧面板)的示例

Example of data links linking

宏是向查询添加动态 SQL 的一种简单方法。在将查询发送到 ClickHouse 服务器之前,插件将展开宏并将其替换为完整表达式。

来自 SQL 编辑器和查询构建器的查询都可以使用宏。

使用宏

宏可以包含在查询中的任何位置,如果需要,可以多次包含。

这是一个使用 $__timeFilter 宏的示例

输入

SELECT log_time, log_message
FROM logs
WHERE $__timeFilter(log_time)

最终查询输出

SELECT log_time, log_message
FROM logs
WHERE log_time >= toDateTime(1415792726) AND log_time <= toDateTime(1447328726)

在此示例中,Grafana 仪表板的时间范围应用于 log_time 列。

该插件还支持使用花括号 {} 的表示法。当需要在参数内部进行查询时,请使用此表示法。

宏列表

这是插件中所有可用宏的列表

描述输出示例
$__dateFilter(columnName)使用 Grafana 面板的时间范围作为 Date,替换为提供的列上的时间范围过滤器。columnName >= toDate('2022-10-21') AND columnName <= toDate('2022-10-23')
$__timeFilter(columnName)使用 Grafana 面板的时间范围作为 DateTime,替换为提供的列上的时间范围过滤器。columnName >= toDateTime(1415792726) AND time <= toDateTime(1447328726)
$__timeFilter_ms(columnName)使用 Grafana 面板的时间范围作为 DateTime64,替换为提供的列上的时间范围过滤器。columnName >= fromUnixTimestamp64Milli(1415792726123) AND columnName <= fromUnixTimestamp64Milli(1447328726456)
$__dateTimeFilter(dateColumn, timeColumn)结合 $__dateFilter()$__timeFilter() 的简写,使用单独的 Date 和 DateTime 列。别名 $__dt()$__dateFilter(dateColumn) AND $__timeFilter(timeColumn)
$__fromTime替换为 Grafana 面板范围的开始时间,并强制转换为 DateTimetoDateTime(1415792726)
$__fromTime_ms替换为面板范围的开始时间,并强制转换为 DateTime64fromUnixTimestamp64Milli(1415792726123)
$__toTime替换为 Grafana 面板范围的结束时间,并强制转换为 DateTimetoDateTime(1447328726)
$__toTime_ms替换为面板范围的结束时间,并强制转换为 DateTime64fromUnixTimestamp64Milli(1447328726456)
$__timeInterval(columnName)替换为基于窗口大小(以秒为单位)计算间隔的函数。toStartOfInterval(toDateTime(columnName), INTERVAL 20 second)
$__timeInterval_ms(columnName)替换为基于窗口大小(以毫秒为单位)计算间隔的函数。toStartOfInterval(toDateTime64(columnName, 3), INTERVAL 20 millisecond)
$__interval_s替换为仪表板间隔(以秒为单位)。20
$__conditionalAll(condition, $templateVar)当第二个参数中的模板变量未选择每个值时,替换为第一个参数。当模板变量选择每个值时,替换为 1=1。condition1=1