知识库

Loading

0 评论 / 0 点赞 / 74 阅读  最佳实践  模板应用 最后更新: 2022-09-20 作者: 飞致云 总字数: 4207

1 效果预览

image-1662090068119

2 产品信息

JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。

JIRA中配置灵活、功能全面、部署简单、扩展丰富,其超过150项特性得到了全球115个国家超过19,000家客户的认可。

3 需求概述

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

4 制作过程

4.1 添加数据源

  1. 在进行安装 Jira 的时候可配置外部 MySQL 数据库。
    image-1662090101524

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

4.2 添加数据集

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

4.2.1 用户数

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

#SQL 如下:

select count(*) as '用户数' from app_user

4.2.2 项目总数

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

#SQL 如下:

select count(*) as '项目数' from project

4.2.3 本月消耗工时

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

#SQL 如下:

select sum(timeworked)/3600 as '实际总工时' from worklog
WHERE DATE_FORMAT( CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

4.2.4 本月任务数

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

#SQL 如下:

select count(*) as '问题总数' from jiraissue
WHERE DATE_FORMAT( CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

4.2.5 本月任务进行数

为了统计在Jira 中任务进行中的总数。

#SQL 如下:

SELECT count(*) AS "进行中"
FROM `jiraissue` ji
    LEFT JOIN issuestatus iss ON iss.ID = ji.issuestatus
WHERE iss.pname = 'In Progress' and DATE_FORMAT( ji.CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
GROUP BY ji.issuestatus

4.2.6 本月任务待办数

为了统计在Jira 中任务待办的总数。

#SQL 如下:

SELECT count(*) AS "待办数"
FROM `jiraissue` ji
    LEFT JOIN issuestatus iss ON iss.ID = ji.issuestatus
WHERE iss.pname = 'To Do' and DATE_FORMAT( ji.CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
GROUP BY ji.issuestatus

4.2.7 本月任务完成数

为了统计在Jira 中任务完成的总数。

#SQL 如下:

SELECT count(*) AS "已完成"
FROM `jiraissue` ji
    LEFT JOIN issuestatus iss ON iss.ID = ji.issuestatus
WHERE iss.pname = 'Done' and DATE_FORMAT( ji.CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
GROUP BY ji.issuestatus

4.2.8 本月存量任务优先级占比

为了统计在 Jira 中存量任务优先级占比。

#SQL 如下:

SELECT CASE ji.PRIORITY
        WHEN '1' THEN '极高'
        WHEN '2' THEN '高'
        WHEN '3' THEN '中'
        WHEN '4' THEN '低'
        WHEN '5' THEN '极低'
        ELSE '其他'
    END AS "任务类别", count(*) AS "次数"
FROM `jiraissue` ji
    LEFT JOIN issuestatus iss ON iss.ID = ji.issuestatus
WHERE iss.pname != 'Closed'
    AND iss.pname != 'Done'

    And DATE_FORMAT( ji.CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
GROUP BY ji.PRIORITY

4.2.9 项目类型占比

为了统计在 Jira 中项目类型占比。

#SQL 如下:

SELECT PROJECTTYPE, count(*) AS "数量"
FROM PROJECT
GROUP BY PROJECTTYPE

4.2.10 本月项目消耗工时排行榜

为了统计在Jira 中 项目消耗工时。

#SQL 如下:

SELECT pj.pname AS "项目名", sum(wl.timeworked) / 3600 AS "实际工时"
FROM worklog wl
    LEFT JOIN jiraissue ji ON ji.ID = wl.ISSUEID
    LEFT JOIN PROJECT pj ON ji.PROJECT = pj.id

where DATE_FORMAT( wl.CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )        
GROUP BY pj.pname

4.2.11 本月用户消耗工时排行榜

为了统计在 Jira 中近用户消耗工时。

#SQL 如下:

SELECT au.lower_user_name AS "用户名", sum(timeworked) / 3600 AS "实际工时"
FROM worklog wl
    LEFT JOIN app_user au ON au.user_key = wl.AUTHOR

where DATE_FORMAT( wl.CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )    
GROUP BY wl.AUTHOR

4.2.12 项目的任务数排行榜

为了展示在Jira 项目任务数量的排行。

#SQL 如下:

select pname,pcounter from PROJECT

4.2.13 本月用户完成任务数排行榜

为了展示在 Jira 用户完成任务数的排行。

#SQL 如下:

SELECT au.lower_user_name AS "用户名", count(*) AS "完成次数"
FROM `jiraissue` ji
    LEFT JOIN app_user au ON au.user_key = ji.ASSIGNEE
WHERE ji.issuestatus = (
    SELECT ID
    FROM issuestatus
    WHERE pname = 'Done'
)

and  DATE_FORMAT( ji.CREATED, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
GROUP BY ji.ASSIGNEE

4.2.14 近14天任务状态分布

为了统计在Jira 中近14天任务状态的分布。

#SQL 如下:

SELECT DISTINCT DATE_FORMAT(ji.CREATED, '%Y-%m-%d') AS "时间"
    , (
        SELECT count(*)
        FROM issuestatus iss
            LEFT JOIN jiraissue ji1 ON iss.ID = ji1.issuestatus
        WHERE DATE_FORMAT(ji1.CREATED, '%Y-%m-%d') = DATE_FORMAT(ji.CREATED, '%Y-%m-%d')
            AND iss.pname = 'Done'
    ) AS "已完成"
    , (
        SELECT count(*)
        FROM issuestatus iss
            LEFT JOIN jiraissue ji1 ON iss.ID = ji1.issuestatus
        WHERE DATE_FORMAT(ji1.CREATED, '%Y-%m-%d') = DATE_FORMAT(ji.CREATED, '%Y-%m-%d')
            AND iss.pname = 'To Do'
    ) AS "待办"
    , (
        SELECT count(*)
        FROM issuestatus iss
            LEFT JOIN jiraissue ji1 ON iss.ID = ji1.issuestatus
        WHERE DATE_FORMAT(ji1.CREATED, '%Y-%m-%d') = DATE_FORMAT(ji.CREATED, '%Y-%m-%d')
            AND iss.pname = 'In Progress'
    ) AS "进行中"
FROM jiraissue ji
WHERE datediff(NOW(), ji.CREATED) <= 14
ORDER BY ji.CREATED DESC

4.3 制作仪表板

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

文章目录
其他资源