我有一个问题。我想使用 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 终端中运行查询时,我得到了正确的结果。我的查询没有任何问题。无论遇到什么问题,如果您能帮助我,我将非常高兴。
您所描述的症状表明变量
$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 Volochnev 的 Cassandra Datasource for Grafana 项目相同的操作。它允许您轻松集成 Grafana,以便您可以可视化存储在 Cassandra 中的时间序列数据。干杯!