DataWorks 数据服务 + BI 可视化分析报表 (搭建战报)

469 阅读3分钟

前言

DataWorks 数据服务提供强大的数据 API 能力,并能与多种业界流行的 BI 报表结合,使用 API 数据源的好处是统一数据接口、统一权限管理、统一数据交换以及数据服务提供强大的各式各样的插件能力 (如缓存插件、流量控制插件、日志脱敏插件、断路器插件、IP访问控制插件、三方鉴权插件等),下文介绍各热门 BI 工具接入 DataWorks 数据服务的操作方式。

DataV

DataV 已很好地支持 DataWorks 数据服务,能透过下拉框的方式选用已上线 API,且还封装了 API 的 AK。

创建 API

进入 DataWorks 数据服务选用数据引擎、撰写 SQL 并上线一个 API。

image.png

创建数据源

进入工作台,于左侧选择数据源、新建数据源,于右侧数据源类型选择 DataWorks 数据服务,进行添加。

image.png

搭建报表

进去 DataV 开发报表,从左侧组件库拖拽图型后,对此图型选用我们上述添加的 DataWorks 数据服务的数据源及新增加的 API。

image.png

image.png

API 参数可使用全局变量 (使用冒号: 呼出全局变量),并用选择器改变全局变量来变化 API 参数,可详见此操作视频介绍。

image.png

比较需要注意的是设定过滤器的部份,因为 API 出来的格式是固定的,BI 报表上不一样的图表需要的格式却不一定,我们需要用过滤器将格式整理一下。每个组件会附上查看示例的内容,如折线图的格式为 { "x", "y", "colorField"}。

image.png

我们新建一个过滤器将 API 返回的 data 字段转成 { "x", "y", "colorField"} 格式。

image.png

整理好格式后,DataWorks 数据服务的接口数据就能放到 DataV 上,并能快速地使用上 DataV 提供的能力。

image.png

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
;

创建数据源

image.png

Quick BI 连接 API 方式支持抽取 (手动或周期性定时更新数据) 或直连 (支持开启短效缓存,缓存时间可以选择5分钟、10分钟、30分钟),但 DataWorks 数据服务 API 也支持缓存插件,可看场景弹性使用。将数据服务 API 贴入以下表单,建立数据源,日期参数可参考此文章

image.png

日期参数变量填入 ${yyyyMMdd} 格式。

image.png

image.png

image.png

image.png

创建好数据源后,创建数据集。

image.png

image.png

从数据集创建数据大屏。

image.png

基于数据集使用长条图展示内容。

image.png

发布并分享。

image.png

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 后选建立仓库。

image.png

选择获取数据及新建数据管道。

image.png

选择 Http 数据源,首先填入 Base URL,Base URL 填入数据服务 API 发布 URL 的 Domain 部份,如 xxxx-cn-shanghai.alicloudapi.com/。

image.png

下一步填入 Relative URL,把剩下的 URL 与参数填入,如我们发布的 API URL 为 xxxx-cn-shanghai.alicloudapi.com/test_path/3… ,这边就填入 test_path/321/testholoslow?appcode=xxx&date_start=20240722&date_end=20240724。其他页眉的输入格式为 key: value,如果 Http Header 的需要可在输入框填入。

image.png

下一步预览数据,文件格式选择 JSON。

image.png

预览数据后,我们选择将数据新建一张表 (dbo.HttpServerFile)。

image.png

image.png

开始同步数据到新表。

image.png

下图为数据同步完成。

image.png

可在仓库中查看新表的数据。

image.png

上述使用的开始时间与结束时间的值为静态值,如果要使用调度每天更新数据,可以修改使用变量值,变量值的语法可参考。如下图,修改 Relative URL 的内容为 test_path/321/testholoslow?appcode=xxx&date_start=@{utcnow('yyyyMMdd')}&date_end=@{utcnow('yyyyMMdd')},这样就能使用当天做为参数值。

image.png

设定数据管道的调度计划后,就能每天定时同步数据到表里。

image.png

接著我们在仓库里,针对这张新表建立报告。

image.png

选用 data.duration 及 data.query_date 使用柱状图,data.duration 使用计数函数,就能建立每日 Hologres 慢 Query 的数量。

image.png

保存后即可分享此报告。

image.png

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 类型)。

image.png

image.png

输入数据服务 API URL,只需输入到网关路径即可,例如 domain.com/a/api 的 API 路径,这边我们只需要输入 domain.com/a。

image.png

在这边输入数据服务 API 的 AppCode 至请求的表头里,如果 AppCode 为 1234,其 Value 就输入 APPCODE 1234。

image.png

建立好后,点击建立仪表板。

image.png

仪表板的部份,首先设定 Fields (格式参考),如下图,我们取 API 返回的 duration 与 query_start 字段,并设定别名为 Duration 与 Date。

$.data[*].duration
$.data[*].query_start

image.png

在 Path Tab 设定实际打的 API Path,前缀已经在数据源设定。

image.png

在 Params Tab 设定 date_start 与 date_end 的变量参数 (变量格式参考)。

date_start => ${__from:date:YYYYMMDD}
date_end => ${__to:date:YYYYMMDD}

image.png

在 Experimental 的 Tab 设定 Group By Date 与 Metric Duration。

image.png

在 Transform 的部份设定下 Duration 的值类型。

image.png

图型选 Bar gauge

image.png

设定标题

image.png

使用 Count 做为值

image.png

设定最大最小值,这个会决定图型热力颜色。

image.png

效果如下图,保存后,发布。

image.png

即可获得监控 Hologres 慢 Query 的仪表板。

image.png

参考

help.aliyun.com/datav/datav… help.aliyun.com/zh/quick-bi… grafana.com/blog/2023/0…