过滤整数范围
Filtering on integer range
我们是 运行 一项 Java 服务,使用 Micrometer 将指标记录到 InfluxDB 并使用 Grafana 对其进行可视化。 Micrometer 仅支持字符串 tag/values,但我已将整数存储为字符串值 query_span
并希望在 Grafana 中对其进行过滤。
这就是我在 Grafana 中点击的内容:
SELECT sum("value") FROM "db_read"
WHERE ("short_name" = 'app' AND "environment" =~ /^$site$/
AND "query_span" > '1' AND "query_span" <= '7')
AND $timeFilter
GROUP BY time(5m) fill(null)
query_span
部分不产生任何数据。删除单引号也不起作用。当我将间隔的下部设置为 "query_span" >= '2'
时,我得到了一些点击。这让我相信某种字符串到字符串的比较正在进行(并且 'greater or equal' returns 的 'equal' 部分在 =="2"
时为真)。我看到 Influx 支持 casting selected fields,但我不明白如何在 WHERE 子句中进行转换(天真尝试失败)。
注意: 这不是 this 的克隆,不同的 Grafana/InfluxDB 问题。 (哦,我是否怀念那些免责声明是多余的美好时光!:)
编辑: 正则表达式过滤有效但并不理想。
当然,正则表达式可以处理字符串,但数学比较 >
、<
、<=
、>=
不会 - 你需要 float/int 类型。如果你在字符串上使用 <
,<
,那么你将得到字典顺序。参见:https://docs.influxdata.com/influxdb/v2.0/reference/flux/language/operators/#string-operators
我会说正则表达式是您用例的最佳选择(如果您的基数较低)。您需要明确定义允许的范围,例如4-9:
"query_span" =~ /^[4|5|6|7|8|9]$/
当然,带有浮点数的适当 InfluxDB 模式将是最佳选择。
我们是 运行 一项 Java 服务,使用 Micrometer 将指标记录到 InfluxDB 并使用 Grafana 对其进行可视化。 Micrometer 仅支持字符串 tag/values,但我已将整数存储为字符串值 query_span
并希望在 Grafana 中对其进行过滤。
这就是我在 Grafana 中点击的内容:
SELECT sum("value") FROM "db_read"
WHERE ("short_name" = 'app' AND "environment" =~ /^$site$/
AND "query_span" > '1' AND "query_span" <= '7')
AND $timeFilter
GROUP BY time(5m) fill(null)
query_span
部分不产生任何数据。删除单引号也不起作用。当我将间隔的下部设置为 "query_span" >= '2'
时,我得到了一些点击。这让我相信某种字符串到字符串的比较正在进行(并且 'greater or equal' returns 的 'equal' 部分在 =="2"
时为真)。我看到 Influx 支持 casting selected fields,但我不明白如何在 WHERE 子句中进行转换(天真尝试失败)。
注意: 这不是 this 的克隆,不同的 Grafana/InfluxDB 问题。 (哦,我是否怀念那些免责声明是多余的美好时光!:)
编辑: 正则表达式过滤有效但并不理想。
当然,正则表达式可以处理字符串,但数学比较 >
、<
、<=
、>=
不会 - 你需要 float/int 类型。如果你在字符串上使用 <
,<
,那么你将得到字典顺序。参见:https://docs.influxdata.com/influxdb/v2.0/reference/flux/language/operators/#string-operators
我会说正则表达式是您用例的最佳选择(如果您的基数较低)。您需要明确定义允许的范围,例如4-9:
"query_span" =~ /^[4|5|6|7|8|9]$/
当然,带有浮点数的适当 InfluxDB 模式将是最佳选择。