Skip to content

Commit a79792e

Browse files
committed
Updates to CFD sample report article
AB#53158: Cumulative Flow Diagram (CFD) sample report (Power BI, New, Phase 3)
1 parent c80daf2 commit a79792e

25 files changed

+97
-69
lines changed

Diff for: docs/report/powerbi/includes/rename-query.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
ms.subservice: azure-devops-analytics
3+
ms.author: kaelli
4+
author: KathrynEE
5+
ms.topic: include
6+
ms.date: 12/08/2022
7+
---
8+
9+
## (Optional) Rename query
10+
11+
You can rename the default query label, *Query1* to something more meaningful by opening the menu for the query and selecting **Rename**.
12+
13+
:::image type="content" source="../media/transform-data/rename-query.png" alt-text="Screenshot of Power BI query menu options, rename query. ":::
14+
15+
-6.13 KB
Binary file not shown.
-22 KB
Binary file not shown.
-7.65 KB
Binary file not shown.
-77.1 KB
Binary file not shown.
-84 KB
Binary file not shown.
Binary file not shown.
-17.4 KB
Binary file not shown.
-40.2 KB
Binary file not shown.
Loading
Loading
25.8 KB
Loading
Loading
Loading
34.7 KB
Loading
9.93 KB
Loading
14.3 KB
Loading

Diff for: docs/report/powerbi/sample-boards-bugtrend.md

+4
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,10 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Wor
332332
***
333333

334334

335+
336+
[!INCLUDE [temp](includes/rename-query.md)]
337+
338+
335339
## Transform data in Power BI
336340

337341

Diff for: docs/report/powerbi/sample-boards-cfd.md

+54-50
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,33 @@ ms.custom: powerbisample
88
author: KathrynEE
99
ms.topic: sample
1010
monikerRange: '>= azure-devops-2019'
11-
ms.date: 10/05/2021
11+
ms.date: 12/08/2022
1212
---
1313

1414
# Cumulative Flow Diagram (CFD) sample report
1515

1616
[!INCLUDE [version-gt-eq-2019](../../includes/version-gt-eq-2019.md)]
1717

18-
This article shows you how to display the Stories CFD for a specified team. An example is shown in the following image.
18+
This article shows you how to display the Stories CFD for a specified team. This data is also available through the built-in chart and dashboard widget. To learn more about these options, see [View and configure a Cumulative Flow Diagram](../dashboards/cumulative-flow.md).
1919

20-
> [!div class="mx-imgBorder"]
21-
> ![Sample - CFD - Report](media/odatapowerbi-cfd-report.png)
20+
An example is shown in the following image that shows a count of user stories over time in the *Researching*, *Committed*, *In Progress*, and *In Review* states. Hovering over a date provides information on data for that date.
21+
22+
:::image type="content" source="media/reports-boards/cfd-stacked-area-chart-sorted.png" alt-text="Screenshot of Power BI Cumulative Flow stacked area chart report, columns sorted in Kanban board column order.":::
23+
24+
To learn more about cumulative flow, see [Cumulative flow, lead time, and cycle time guidance](../dashboards/cumulative-flow-cycle-lead-time-guidance.md) and [Cumulative flow, lead time, and cycle time guidance](../dashboards/cumulative-flow-cycle-lead-time-guidance.md).
2225

2326
[!INCLUDE [temp](includes/sample-required-reading.md)]
2427

2528
[!INCLUDE [prerequisites-simple](../includes/analytics-prerequisites-simple.md)]
2629

2730
## Sample queries
2831

32+
Queries in this section support returning cumulative flow data for User Stories. These queries specify the `WorkItemBoardSnapshot` entity set as they return data calculated for the Kanban board over time.
33+
34+
35+
[!INCLUDE [temp](includes/query-filters-work-items.md)]
36+
37+
2938
#### [Power BI query](#tab/powerbi/)
3039

3140
[!INCLUDE [temp](includes/sample-powerbi-query.md)]
@@ -92,55 +101,55 @@ The following table describes each part of the query.
92101
`$apply=filter(`
93102
:::column-end:::
94103
:::column span="1":::
95-
Start filter()
104+
Start `filter()` clause.
96105
:::column-end:::
97106
:::row-end:::
98107
:::row:::
99108
:::column span="1":::
100109
`Team/TeamName eq '{teamname}'`
101110
:::column-end:::
102111
:::column span="1":::
103-
Return items for a specific team
112+
Return items for a specific team.
104113
:::column-end:::
105114
:::row-end:::
106115
:::row:::
107116
:::column span="1":::
108117
`and BoardName eq 'Stories'`
109118
:::column-end:::
110119
:::column span="1":::
111-
Return items on the 'Stories' backlog. You can specify other backlog names, such as 'Epics', and 'Features'
120+
Return items on the **Stories** backlog. You can specify other backlog names, such as **Epics** or **Features**. Specify the backlog level that corresponds to the process selected for your project.
112121
:::column-end:::
113122
:::row-end:::
114123
:::row:::
115124
:::column span="1":::
116125
`and DateValue ge {startdate}`
117126
:::column-end:::
118127
:::column span="1":::
119-
Start CFD on or after the specified date. Example: **2019-04-01Z** represents 2019-April-01 2019-July-01
128+
Return data on or after the specified date, for example, **2022-04-01Z** represents 2022-April-01 2019-July-01.
120129
:::column-end:::
121130
:::row-end:::
122131
:::row:::
123132
:::column span="1":::
124133
`)`
125134
:::column-end:::
126135
:::column span="1":::
127-
Close filter()
136+
Close `filter()` clause.
128137
:::column-end:::
129138
:::row-end:::
130139
:::row:::
131140
:::column span="1":::
132141
`/groupby(`
133142
:::column-end:::
134143
:::column span="1":::
135-
Start groupby()
144+
Start `groupby()` clause.
136145
:::column-end:::
137146
:::row-end:::
138147
:::row:::
139148
:::column span="1":::
140149
`(DateValue, ColumnName, LaneName, State, WorkItemType,AssignedTo/UserName,Area/AreaPath), `
141150
:::column-end:::
142151
:::column span="1":::
143-
Group by DateValue (used for trending), ColumnName, and any other fields you want to report on. Here we include LaneName to enabling filtering by LaneName
152+
Group by `DateValue` (used for trending), `ColumnName`, and any other properties you want to report on. Here we include `LaneName` to enabling filtering by swimlanes.
144153
:::column-end:::
145154
:::row-end:::
146155
:::row:::
@@ -156,50 +165,49 @@ The following table describes each part of the query.
156165
`)`
157166
:::column-end:::
158167
:::column span="1":::
159-
Close groupby()
168+
Close `groupby()` clause.
160169
:::column-end:::
161170
:::row-end:::
162171

163172

164-
[!INCLUDE [temp](includes/query-filters-work-items.md)]
173+
174+
[!INCLUDE [temp](includes/rename-query.md)]
165175

166176

167-
## Power BI transforms
177+
## Transform data in Power BI
168178

169-
[!INCLUDE [temp](includes/sample-expandcolumns.md)]
179+
From the Power Query Editor, choose the query with the data you want to transform. For a CFD chart, you'll want to
180+
expand columns such as `Area`, `Iteration`, and `AssignedTo`.
181+
To learn how, see the following sections in [Transform Analytics data to generate Power BI reports, Expand columns](transform-analytics-data-report-generation.md#expand-columns).
170182

171-
[!INCLUDE [temp](includes/sample-finish-query.md)]
183+
## Create the stacked area chart
172184

185+
In the follow example, the query was renamed to *CFD*, but no columns were renamed.
173186

174-
## Create the report
187+
1. In Power BI, choose the **Stacked area** chart under **Visualizations** and select the fields as shown in the following image.
175188

176-
Power BI shows you the fields you can report on.
189+
:::image type="content" source="media/reports-boards/cfd-visualizations.png" alt-text="Screenshot of Power BI Visualizations and Fields selections for CFD chart report. ":::
190+
191+
1. Add `DateValue` to **Axis** and then right-click `DateValue` and select `DateValue`, rather than `Date Hierarchy`.
177192

178-
> [!NOTE]
179-
> The example below assumes that no one renamed any columns.
193+
1. Add `Count` to **Values**.
194+
2.
195+
1. Add `ColumnName` to **Legend**.
180196

181-
> [!div class="mx-imgBorder"]
182-
> ![Sample -Release Burndown - Fields](media/odatapowerbi-cfd-fields.png)
197+
1. In the Filters pane, expand `ColumnName`, and select only the values you want to appear on the chart. For example, you may want to unselect *New*, *Proposed*, *Done*, or *Closed*.
183198

184-
For a simple report, do the following steps:
199+
:::image type="content" source="media/reports-boards/cfd-columnname-filters.png" alt-text="Screenshot of Power BI Filters for ColumnName. ":::
185200

186-
1. Select Power BI Visualization **Stacked Area Chart**.
187-
1. Add the field "DateValue" to **Axis**
188-
- Right-click "DateValue" and select "DateValue", rather than Date Hierarchy
189-
1. Add the field "ColumnName" to **Legend**
190-
1. Add the field "Count" to **Values**
191-
1. On the Filter for "ColumnName", select only the values you want to appear on the chart. For example, you may want to unselect "New" and "Done"
192201

193-
The example report:
202+
The example report displays the columns in alphabetic order.
194203

195-
> [!div class="mx-imgBorder"]
196-
> ![Sample - CFD - Report](media/odatapowerbi-cfd-report.png)
204+
:::image type="content" source="media/reports-boards/cfd-stacked-area-chart.png" alt-text="Screenshot of Sample Power BI Cumulative Flow stacked area chart report, columns sorted in alphabetic order.":::
197205

198-
### Sorting columns in correct order
206+
### Sort columns in progressive order
199207

200-
The above sample will display columns in alphabetical order. To sort the columns in the order specific on the board, do the following steps:
208+
To sort the chart columns in the order specific on the board, do the following steps:
201209

202-
1. Use the query below to create a new query in Power BI. When done, rename the query to "ColumnOrder"
210+
1. Use the query below to create a new query in Power BI. When done, rename the query to *ColumnOrder*.
203211

204212
#### [Power BI query](#tab/powerbi/)
205213

@@ -236,29 +244,25 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/V3.0-preview/Boa
236244

237245
### Sort the report in the correct order
238246

239-
1. Once back in Power BI, expand ColumnOrder query and select ColumnName.
240-
1. Select **Modeling** menu.
241-
1. Select **Sort by Column** and choose "ColumnOrder".
242-
1. Select **Manage Relationships** and ensure there's a relationship between "CFD.ColumnName" and "ColumnOrder.ColumnName".
243-
- It's likely that the relationship was autodetected.
244-
1. In the report created above, add "ColumnOrder.ColumnName" to **Legend**, replacing "CFD.ColumnName".
247+
1. In Power BI, expand the *ColumnOrder* query and select `ColumnName`.
245248

246-
The report will now be sorted by correct column order:
249+
1. Select **Column Tools** and then **Sort by Column** and choose `ColumnOrder`.
250+
:::image type="content" source="media/reports-boards/cfd-sort-by-column.png" alt-text="Screenshot of Power BI Column Tools, Sort by Column selection.":::
247251

248-
> [!div class="mx-imgBorder"]
249-
> ![Sample - Release Burndown - Report](media/odatapowerbi-cfd-report2.png)
252+
1. Select the **Modeling** menu, and then select **Manage Relationships**. Ensure there's a relationship between `CFD.ColumnName` and `ColumnOrder.ColumnName`. It's likely that the relationship was autodetected.
250253

251-
> [!NOTE]
252-
> If any work items were in a column that has since been deleted, they will appear as "Blank" in the above report.
254+
:::image type="content" source="media/reports-boards/cfd-manage-relationships-dialog.png" alt-text="Dialog for Manage Relationships showing a relationship between "CFD.ColumnName" and "ColumnOrder.ColumnName"":::
253255

254-
### Pull in data from multiple teams
256+
1. In the report created above, in the **Legend**, replace `CFD.ColumnName` with `ColumnOrder.ColumnName` to **Legend**.
255257

256-
If you're pulling data in from multiple teams to aggregate across teams, you must ensure every team in the report has exactly the same set of columns on their boards. Otherwise, you're pulling in varying columns from every team. It's also a good idea to add a **Slicer** Visualization to your report, with Team.TeamName as a field. This step allows quick filter of the report by team.
258+
The report refreshes with columns sorted in the same order used by the Kanban board.
257259

260+
:::image type="content" source="media/reports-boards/cfd-stacked-area-chart-sorted.png" alt-text="Screenshot of Sample Power BI Cumulative Flow stacked area chart report, columns sorted in Kanban board column order.":::
258261

259-
## Full list of sample reports
260262

261-
[!INCLUDE [temp](includes/sample-fulllist.md)]
263+
> [!NOTE]
264+
> If any work items were in a column that has since been deleted, they will appear as "Blank" in the above report.
265+
262266

263267
## Related articles
264268

Diff for: docs/report/powerbi/sample-boards-directlinks.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -373,9 +373,9 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Wor
373373
***
374374

375375

376-
## (Optional) Rename query
377376

378-
You can the default query label, *Query1* to something more meaningful. To do so, see [Rename the query](transform-analytics-data-report-generation.md#rename-the-query).
377+
[!INCLUDE [temp](includes/rename-query.md)]
378+
379379

380380
## Transform data in Power BI
381381

Diff for: docs/report/powerbi/sample-boards-leadcycletime.md

+11-15
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,13 @@ ms.date: 12/08/2022
1515

1616
[!INCLUDE [version-gt-eq-2019](../../includes/version-gt-eq-2019.md)]
1717

18-
Lead time and cycle time indicate how long it takes for work to flow through a team's development pipeline. Lead time measures the total time elapsed from the creation of work items to their completion. Cycle time measures the time it takes for a team to complete work items once they begin actively working on them.You can create lead time and cycle charts using the queries provided in this article.
18+
You can create lead time and cycle charts using the queries provided in this article. Lead time and cycle time indicate how long it takes for work to flow through a team's development pipeline. Lead time measures the total time elapsed from the creation of work items to their completion. Cycle time measures the time it takes for a team to complete work items once they begin actively working on them.
1919

20-
The following image shows an example for average lead time.
20+
The following image shows an example for average lead time broken down by priority assignments made to the user stories.
2121

22-
:::image type="content" source="media/media/odatapowerbi-leadcycle-report.png" alt-text="Screenshot of Power BI Lead Cycle Time trend chart report.":::
22+
:::image type="content" source="media/reports-boards/lead-time-trend-chart.png" alt-text="Screenshot of Power BI Lead Cycle Time trend chart report.":::
2323

24-
25-
To learn more about lead time and cycle time, see [Cumulative flow, lead time, and cycle time guidance](../dashboards/cumulative-flow-cycle-lead-time-guidance.md) and [Cumulative flow, lead time, and cycle time guidance](../dashboards/cumulative-flow-cycle-lead-time-guidance.md).
24+
To learn more about lead and cycle time, see [Lead Time and Cycle Time widgets](../dashboards/cycle-time-and-lead-time.md) and [Cumulative flow, lead time, and cycle time guidance](../dashboards/cumulative-flow-cycle-lead-time-guidance.md).
2625

2726

2827
[!INCLUDE [temp](includes/sample-required-reading.md)]
@@ -31,7 +30,7 @@ To learn more about lead time and cycle time, see [Cumulative flow, lead time, a
3130

3231
## Sample queries
3332

34-
Queries in this section support returning lead and cycle time data for completed User Stories. You can query by area path or team name(s).
33+
Queries in this section support returning lead and cycle time data for completed User Stories. You can query by area path or team name(s). All of these queries specify the `WorkItems` entity set as they return data calculated for each work item by the Analytics service.
3534

3635

3736
[!INCLUDE [temp](includes/query-filters-work-items.md)]
@@ -81,7 +80,7 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Wor
8180
- `{organization}` - Your organization name
8281
- `{project}` - Your team project name, or omit "/{project}" entirely, for a cross-project query
8382
- `{areapath}` - Your Area Path. Example format: `Project\Level1\Level2`
84-
- `{startdate}` - Start your report for items completed on/after a given date. Format: YYYY-MM-DDZ. Example: `2022-04-01Z` represents 2022-April-01. Don't enclose in quotes.
83+
- `{startdate}` - Start your report for items completed on or after a given date, with the format: `YYYY-MM-DDZ`. For example: `2022-04-01Z` represents 2022-April-01. Don't enclose in quotes.
8584

8685

8786
### Query breakdown
@@ -96,6 +95,7 @@ The following table describes each part of the query.
9695
**Description**
9796
:::column-end:::
9897
:::row-end:::
98+
---
9999
:::row:::
100100
:::column span="1":::
101101
`$filter=WorkItemType eq 'User Story'`
@@ -196,11 +196,7 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Wor
196196

197197
***
198198

199-
200-
201-
## (Optional) Rename query
202-
203-
You can the default query label, *Query1* to something more meaningful. To do so, see [Rename the query](transform-analytics-data-report-generation.md#rename-the-query).
199+
[!INCLUDE [temp](includes/rename-query.md)]
204200

205201
## Transform data in Power BI
206202

@@ -216,9 +212,9 @@ To learn how, see the following sections in [Transform Analytics data to generat
216212
- [Transform a column data type](transform-analytics-data-report-generation.md#transform-data-type).
217213

218214

219-
## Create the Line chart report
215+
## Create the trend chart
220216

221-
The follow example assumes the query was renamed to LeadCycleTime and no one renamed any columns.
217+
In the follow example, the query was renamed to *LeadCycleTime*, but no columns were renamed.
222218

223219
1. In Power BI, choose the **Line chart** report under **Visualizations** and select the fields as shown in the following image.
224220

@@ -231,7 +227,7 @@ The follow example assumes the query was renamed to LeadCycleTime and no one ren
231227
1. Add `Priority` to **Legend**.
232228

233229

234-
The example report displays:
230+
The example report displays. Note as you hover over any area in the report, additional data is shown.
235231

236232
:::image type="content" source="media/reports-boards/lead-time-trend-chart.png" alt-text="Screenshot of Sample Power BI Lead Cycle Time trend chart report.":::
237233

Diff for: docs/report/powerbi/sample-boards-openbugs.md

+3
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Wor
201201

202202

203203

204+
[!INCLUDE [temp](includes/rename-query.md)]
205+
206+
204207
## Transform data in Power BI
205208

206209

Diff for: docs/report/powerbi/sample-boards-releaseburndown.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -402,9 +402,8 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Wor
402402

403403

404404

405-
## (Optional) Rename query
405+
[!INCLUDE [temp](includes/rename-query.md)]
406406

407-
You can the default query label, *Query1* to something more meaningful. To do so, see [Rename the query](transform-analytics-data-report-generation.md#rename-the-query).
408407

409408
## Transform data in Power BI
410409

Diff for: docs/report/powerbi/sample-boards-rollup.md

+3
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,9 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Wor
365365

366366

367367

368+
[!INCLUDE [temp](includes/rename-query.md)]
369+
370+
368371
## Transform data in Power BI
369372

370373

Diff for: docs/report/powerbi/sample-boards-sprintburndown.md

+4
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,10 @@ https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Wor
369369
***
370370

371371

372+
373+
[!INCLUDE [temp](includes/rename-query.md)]
374+
375+
372376
## Power BI transforms
373377

374378
[!INCLUDE [temp](includes/sample-expandcolumns.md)]

0 commit comments

Comments
 (0)