查询无法检索数据,出现“无法获取变量”、“选择查询处理:第 1:34 行不匹配字符 'd' 期望 '$'”

问题描述 投票:0回答:1

我有一个问题。我想使用 Grafana 可视化 Cassandra 中的数据。我建立了连接并创建了一个仪表板。我在此仪表板中创建了 2 个变量。这些是设备和实体。我为两者都编写了查询。

我希望实体查询根据所选设备数据运行并接收适当的实体数据。设备正确到达,但我的实体数据不断模板化[实体]。我得到:

Error updating options: Unexpected end of JSON input

下面是我为变量编写的查询:

设备:

SELECT table_name FROM system_schema.tables WHERE keyspace_name = 'orion_wins';

实体:

SELECT entity_id FROM orion_wins.$devices WHERE entity_type='iot';

grafana日志错误:

level=error msg="Failed to get variables" Message="repo.Select: select query processing: line 1:34 mismatched character 'd' expecting '$'"

当我在 Cassandra 终端中运行查询时,我得到了正确的结果。我的查询没有任何问题。无论遇到什么问题,如果您能帮助我,我将非常高兴。

cassandra grafana monitoring grafana-variable grafana-templating
1个回答
0
投票

您所描述的症状表明变量

$devices
位于:

SELECT entity_id FROM orion_wins.$devices WHERE entity_type='iot'

不会扩展为实际的表名称,因此 CQL 解析器将其标记为无效语句。

在 CQL 中,字符串文字用单引号 (

'
) 括起来,就像查询中的
entity_type='iot'
一样。但是,如果字符串包含像
'
这样的
Alice's wonderland
(例如),则美元符号
$$
可以用作转义字符,例如
my_text = $$Alice's wonderland$$

在您的应用程序中,表名称似乎未替换为

$devices
,因此查询实际上包含
orion_wins.$devices
。错误信息:

... mismatched character 'd' expecting '$'

被返回,因为 CQL 解析器需要两个美元符号

$$
而不是
$d

无论如何,您都需要检查代码以确定扩展失败的原因。

顺便说一句,您的应用程序似乎正在执行与 Aleks VolochnevCassandra Datasource for Grafana 项目相同的操作。它允许您轻松集成 Grafana,以便您可以可视化存储在 Cassandra 中的时间序列数据。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.