前言
DataWorks 数据服务提供强大的数据 API 能力,并能与多种业界流行的 BI 报表结合,使用 API 数据源的好处是统一数据接口、统一权限管理、统一数据交换以及数据服务提供强大的各式各样的插件能力 (如缓存插件、流量控制插件、日志脱敏插件、断路器插件、IP访问控制插件、三方鉴权插件等),下文介绍各热门 BI 工具接入 DataWorks 数据服务的操作方式。
DataV
DataV 已很好地支持 DataWorks 数据服务,能透过下拉框的方式选用已上线 API,且还封装了 API 的 AK。
创建 API
进入 DataWorks 数据服务选用数据引擎、撰写 SQL 并上线一个 API。
创建数据源
进入工作台,于左侧选择数据源、新建数据源,于右侧数据源类型选择 DataWorks 数据服务,进行添加。
搭建报表
进去 DataV 开发报表,从左侧组件库拖拽图型后,对此图型选用我们上述添加的 DataWorks 数据服务的数据源及新增加的 API。
API 参数可使用全局变量 (使用冒号: 呼出全局变量),并用选择器改变全局变量来变化 API 参数,可详见此操作视频介绍。
比较需要注意的是设定过滤器的部份,因为 API 出来的格式是固定的,BI 报表上不一样的图表需要的格式却不一定,我们需要用过滤器将格式整理一下。每个组件会附上查看示例的内容,如折线图的格式为 { "x", "y", "colorField"}。
我们新建一个过滤器将 API 返回的 data 字段转成 { "x", "y", "colorField"} 格式。
整理好格式后,DataWorks 数据服务的接口数据就能放到 DataV 上,并能快速地使用上 DataV 提供的能力。
Quick BI
Quick BI 支持透过 HTTP API 创建数据源,可参考此篇文章。
创建 API
至数据服务建立脚本 API,这边以统计 Hologres 慢 Query 的 SQL 为例,建立后,测试、提交并发布。
SELECT usename ,status ,query_id ,datname ,command_tag ,duration ,message ,query_start ,query_date ,query FROM hologres.hg_query_log WHERE query_start >= '${date_start}' AND query_start < '${date_end}' AND duration > 500 LIMIT 200 ;
创建数据源
Quick BI 连接 API 方式支持抽取 (手动或周期性定时更新数据) 或直连 (支持开启短效缓存,缓存时间可以选择5分钟、10分钟、30分钟),但 DataWorks 数据服务 API 也支持缓存插件,可看场景弹性使用。将数据服务 API 贴入以下表单,建立数据源,日期参数可参考此文章。
日期参数变量填入 ${yyyyMMdd} 格式。
创建好数据源后,创建数据集。
从数据集创建数据大屏。
基于数据集使用长条图展示内容。
发布并分享。
Power BI
创建 API
至数据服务建立脚本 API,这边以统计 Hologres 慢 Query 的 SQL 为例,建立后,测试、提交并发布。
SELECT usename ,status ,query_id ,datname ,command_tag ,duration ,message ,query_start ,query_date ,query FROM hologres.hg_query_log WHERE query_start >= '${date_start}' AND query_start < '${date_end}' AND duration > 500 LIMIT 200 ;
创建数据源
打开 Power BI 后选建立仓库。
选择获取数据及新建数据管道。
选择 Http 数据源,首先填入 Base URL,Base URL 填入数据服务 API 发布 URL 的 Domain 部份,如 http://xxxx-cn-shanghai.alicloudapi.com/。
下一步填入 Relative URL,把剩下的 URL 与参数填入,如我们发布的 API URL 为 http://xxxx-cn-shanghai.alicloudapi.com/test_path/321/testholoslow?appcode=xxx&date_start=20240722&date_end=20240724,这边就填入 test_path/321/testholoslow?appcode=xxx&date_start=20240722&date_end=20240724。其他页眉的输入格式为 key: value,如果 Http Header 的需要可在输入框填入。
下一步预览数据,文件格式选择 JSON。
预览数据后,我们选择将数据新建一张表 (dbo.HttpServerFile)。
开始同步数据到新表。
下图为数据同步完成。
可在仓库中查看新表的数据。
上述使用的开始时间与结束时间的值为静态值,如果要使用调度每天更新数据,可以修改使用变量值,变量值的语法可参考。如下图,修改 Relative URL 的内容为 test_path/321/testholoslow?appcode=xxx&date_start=@{utcnow('yyyyMMdd')}&date_end=@{utcnow('yyyyMMdd')},这样就能使用当天做为参数值。
设定数据管道的调度计划后,就能每天定时同步数据到表里。
接著我们在仓库里,针对这张新表建立报告。
选用 data.duration 及 data.query_date 使用柱状图,data.duration 使用计数函数,就能建立每日 Hologres 慢 Query 的数量。
保存后即可分享此报告。
Grafana
创建 API
至数据服务建立脚本 API,这边以统计 Hologres 慢 Query 的 SQL 为例,建立后,测试、提交并发布。
SELECT usename ,status ,query_id ,datname ,command_tag ,duration ,message ,query_start ,query_date ,query FROM hologres.hg_query_log WHERE query_start >= '${date_start}' AND query_start < '${date_end}' AND duration > 500 LIMIT 200 ;
创建数据源
至阿里云 Grafana 控制台新建一个 Grafana 服务 (以下例子使用的是专家版 10U),建立且运行成功后,进入 Grafana 页面。到新建连接的页面,搜索 JSON API 数据源类型并新增此数据源 (最新版是推荐使用 Infinity 类型)。
输入数据服务 API URL,只需输入到网关路径即可,例如 http://domain.com/a/api 的 API 路径,这边我们只需要输入 http://domain.com/a。
在这边输入数据服务 API 的 AppCode 至请求的表头里,如果 AppCode 为 1234,其 Value 就输入 APPCODE 1234。
建立好后,点击建立仪表板。
仪表板的部份,首先设定 Fields (格式参考),如下图,我们取 API 返回的 duration 与 query_start 字段,并设定别名为 Duration 与 Date。
$.data[*].duration $.data[*].query_start
在 Path Tab 设定实际打的 API Path,前缀已经在数据源设定。
在 Params Tab 设定 date_start 与 date_end 的变量参数 (变量格式参考)。
date_start => ${__from:date:YYYYMMDD} date_end => ${__to:date:YYYYMMDD}
在 Experimental 的 Tab 设定 Group By Date 与 Metric Duration。
在 Transform 的部份设定下 Duration 的值类型。
图型选 Bar gauge
设定标题
使用 Count 做为值
设定最大最小值,这个会决定图型热力颜色。
效果如下图,保存后,发布。
即可获得监控 Hologres 慢 Query 的仪表板。
参考
https://help.aliyun.com/datav/datav-6-0/user-guide/add-a-dataworks-data-source
https://help.aliyun.com/zh/quick-bi/user-guide/create-an-api-data-source