【模板应用】禅道业务数据分析大屏


Administrator
飞致云 发布于 2022-07-28 / 850 阅读 / 0 评论 /
1 效果预览2 产品信息禅道是第一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理

1 效果预览

image-1658998481812

2 产品信息

禅道是第一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

3 需求概述

每个企业对于禅道数据的可视化需求都是很强烈的,需要查看每个项目或者每个产品的进度等,然后再通过数据传递的信息来决定策略,控制成本实现公司目标。

4 制作过程

4.1 添加数据源

进入 禅道的数据库工具中查看数据库连接信息。
image-1658998501525

在 DataEase 中添加数据源,然后选择校验查看下是否能连接成功。
校验不成功的话请优先查看账号密码是否正确,以及 DataEase 服务器是否能ping 通禅道服务器和 telnet 禅道数据库的端口号。
image-1658998508938

4.2 添加数据集

本次仪表板制作使用了15个 SQL 数据集

4.2.1 用户数

为了统计在禅道中用户的总数。

#SQL 如下:
select count(*) as 用户 from zt_user;

4.2.2 操作总数

为了统计在禅道中操作的总数。

#SQL 如下:
select count(*) from zt_action

4.2.3 消耗工时

为了统计在禅道中消耗工时的总数。

#SQL 如下:
select sum(consumed) from zt_task

4.2.4 产品数

为了统计在禅道中产品的总数。

#SQL 如下:
select count(*) from zt_product

4.2.5 项目数

为了统计在禅道中项目的总数。

#SQL 如下:
select count(*) from zt_project

4.2.6 任务数

为了统计在禅道中任务的总数。

#SQL 如下:
select count(*) from zt_task

4.2.7 需求数

为了统计在禅道中需求的总数。

#SQL 如下:
select count(*) from zt_story

4.2.8 Bug数

为了统计在禅道中Bug的总数。

#SQL 如下:
select count(*) from zt_bug

4.2.9 用例数

为了统计在禅道中用例的总数。

#SQL 如下:
select count(*) from zt_case

4.2.10 近30天Bug状态分布

为了统计在禅道中近30天Bug的分布。

#SQL 如下:
SELECT CASE STATUS
		WHEN 'active' THEN '已激活'
		WHEN 'resolved' THEN '已解决'
		WHEN 'closed' THEN '已关闭'
		ELSE '其他'
	END AS "类别", count(*) AS "数量"
FROM zt_bug
WHERE datediff(NOW(), openedDate) <= 30
GROUP BY STATUS

4.2.11 近14天Bug状态

为了统计在禅道中近14天Bug的状态。

#SQL 如下:
SELECT DISTINCT DATE_FORMAT(openedDate, '%Y-%m-%d') AS "时间"
	, (
		SELECT count(*)
		FROM zt_bug z1
		WHERE status = 'active'
			AND DATE_FORMAT(z1.openedDate, '%Y-%m-%d') = DATE_FORMAT(z2.openedDate, '%Y-%m-%d')
	) AS "已激活"
	, (
		SELECT count(*)
		FROM zt_bug z1
		WHERE status = 'resolved'
			AND DATE_FORMAT(z1.openedDate, '%Y-%m-%d') = DATE_FORMAT(z2.openedDate, '%Y-%m-%d')
	) AS "已解决"
	, (
		SELECT count(*)
		FROM zt_bug z1
		WHERE status = 'closed'
			AND DATE_FORMAT(z1.openedDate, '%Y-%m-%d') = DATE_FORMAT(z2.openedDate, '%Y-%m-%d')
	) AS "已关闭"
FROM zt_bug z2
WHERE datediff(NOW(), z2.openedDate) <= 14
ORDER BY z2.openedDate DESC

4.2.12 产品数据

为了展示在禅道中产品信息数据,例如计划数,创建需求数,完成需求数等。

#SQL 如下:
SELECT DISTINCT zp.NAME AS "产品名称"
	, (
		SELECT count(*)
		FROM zt_productplan zpp
		WHERE zp.id = zpp.product
	) AS "计划数"
	, (
		SELECT count(*)
		FROM zt_story zs
		WHERE zp.id = zs.product
	) AS "创建需求数"
	, (
		SELECT count(*)
		FROM zt_story zs
		WHERE zp.id = zs.product
			AND zs.`status` = 'closed'
	) AS "完成需求数"
FROM zt_product zp;

4.2.13 项目数据

为了展示在禅道中项目信息数据,例如完成需求数,完成任务数,解决Bug数等。

#SQL 如下:
SELECT DISTINCT zp.NAME AS "项目名称"
	, (
		SELECT count(*)
		FROM zt_story zs
			LEFT JOIN zt_projectstory zpjs ON zpjs.story = zs.id
		WHERE zs.STATUS = 'closed'
			AND zpjs.project = zp.id
	) AS "完成需求数"
	, (
		SELECT count(*)
		FROM zt_task zt
		WHERE zt.project = zp.id
			AND zt.`status` = 'done'
	) AS "完成任务数"
	, (
		SELECT count(*)
		FROM zt_bug zb
		WHERE zb.project = zp.id
			AND zb.`status` = 'resolved'
	) AS "解决Bug数"
FROM zt_project zp;

4.2.14 近30天需求状态分布

为了统计在禅道中近30天需求的分布。

#SQL 如下:
SELECT CASE stage
		WHEN 'wait' THEN '等待中'
		WHEN 'planned' THEN '已计划'
		WHEN 'projected' THEN '已立项'
		WHEN 'developing' THEN '开发中'
		WHEN 'testing' THEN '测试中'
		WHEN 'verified' THEN '已验收'
		WHEN 'closed' THEN '已关闭'
		ELSE '其他'
	END AS "类别", count(*) AS "数量"
FROM zt_story
WHERE datediff(NOW(), openedDate) <= 30
GROUP BY stage

4.2.15 近14天需求分布

为了统计在禅道中近14天需求的状态。

#SQL 如下:
SELECT DISTINCT DATE_FORMAT(openedDate, '%Y-%m-%d') AS "时间"
	, (
		SELECT count(*)
		FROM zt_story z1
		WHERE stage = 'planned'
			AND DATE_FORMAT(z1.openedDate, '%Y-%m-%d') = DATE_FORMAT(z2.openedDate, '%Y-%m-%d')
	) AS "已计划"
	, (
		SELECT count(*)
		FROM zt_story z1
		WHERE stage = 'wait'
			AND DATE_FORMAT(z1.openedDate, '%Y-%m-%d') = DATE_FORMAT(z2.openedDate, '%Y-%m-%d')
	) AS "等待中"
	, (
		SELECT count(*)
		FROM zt_story z1
		WHERE stage = 'developing'
			AND DATE_FORMAT(z1.openedDate, '%Y-%m-%d') = DATE_FORMAT(z2.openedDate, '%Y-%m-%d')
	) AS "研发中"
	, (
		SELECT count(*)
		FROM zt_story z1
		WHERE stage = 'testing'
			AND DATE_FORMAT(z1.openedDate, '%Y-%m-%d') = DATE_FORMAT(z2.openedDate, '%Y-%m-%d')
	) AS "测试中"
	, (
		SELECT count(*)
		FROM zt_story z1
		WHERE stage = 'verified'
			AND DATE_FORMAT(z1.openedDate, '%Y-%m-%d') = DATE_FORMAT(z2.openedDate, '%Y-%m-%d')
	) AS "已验收"
FROM zt_story z2
WHERE datediff(NOW(), z2.openedDate) <= 14
ORDER BY z2.openedDate DESC

4.3 制作仪表板

仪表板的制作基于第二步中创建的数据集。大家可以导入模板后替换即可。
关于如何导入模板请参考:https://dataease.io/docs/user_manual/template_market/#3



是否对你有帮助?