Заметки консультанта

Шамрай Александр Владимирович

Практическое руководство по отчетности TFS. Настройка отчетов для трендов

Posted by Шамрай Александр на Январь 15, 2014

<<Содержание

Повременная отчетность необходима для усовершенствования процесса. Незнание влияния изменений процесса или знание того, что грядет, основано на том, что происходило в прошлом, нет другого пути узнать, являются ли изменения положительными или отрицательными. Подход в отчетности для тенденции в удаленной службе отличается от подхода для отчетов на момент времени, приведенных ранее.

Примечание

Чтобы создавать отчеты для тенденции, канал OData должен был быть дополнен, поскольку отсутствуют необходимые данные в существующих Odata. Отчеты на момент времени, описанные ранее, могут быть реализованы с существующими каналами. Для реализации этого решения, необходимо создать расширенный канал Odata как описано на этой странице.

Основные сведения о данных, подготовленных расширенным каналом OData

Предупреждение

Если в системе нет данных, расширенный канал OData ничего не вернет, даже схему, поэтому обновление не удастся.

Расширенный канал OData предоставляет два новых канала, необходимых для отчетов по тенденции (и которые могут использоваться отчеты на один момент времени с использованием более сложных функций, чем доступно в оригинальном решении). Первый канал – это канал Work Item History, а второй – Work Item Facts, и оба они используются вместе, чтобы обесечить возможность предоставить отчет по тенденции. Рисунок 2 показывает результирующую модель PowerPivot с использованием необходимых каналов и таблицы дат.

Рисунок 2 – Модель PowerPivot для отчетов с тенденцией

Таблица Date находится в Excel файле в решении с примером и описана более подробно ниже.

Канал Work Item History

Канал Work Item History представляет собой дамп истории всех рабочих элементов в данной коллекции. Он определяет момент времени, в котором рабочий элемент был в конкретном состоянии, присвоенным конкретному пользователю и различные другие общие атрибуты, такие как пути итерации и области, заблокирован или нет, ранг стека и другие данные.

Примечание

В модели, показанной на рисунке 2, поток WorkItemHistory был переименован в «Work Items»

Для этого для канала данных, как только он был передан в модель PowerPivot, требуется только одно изменение – к каналу должен быть добавлен альтернативный (или суррогатный) ключ. Этот столбец является простым вычисляемым столбцом. Чтобы добавить его, сделайте следующее:

  1. Щелкните первую строку пустого столбца в конце таблицы.
  2. Введите формулу как: =[Id] & «:» & [Revision] и нажмите ENTER.
  3. Переименуйте столбец ВычисляемыйСтолбец1 в AlternateKey.

Канал Work Item Fact

Этот канал является более интересным и позволяет пользователю выполнить вычисления простым, но более мощный методом. Для тех, кто не знаком с хранилищем данных, ниже описаны критические столбцы, а также обоснование для создания этих столбцов и связи с таблицей Work Item History.

После импорта канала таблица была переименована в «Work Item Measures», которая является немного более понятной конечному пользователю, чем таблица Work Item Fact. Кроме того, каждый столбец в этой таблице скрыт от клиентских средств, так как пользователи должны его использовать только для обеспечения мер. Все другие основные данные рабочего элемента выходят из таблицы Work Items.

В этой таблице есть один добавленный столбец – DateSK. Этот столбец обеспечивает полосу времени для столбца Revision Date, т.к. мера детализации ограничена выбранным днем, а не одним часом или минутой в течение дня. Более детализированный отчет возможен, но необходимо существенно расширить таблицу дат, чтобы включить в список каждый час, каждый день и каждый год. Причина именования этого столбца DateSK проста – первичным ключом из таблицы «Date» является DateSK и соединение происходит через этот столбец.

Колонка/Мера Описание
RevisionCount Этот столбец содержит одно значение 1 – для подсчета каждой версии, показанной в столбце Revision. Вы заметите, что каждая версия дублируется (см. объяснение RecordCount).
RecordCount Record Count — это количество рабочих элементов, которые существуют на данный день для целей тенденций в отчетах. Каждая версия рабочего элемента будет иметь одну или две строки в этой таблице. Первая строка покажет RecordCount как «1». Вторая строка (если есть второй ряд) покажет «-1». Почему? Рассмотрим следующую ситуацию:

  • Пользователь добавляет рабочий элемент 1/10/2013, который имеет версию 1 и ID 560
  • Другой пользователь делает изменение этого рабочего элемента 5/10/2013, который имеет версию 2
  • Следующий пользователь создает версию 8/10/2013, которая имеет номер 3

Этот сценарий будет отображаться в этой таблице со следующей структурой:

ID RevisionDate Revision RecordCount
560 10/1/2013 1 1
560 10/5/2013 1 -1
560 10/5/2013 2 1
560 10/8/2013 2 -1
560 10/8/2013 3 1

Это позволяет модели PowerPivot выполнить необходимые вычисления для промежуточных дат правильно для отчетов по тенденции. Когда создается куб, и когда конечный пользователь добавляет дату в свою сводную таблицу, строки для этой записи показывают, в какие даты рабочий элемент 560 существует в промежуток с 1/10/2013 до 10/8/2013 (скажем, что это происходит 8-го числа).

Теперь в модели эта таблица связана с таблицей Work Items и все остальные связанные данные могут быть получены из этой таблицы. Давайте сделаем еще одно допущение для этого сценария, например, что состояния для данного рабочего элемента следующие:

ID

RevisionDate Revision State

560

10/1/2013 1 To Do

560

10/5/2013 2 In Work

560

10/8/2013 3 Done

Эти таблицы соединяются через альтернативный ключ, которым является ID:Revision.

Теперь сводная таблица отображает дату в строке, состояние в колонке и количество рабочих элементов как мера (с фильтрацией по этому рабочему элементу). Она будет выглядеть следующим образом:

State
Date To Do In Work Done
10/1/2013 1
10/2/2013 1
10/3/2013 1
10/4/2013 1
10/5/2013 1
10/6/2013 1
10/7/2013 1
10/8/2013 1

Тут все правильно сгенерировано для значения RecordCount. Куб говорит, что между 1/10/2013 и 4/10/2013, количество записей для данного рабочего элемента 1. Однако, 5/10/2013 версия изменилась. Если бы там не было -1, когда бы выполнялся расчет количества рабочих элементов, было бы количество 2.

Однако это не так – существует только один рабочий элемент с идентификатором 560. Он находится в другом состоянии. Поэтому эта структура говорит нам, что нет рабочего элемента с идентификатором 560 на дату 10/5 с состоянием «To Do», но рабочий элемент с идентификатором 560 есть 10/5 в состоянии «In Work». Что будет, если конечный пользователь решит не включать состояния в сводную таблицу? Она станет простым списком дат для каждой даты, с «1» рядом с ней, т.к. в каждый день, сумма поля RecordCount всегда равна единице.

Примечание

Эта логика применяется для всех других полей мер, таких как поля завершено и оставшиеся трудозатраты.

Смотрите ниже меру Work Item Count, чтобы понять работу расчета, который этой делает.

Work Item Count Расчет для количества следующий: CALCULATE(sum([RecordCount]), DATESBETWEEN (‘Date'[DateSK], BLANK(), LASTDATE(‘Date'[DateSK])), ALL(‘Date’))По сути, это сумма в столбце RecordCount, но, используя функцию DAX CALCULATE, она предоставляет контекст для функции Sum. Если пользователь изменяет область даты, количество будет правильно обновлено. Без функции CALCULATE количество записей будет оставаться статическим.

Расчет сам по себе очень быстр, потому что он просто добавляет в общей сложности «1» и «-1» для каждой строки в таблице. Для любого выбранного рабочего элемента итог всегда равен 1. Для выбранного набора рабочих элементов итог всегда представляет собой совокупность рабочих элементов, которые были в данной версии в выбранный период времени. Используя пример выше, если пользователь изменил диапазон дат в сводной таблице до 10/7, то таблица никогда не будет отображать столбец «Готово», потому что на основе данного диапазона, Рабочий элемент не имеет записей до даты 10/7.

Remaining Work Расчет для работы: CALCULATE(Sum([RemainingWork]), DATESBETWEEN(‘Date'[DateSK], BLANK(), LASTDATE(‘Date'[DateSK])), ALL(‘Date’))Тут идентично Work Item Count. Таблица Fact сформирована так, чтобы обеспечивался единый метод для расчета мер.
Revision Count CALCULATE(Sum([RevisionCount]), DATESBETWEEN(‘Date'[DateSK], BLANK(), LASTDATE(‘Date'[DateSK])), ALL(‘Date’))
Total Effort CALCULATE(Sum([Effort]), DATESBETWEEN(‘Date'[DateSK], BLANK(), LASTDATE(‘Date'[DateSK])), ALL(‘Date’))

Таблица 12 – Канал Work Item Fact

Таблица Date

Таблица Date обеспечивает диапазон дат, для которых может быть рассчитан куб. Это непрерывный список дат от даты начала до сегодняшнего дня (хотя он может быть продлен настолько далеко, насколько это необходимо). Это позволяет кубу заполнить значения, для которых не существует конкретных дат. Это достигается за счет самих мер, которые ссылаются на таблицу дат, и тот факт, что таблица Work Item Measures связана с таблицей дат.

Таблица Date не предоставляется через канал – она должна предоставляться вам через альтернативный механизм. В стандартном механизме отчетности TFS хранилище данных содержит таблицу дат, сформированную с использованием кода. Т.к. в удаленной службе нет хранилища, мы предоставили шаблон решения со скрытой вкладкой Date (чтобы показать ее, нужно выбрать любую вкладку, нажать Показать и выбрать вкладку Date). Данные из этой вкладки используются для создания связанной таблицы в PowerPivot.

Для обеспечения согласованности с локальным хранилищем структура этого листа идентична таблице дат хранилища данных даже несмотря на то, что не все столбцы необходимы. Расширить данные (диапазон дат идет только до даты публикации в проекте для примера), просто выделите все ячейки пяти последних строк и протяните вниз. Это можно сделать также с помощью кода VBA, а также загрузкой в таблицу SQL и планированием задания для обновления таблицы один раз в день.

В таблице дат созданы две иерархии. Эти иерархии соответствуют иерархии даты в стандартном кубе TFS. Это иерархии год – месяц – дата и год – неделя – дата, и они все доступны вам через выпадающий список для этих структур времени.

Таблица Projects

Примечание

Смотрите файл ALMRangersTrendDataReferenceSolution.xlsx, которая содержит рабочую книгу для примера, выполненную по этому руководству

Отчет тенденции похож на отчет на момент времени за исключением того, что строка обычно разделена по дате для создания диаграмм, которые выглядят так:

Рисунок 3 – Пример Тренда

Пример на рисунке 2 — Стандартная накопительная диаграмма (Cumulative Flow Diagram, CFD) для задач проекта Рейнджеров ALM с момента его создания 16 августа 2012. Для создания отчета похожего на этот выполните следующие шаги:

Шаг Описание
1. Выбрать PowerPivot
[ ] – Сделано
  • Выберите PowerPivot, потом Управление из меню для Excel проекта с примером

2. Выбрать лист
[ ] – Сделано
  • В окне PowerPivot на вкладке В начало выберите PivotTable.

  • Выберите Новый лист (или Использовать существующий и выберите начальную область – обычной A1) и нажмите ОК.
  • Это отобразит список Поля PivotTable в правой области окна Excel.

Примечание

Таблица дат отображается как таблица 1 вместо Date, но если раскрыть ее будут отображены правильные данные. Пока нет метода, чтобы исправить это.
3. Определить меры
[ ] – Сделано
  • Раскройте секцию Work Item Measures и выберите меру Work Item Count.
  • Это добавит меру Work Item Count в раздел Значения на панель Поля и покажет количество рабочих элементов в сводной таблице.
4. Определить измерения
[ ] – Сделано
  • Раскройте измерение Work Items и перетащите поле Type на панель Фильтры панели Поля
  • В ячейке B2 измените значение фильтра Type из Все на Task.
  • Раскройте измерения Table1 и папку Больше полей и перетащите поле Date в раздел Строки из панели Поля.
  • Далее под Work Items перетащите поле State в раздел Столбцы из панели Поля
  • Теперь, и предполагая, что вы используете ваши данные, может потребоваться изменить порядок столбцов State и/или удалить столбцы. Чтобы удалить состояние, щелкните раскрывающийся список рядом с Название колонки (ячейка B3, если все идет по текущему примеру) и снимите флажок рядом с состоянием, чтобы удалить (или добавить). Чтобы изменить порядок столбцов, просто схватите заголовок столбца (например, ячейка B4) и перетащите его в нужное место. В диаграмме CFD, созданной с помощью Excel, минимальное значение начинается слева и максимальное значение находится справа с точки зрения порядка столбцов.
  • Раздел Поля PivotTable должен выглядеть примерно так:

5. Создать диаграмму
[ ] – Сделано
  • Наконец, для создания диаграммы, выберите на ленте Анализ, выберите Сводная диаграмма и выберите Область с накоплением.
  • Эти данные можно заменить на любой другой тип данных для необходимой разбивки. Даты также можно использоваться для ограничения диапазона, а не использовать в качестве строк с датами.

Таблица 13 – Шаги: Пример отчета с трендом

Пример отчета с использованием руководства для трендов

Рисунок 4 – Пример, показывающий тренд по датам

Рисунок 5 – Пример, показывающий количество рабочих элементов для выбранного спринта

Рисунок 6 – Пример, показывающий задачи, назначенные на участников команды, для выбранного спринта и команды

Книга является вашей устрицей J со срезами, форматами и отчетами с тенденцией данных, которые необходимы для вашей команды.

<<Содержание

Advertisements

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

 
%d такие блоггеры, как: