Grafana:如何使用从另一个 table 检索到的值映射覆盖一个 table 中的值
Grafana: how to overwrite values in one table with value mapping retrieved from another table
我有两个 table,如下所示。 1st table 包含所有状态的描述。如何根据 id
用左侧 table 的 name
覆盖右侧 table 的列 status_id
?
选项 1:固定映射列表
当status是固定的,数值比较低的时候,我会推荐使用value mapping。
确保不要将其应用于整个 table,而是将 override 用于 table 中的字段 status_id
。
选项 2:映射变量列表
如果状态发生变化或添加了新状态,我会建议如下解决方法(因为我不使用 PostgreSQL,我显示 SQL 来自 [=35= 的语句] BigQuery 标准 SQL,请根据您的用例进行调整):
创建 query variable:使用映射(状态描述)查询 table,并使用连接创建 case 语句的 WHEN ... THEN ...
部分。示例:
SELECT CONCAT('WHEN "', id, '" THEN "', name, '" ')
FROM ID_TABLE
这将为您提供如下行:WHEN "1" THEN "OK"
。然后你必须 concat/aggregate 这些行到一个字符串。
然后在最终 table 的查询中使用变量,如本例所示:
SELECT
CASE status_id
${QUERY_VARIABLE}
ELSE "UNKNOWN STATUS"
END AS status_id,
...
FROM YOUR_DATA_TABLE
我有两个 table,如下所示。 1st table 包含所有状态的描述。如何根据 id
用左侧 table 的 name
覆盖右侧 table 的列 status_id
?
选项 1:固定映射列表
当status是固定的,数值比较低的时候,我会推荐使用value mapping。
确保不要将其应用于整个 table,而是将 override 用于 table 中的字段 status_id
。
选项 2:映射变量列表
如果状态发生变化或添加了新状态,我会建议如下解决方法(因为我不使用 PostgreSQL,我显示 SQL 来自 [=35= 的语句] BigQuery 标准 SQL,请根据您的用例进行调整):
创建 query variable:使用映射(状态描述)查询 table,并使用连接创建 case 语句的 WHEN ... THEN ...
部分。示例:
SELECT CONCAT('WHEN "', id, '" THEN "', name, '" ')
FROM ID_TABLE
这将为您提供如下行:WHEN "1" THEN "OK"
。然后你必须 concat/aggregate 这些行到一个字符串。
然后在最终 table 的查询中使用变量,如本例所示:
SELECT
CASE status_id
${QUERY_VARIABLE}
ELSE "UNKNOWN STATUS"
END AS status_id,
...
FROM YOUR_DATA_TABLE