Мне нужно получить некоторые данные из базы данных JIRA и создать представление, чтобы показать их.
В нашей JIRA около 100 проектов. Нам нужно создать представление Oracle для визуализации следующих данных.
У нашего рабочего процесса есть следующие статусы Открыто Исправить Решено Тест Проверить Закрыто Отклонено
For a single project, if issues are Delivery-CR, Fault-Bug, Fault-Specification, Fault-Configuration or Fault-Testing we need to create a view to visualize following data.
• transition date – open to fix
• transition date – fix to resolved
• transition date – resolved to test
• transition date – test to validate
• Issue type
• Status
• Fix version
Note that Issue type, Status and Fix version are on CHANGEITEM table. I can't find a table to get transaction dates.
We are using JIRA 6.3.7 and Oracle 11g database
Я попытался выполнить следующий запрос, но безуспешно.
select created, issueid, ci.oldstring, ci.newstring, ci.oldvalue, ci.newvalue from changegroup inner join changeitem ci on changegroup.ID = ci.groupid where issueid in (select ID from JIRAISSUE where PROJECT in (select ID from PROJECT where PNAME = 'Singapore Exchange Post Trade') and ISSUETYPE in (select ID from ISSUETYPE where PNAME in ('Delivery-CR', 'Fault-Bug', 'Fault-Specification', 'Fault-Configuration', 'Fault-Testing'))) where ci.oldstring in('Open','Fix','Resolved','Test','Validate','Closed','Rejected');
Может кто-нибудь сказать мне, где я ошибся.
2 ответа
Я полагаю, вы хотите иметь по одной проблеме в каждой строке.
Этот отчет будет непростым, в структуре базы данных JIRA есть некоторые факторы, которые замедляют его работу.
Я построил запрос, который объединяет столбцы путем повторного объединения одних и тех же таблиц для получения различных значений интересов. Вы можете добавлять столбцы, повторяя CH_n
левые соединения ("CHange").
WITH JIRAISSUE_W AS (
SELECT
JI.ID ,
P.PKEY ||'-' || JI.ISSUENUM AS "KEY",
IT.PNAME AS ISSUETYPE ,
IST.PNAME AS ISSUESTATUS ,
CG.ISSUEID ,
CG.AUTHOR AS "WHO",
CG.CREATED AS "WHEN",
CI.FIELD AS "WHAT",
DBMS_LOB.SUBSTR(CI.OLDSTRING, 256, 1) AS "FROM",
DBMS_LOB.SUBSTR(CI.NEWSTRING, 256, 1) AS "TO"
FROM JIRAISSUE JI
INNER JOIN ISSUESTATUS IST ON IST.ID = JI.ISSUESTATUS
INNER JOIN PROJECT P ON P.ID = JI.PROJECT
INNER JOIN ISSUETYPE IT ON JI.ISSUETYPE = IT.ID
LEFT JOIN CHANGEGROUP CG ON CG.ISSUEID = JI.ID
INNER JOIN CHANGEITEM CI ON CI.GROUPID = CG.ID
WHERE IT.PNAME IN ('Delivery-CR', 'Fault-Bug', 'Fault-Specification',
'Fault-Configuration', 'Fault-Testing')
ORDER BY JI.CREATED
)
SELECT
CH_1.KEY ,
CH_1.ISSUETYPE ,
CH_1.ISSUESTATUS ,
FIXV."TO" AS FIXVERSION ,
CH_1."WHEN" AS "TO_FIX" ,
CH_2."WHEN" AS "TO_RESOLVE",
CH_3."WHEN" AS "TO_TEST" ,
CH_4."WHEN" AS "TO_VALIDATE"
FROM JIRAISSUE_W CH_1
LEFT JOIN JIRAISSUE_W FIXV ON
FIXV.ISSUEID = CH_1.ID AND
FIXV."WHAT" = 'Fix Version'
LEFT JOIN JIRAISSUE_W CH_2 ON
CH_2.ISSUEID = CH_1.ID AND
CH_2."WHAT" = 'status' AND
CH_2."TO" = 'Resolved'
LEFT JOIN JIRAISSUE_W CH_3 ON
CH_3.ISSUEID = CH_1.ID AND
CH_3."WHAT" = 'status' AND
CH_3."TO" = 'Test'
LEFT JOIN JIRAISSUE_W CH_4 ON
CH_4.ISSUEID = CH_1.ID AND
CH_4."WHAT" = 'status' AND
CH_4."TO" = 'Validated'
WHERE
CH_1."WHAT" = 'status' AND
CH_1."TO" = 'Fix';
Не лучший вариант менее чем за час, но вы можете согласиться с этим для начала.
Мне было поручено воссоздать представление перехода в Jira, и я подумал, что мое решение может помочь в решении вашей проблемы.
Мы используем Postgres, поэтому я думаю, вам нужно изменить функцию возраста. Это работает очень хорошо:
select
ci.oldstring as OldStatus
, ci.newstring as NewStatus
, AGE(cg.created, coalesce (LEAD (cg.created, -1) OVER closedTime, ji.created)) AS age
, cg.created as TransitionCreated
, ji.created as IssueCreated
, proj.pname as ProjectName
, ji.id as IssueId
, ji.summary
, ji.reporter
, ji.assignee
from jiraissue ji
JOIN project proj on ji.project = proj.id
join changegroup cg ON ji.id= cg.issueId
JOIN changeItem ci
on cg.id = ci.groupId
and ci.field = 'status'
WINDOW
closedTime AS (PARTITION BY cg.issueId order by cg.id)
order by cg.issueid, cg.id
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.