You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过T-SQL与OPENROWSET提取Parquet列名作为Grafana变量值

解决Grafana变量下拉显示Parquet列名的问题

一、先获取设备列表变量

你的Parquet路径是device/message/yyyy/mm/dd/xyz.parquet,直接用Synapse的filepath函数提取第一层设备名,去重后作为Grafana的设备选项:

SELECT DISTINCT
    REVERSE(PARSENAME(REVERSE(SUBSTRING(filepath, 1, CHARINDEX('/', filepath, CHARINDEX('/', filepath) + 1) - 1)), 1)) AS device_name
FROM
    OPENROWSET(
        BULK 'https://<你的存储账户>.dfs.core.windows.net/<容器名>/*/*/*/*/*/*.parquet',
        FORMAT = 'PARQUET'
    ) AS [result]

通过字符串截取和反转精准提取路径中的设备名,DISTINCT避免出现重复选项。

二、获取选中设备对应的消息类型变量

基于Grafana中已配置的设备变量(假设变量名为${device}),提取该设备下的消息类型:

SELECT DISTINCT
    REVERSE(PARSENAME(REVERSE(SUBSTRING(filepath, CHARINDEX('${device}/', filepath) + LEN('${device}/'), CHARINDEX('/', filepath, CHARINDEX('${device}/', filepath) + LEN('${device}/')) - (CHARINDEX('${device}/', filepath) + LEN('${device}/')))), 1)) AS message_type
FROM
    OPENROWSET(
        BULK 'https://<你的存储账户>.dfs.core.windows.net/<容器名>/${device}/*/*/*/*/*.parquet',
        FORMAT = 'PARQUET'
    ) AS [result]

同样通过路径截取锁定设备下的第二层消息文件夹,作为消息变量的选项。

三、核心:获取对应设备+消息的列名(解决显示数据而非列名的问题)

之前的查询返回了第一行数据,现在用Synapse的系统DMV sys.dm_exec_describe_first_result_set提取元数据,只返回列名:

SELECT name AS column_name
FROM sys.dm_exec_describe_first_result_set(
    N'
    SELECT *
    FROM OPENROWSET(
        BULK ''https://<你的存储账户>.dfs.core.windows.net/<容器名>/${device}/${message}/*/*/*/*.parquet'',
        FORMAT = ''PARQUET''
    ) AS [result]
    ',
    NULL,
    0
)
WHERE is_hidden = 0

这个DMV会解析传入的OPENROWSET查询,返回结果集的列名、数据类型等元信息,过滤掉隐藏列后,就能得到纯列名列表,正好适配Grafana的列变量需求。

四、Grafana变量配置要点

  • 三个变量的查询类型都选SQL,数据源选择你配置的Synapse无服务器SQL(基于Microsoft SQL Server驱动的数据源)。
  • 列变量的值字段和显示字段都设为column_name,确保下拉框显示列名而非数据值。
  • 设置变量依赖关系:消息变量依赖设备变量,列变量依赖设备和消息变量,开启“Refresh on change”,实现选中设备后自动更新消息选项,选中消息后自动更新列选项。

五、验证步骤

先把列名查询拿到Synapse Studio中执行,替换成实际的设备和消息路径,确认返回结果是纯列名列表(无数据行),再放到Grafana变量中测试即可。

内容的提问来源于stack exchange,提问作者mfcss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 22:35:15