Microsoft SQL Server 模板变量
您可以使用变量,而无需在指标查询中硬编码服务器、应用程序和传感器名称等详细信息。Grafana 在仪表盘顶部的下拉选择框中列出这些变量,帮助您更改仪表盘中显示的数据。Grafana 将这些变量称为模板变量。
有关模板化和模板变量的介绍,请参阅模板化和添加和管理变量文档。
查询变量
如果您添加类型为 Query 的模板变量,您可以编写 MS SQL 查询,返回诸如测量名称、键名称或键值等内容,这些内容将显示为下拉选择框。
例如,如果您在模板变量的查询设置中指定如下查询,则可以拥有一个包含表中 hostname 列所有值的变量。
SELECT hostname FROM host一个查询可以返回多列,Grafana 会自动根据它们创建一个列表。例如,以下查询将返回一个包含 hostname 和 hostname2 值的列表。
SELECT [host].[hostname], [other_host].[hostname2] FROM host JOIN other_host ON [host].[city] = [other_host].[city]另一种选择是创建键/值变量的查询。查询应返回名为 __text 和 __value 的两列。__text 列的值应唯一(如果不唯一,则使用第一个值)。下拉菜单中的选项将包含文本和值,允许您使用友好名称作为文本,并使用 ID 作为值。以下是一个以 hostname 作为文本、以 id 作为值的查询示例:
SELECT hostname __text, id __value FROM host您还可以创建嵌套变量。例如,如果您有另一个名为 region 的变量。那么您可以使用如下查询让 hosts 变量只显示当前选定区域的主机(如果 region 是一个多值变量,则使用 IN 比较运算符而不是 = 来匹配多个值):
SELECT hostname FROM host WHERE region IN ($region)在查询中使用变量
模板变量的值仅在模板变量为多值时才带引号。
如果变量是多值变量,则使用 IN 比较运算符而不是 = 来匹配多个值。
有两种语法:
$<varname> 示例:使用名为 hostname 的模板变量
SELECT
atimestamp time,
aint value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in($hostname)
ORDER BY atimestamp[[varname]] 示例:使用名为 hostname 的模板变量
SELECT
atimestamp as time,
aint as value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp禁用多值变量的引用
Grafana 会自动为多值变量创建一个带引号的、逗号分隔的字符串。例如:如果选择了 server01 和 server02,则会格式化为:'server01', 'server02'。要禁用引号,请对变量使用 csv 格式选项:
${servers:csv}
在变量文档中阅读有关变量格式选项的更多信息。



