菜单
文档breadcrumb arrow 插件breadcrumb arrow Oracle 数据源breadcrumb arrow Oracle 查询编辑器
Enterprise Grafana Cloud

Oracle 查询编辑器

Grafana 为 Oracle 提供了一个查询编辑器,您可以在其中创建和执行 SQL 查询。有关 Grafana 查询编辑器的通用信息,请参阅查询编辑器。有关在 Grafana 中查询数据源的通用信息,请参阅查询和转换数据

Oracle 查询编辑器位于Explore 页面。您也可以从仪表盘面板访问 Oracle 查询编辑器。单击面板右上角的省略号,然后选择 编辑

查询编辑器选项

直接在查询编辑器窗口中创建 Oracle 查询。**Format as** 选项允许您查询 Oracle 并将结果作为 时间序列 数据或 表格 返回。单击 **显示帮助** 查看示例查询、宏列表以及其他有用的信息,帮助您编写 SQL 查询。

按时间序列查询

将数据格式化为时间序列时,查询必须包含一个 `time` 列,该列包含 SQL `datetime` 值或表示 UNIX epoch 时间(以秒为单位)的数值数据类型。Grafana 将没有显式时区的 `date` 和 `timestamp` 列解释为 UTC 时间。除 `time` 和 `metric` 以外的任何列都被视为 `value` 列。您可以返回一个名为 `metric` 的列,该列用作 `value` 列的指标名称。

包含 `metric` 列的示例查询

sql
SELECT
  $__timeGroup(time_date_time, '5m') AS time,
  MIN(value_double),
  'MIN' as metric
FROM test_data
WHERE $__timeFilter(time_date_time)
GROUP BY $__timeGroup(time_date_time, '5m')
ORDER BY time

按表格查询

将 **Format as** 查询选项设置为 `Table` 允许您创建任何类型的 SQL 查询。表格面板会自动显示查询返回的所有列和行的结果。您可以使用 SQL `AS` 命令更改或自定义表格面板列的名称。

您可以向查询中添加宏,以简化语法并启用动态元素,例如日期范围过滤器。

宏示例描述
$__time(dateColumn)将值替换为转换为 UNIX 时间戳的表达式,并将列重命名为 `time_sec`。示例:`UNIX_TIMESTAMP(dateColumn) AS time_sec`。
$__timeEpoch(dateColumn)将值替换为转换为 UNIX Epoch 时间戳的表达式,并将列重命名为 `time_sec`。示例:`UNIX_TIMESTAMP(dateColumn) AS time_sec`。
$__timeFilter(dateColumn)使用指定的列名替换时间范围过滤器的值。示例:`dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)`
$__timeFrom()将值替换为当前活动时间选择的开始时间。示例:`FROM_UNIXTIME(1494410783)`
$__timeTo()将值替换为当前活动时间选择的结束时间。示例:`FROM_UNIXTIME(1494410983)`
$__timeGroup(dateColumn,'5m')将值替换为适合在 `GROUP BY` 子句中使用的表达式。
$__timeGroup(dateColumn,‘5m’[, fillvalue])将值替换为可在 `GROUP BY` 子句中使用的表达式。提供 NULL 或浮点数的 fillValue 将自动使用该值填充时间范围内的空序列。示例:`$__timeGroup{createdAt, ‘1m’, 0}`。
$__timeGroup(dateColumn,'5m', 0)与 `$__timeGroup(dateColumn,'5m')` 宏相同,但包含一个填充参数,以确保 Grafana 添加系列中的缺失点,默认值使用 0。**这仅适用于时间序列查询。**
$__timeGroup(dateColumn,'5m', NULL)与 `$__timeGroup(dateColumn,'5m', 0)` 相同,但使用 `NULL` 作为缺失点的值。**这仅适用于时间序列查询。**
$__timeGroup(dateColumn,'5m', previous)与 `$__timeGroup(dateColumn,'5m', previous)` 宏相同,但使用系列中的前一个值作为填充值。如果不存在前一个值,则使用 `NULL`。**这仅适用于时间序列查询。**
$__unixEpochFilter(dateColumn)使用指定的列名,并使用表示为 UNIX 时间戳的时间来替换时间范围过滤器的值。示例:`dateColumn > 1494410783 AND dateColumn < 1494497183`
$__unixEpochFrom()将值替换为当前活动时间选择的开始时间,格式为 UNIX 时间戳。示例:`1494410783`
$__unixEpochTo()将值替换为当前活动时间选择的结束时间,格式为 UNIX 时间戳。示例:`1494497183`

Oracle 数据源支持使用大括号 `{}` 的表示法。当参数内部需要查询时,请使用此表示法。

注意

每个查询只使用一种表示法类型。如果查询需要大括号,则查询中的所有宏都需要使用大括号。

示例

sql
$__timeGroup{dateColumn,'5m'}
$__timeGroup{SYS_DATE_UTC(SDATE),'5m'}
$__timeGroup{FROM_TZ(CAST(SDATE as timestamp), 'UTC'), '1h'}