PowerBI
功能概述
本篇说明如何在 Power BI 中使用 Power Query(M 语言)调用 Dashboard Data API,获取 HMI 标签历史数据并创建折线图。
前置需求
- 已安装 Power BI Desktop
- 已获取有效的 API 密钥(在左侧菜单〔Dashboard〕→〔仪表板 API 密钥〕创建),详见 Dashboard Data API
操作步骤
设置 API 查询
依次点击 Get data -> Blank Query,打开一个空白的 Query 进行编辑。

点击 Advanced Editor。

输入以下示例 Query,并将 hw_key、name 等参数替换为实际的标签信息:
m
let
// API 地址
apiUrl = "https://www.weincloud.net/dashboard/api/v2/open_api/history",
// 获取当前 UTC 时间
endDate = DateTimeZone.UtcNow(),
// 当前时间往前推 3 小时
startDate = endDate - #duration(0, 3, 0, 0),
// 转换为 ISO8601 格式
formattedStartDate = DateTimeZone.ToText(startDate, "yyyy-MM-ddTHH:mm:ssZ"),
formattedEndDate = DateTimeZone.ToText(endDate, "yyyy-MM-ddTHH:mm:ssZ"),
// 组成 JSON 请求内容
requestBody = Json.FromValue([
start = formattedStartDate,
end = formattedEndDate,
tags = {
[
hw_key = "请在此输入您的 HWKEY !!!",
name = "请在此输入您的 Tag 名称 !!!"
]
}
]),
// HTTP 请求头
requestHeaders = [
#"Content-Type" = "application/json",
#"X-API-KEY" = "请在此输入您的 API KEY !!!"
],
// 发送 POST 请求
Source = Web.Contents(
apiUrl,
[
Headers = requestHeaders,
Content = requestBody,
Timeout = #duration(0, 0, 5, 0)
]
),
// 解析 JSON 响应
raw = Json.Document(Source),
dList = raw[d],
// 展开数组
dTable = Table.FromList(dList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
dExpanded = Table.ExpandRecordColumn(dTable, "Column1", {"hw_key", "name", "values"}),
valuesExpanded = Table.ExpandListColumn(dExpanded, "values"),
valuesFlattened = Table.ExpandRecordColumn(valuesExpanded, "values", {"value", "hmi_time"}),
// 将 value 转换为数字类型
#"Changed Type" = Table.TransformColumnTypes(valuesFlattened, {{"value", type number}}),
// 将 hmi_time 转换为日期时间类型
withDateTime = Table.AddColumn(
#"Changed Type",
"hmi_datetime",
each DateTime.From(#datetime(1970, 1, 1, 0, 0, 0) + #duration(0, 0, 0, [hmi_time] / 1000)),
type datetime
)
in
withDateTime编辑认证信息(Credentials)。

根据所使用的服务器区域选择对应的 API 地址:
- 全球服务区:
https://www.weincloud.net/dashboard/api/v2/open_api/history - 中国服务区:
https://www.weincloud.net.cn/dashboard/api/v2/open_api/history

关闭并保存。

创建图表
选择 LineChart。

将 hmi_datetime 放入 X 轴。

选择直接使用原始数据作为依据,不套用汇总方式。

将 value 放入 Y 轴,并选择所需的汇总方式。

完成后即可显示标签历史数据的趋势图。
