Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
maxLevel7
minLevel1

Data Sources

Custom metrics can be created using the following data sources:

...

Data Source type

Table

Task Tracking System

Ticket

TicketHistory

Worklog

Sprints

Releases

Version Control

Branch

Commit

PullRequest

Tag

...

If data source is configured, then each table has a list of columns, which are added on the Axis X and Y.

Info

To build a custom metric with using historical data you can use not only TicketHistory table but also a function ticket_snapshots.

Ticket_snapshots

A snapshot is a representation of tickets within a defined time interval, allowing for a quick view of the most recent ticket activity over specific periods.

Examples:

  1. To get historical data of tickets changes with type “Bug” and which have already moved in done status:

Code Block
select * from ticket_snapshots(
    ARRAY(select key from ticket where type = 'Bug'))
 sn where is_done(sn);
  1. To get list of tickets changes in the specified time interval and date range:

Code Block
select * from ticket_snapshots(
  ARRAY(select key from ticket), 
  'week', 
  '2023-02-17 14:24:15.000', 
  '2023-03-17 14:24:15.000'
);
  1. To get historical data for the specific tickets with interval - 1 month

Code Block
select * from ticket_snapshots(
  ARRAY['EPMTEST-0001', 'EPMTEST-0003'],
  'month'
)

Mapping Azure DevOps Board with Ticket table

...

Text

Date

Numeric

Array

Boolean

JSON


Info

Note:

  1. Ability to add fields on the Axes and use the different Settings on the chart depend on fields type.

  2. Azure Board (TFS/VSTS) has fields which names are differ in the Custom Metrics and for metric development should be used Perf names:

    • State - Status

    • Area - Components

    • Iteration - Sprints

    • Tag - Labels

Anchor
join
join
Joins Between Tables

...

Table

Condition

Ticket JOIN with

TicketHistory

Ticket.id=TicketHistory.workitem_id

Worklog

Ticket.id=Worklog.workitem_id

Sprint

Sprint.id=any(Ticket.sprints)

Release

Release.id=any(Ticket.fix_releases)

TicketHistory JOIN with

Ticket

TicketHistory.workitem_id=Ticket.id

Worklog

TicketHistory.workitem_id=Worklog.workitem_id

Sprint

Based on situation

Release

Based on situation

Worklog JOIN with

Ticket

Worklog.workitem_id=Ticket.id

TicketHistory

Worklog.workitem_id=TicketHistory.workitem_id

Sprint

Based on situation

Release

Based on situation

Sprint JOIN with

Ticket

Sprint.id=any(Ticket.sprints)

TicketHistory

Based on situation

Worklog

Based on situation

...