我想在Grafana中创建一个这样的表格面板:
+------------+--------------+------------------+
| Name | Access level | Max Access level |
+------------+--------------+------------------+
| Tony Stark | 5 | 5 |
+------------+--------------+------------------+
这可以通过SQL查询来完成。我有MySQL作为数据源。
我有名为机器和人员的数据库。在db机器内部,我有用于单个机器的表。
该表具有id和json对象作为列。
machines.machine_1
+----+---------------------------------------------+
| id | payload (JSON) |
+----+---------------------------------------------+
| 1 | { |
| | "rack": { |
| | "0": { |
| | "internal": "20.42706840974966" |
| | } |
| | }, |
| | "personel": { |
| | "id": "0xb7c9bd9bc1f7d852", |
| | "access_level": "5", |
| | "access_level_max": "5" |
| | }, |
| | "information": { |
| | "ID": "machine_1" |
| | } |
| | } |
+----+---------------------------------------------+
然后,我在db personel中有一个personel表。
员工。
+----+--------------------+------------+------+-------+----------+----------+-------------+
| id | hex | name | post | shift | superior | location | designation |
+----+--------------------+------------+------+-------+----------+----------+-------------+
| 1 | 0xb7c9bd9bc1f7d852 | Tony Stark | CEO | NULL | NULL | NULL | NULL |
+----+--------------------+------------+------+-------+----------+----------+-------------+
现在,我需要根据machine_1中json对象的十六进制键从人员表中获取数据。
我设法做到这一点:
SELECT
name as "Name"
FROM personel.personel
WHERE exists(
SELECT
json_extract(payload, '$.personel.id')
FROM machines.machine_1 as Table_A
ORDER BY arrived desc
LIMIT 1
)
我不知道如何创建查询,该查询将导致3列,其中的名称是personel.personel
从json对象中的十六进制值读取的,machines.machine_1
而其余的值则直接从中的json对象读取machines.machine_1
。
+------------+--------------+------------------+
| Name | Access level | Max Access level |
+------------+--------------+------------------+
| Tony Stark | 5 | 5 |
+------------+--------------+------------------+
如果以这种不正确的方式来处理这种事情,请告诉我。我想我可以重做解决方案,但由于其他原因,我想坚持使用JSON对象。
谢谢您的任何帮助。
最好的祝福。
以下查询可以解决您的问题:
select
p.name as 'Name',
JSON_UNQUOTE(payload->"$.personel.access_level") as 'Access level',
JSON_UNQUOTE(payload->"$.personel.access_level_max") as 'Max Access level'
from machines
left join personel p on p.hex = JSON_UNQUOTE(payload->"$.personel.id");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句