Поделиться через


Добавление меры во времени в отчет Power BI

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Время, которое рабочий элемент тратит в определенном состоянии рабочего процесса или ряде состояний, является важным аспектом для понимания эффективности. Мини-приложения "Аналитика времени цикла" и "Аналитика времени выполнения" предоставляют некоторые метрики нахождения в состоянии. Однако эти мини-приложения могут не иметь нужный уровень детализации.

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

Count Описание
Количество рабочих элементов (мера) Вычисляет количество отдельных рабочих элементов на основе последней записи рабочего дня для рабочего элемента
Порядок сортировки состояния Добавляет столбец для сортировки состояний рабочих процессов в соответствии с последовательностью категории состояния State Category
Предыдущая дата Добавляет столбец, вычисляющий предыдущую дату на основе столбца Date
Разница дат в днях Добавляет столбец, вычисляющий количество дней между столбцами Date и Date Previous
Последний день в штате Добавляет столбец, который определяет, является ли значение даты последним днем, когда рабочий элемент находился в State.
Продолжительность состояния в днях Добавляет столбец, вычисляющий количество дней, затраченных на рабочий элемент в каждом состоянии
Предыдущее состояние Добавляет столбец, определяющий предыдущее состояние для каждой строки в таблице данных.
Изменено состояние Добавляет столбец, определяющий дату перехода рабочего элемента из одного состояния в другое
State Flow Добавляет столбец, иллюстрирующий поток состояния как рабочий элемент переходит с одного состояния на другое
Количество изменений состояния Добавляет столбец, который вычисляет количество переходов рабочего элемента из одного состояния в другое.
Количество изменений состояния — первое завершенное Добавляет столбец, определяющий количество переходов рабочего элемента в состояние "Завершено" в первый раз. Другими словами, при переходе из любого другого состояния в состояние "Завершено".
Число изменений состояния — последнее предложенное Добавляет столбец, определяющий, был ли рабочий элемент ранее в состоянии "Предложено" после перехода в более позднее состояние.
Время перезапуска системы в днях Добавляет столбец, вычисляющий дни рабочего элемента, потраченного в состоянии перезапуска
Время перерабочих состояний в днях Добавляет столбец, вычисляющий дни, которые рабочий элемент тратит в состоянии, отличном от завершенного

Внимание

  • При добавлении вычисляемого столбца или меры в соответствии с примерами, показанными в этой статье, замените Имя представления на имя таблицы аналитического представления или таблицы данных. Например, замените Название представления на Активные ошибки.
    Снимок экрана: вкладка
  • Аналитика не поддерживает внутридневные изменения. Эти примеры имеют наибольшую точность при использовании интервала Ежедневно для представления Аналитики.
  • Внутридневные или внутрипериодные (еженедельные/ежемесячные) пересмотры игнорируются при вычислениях. Это может привести к непредвиденным результатам для определенных сценариев, таких как рабочий элемент, показывающий отсутствие времени "В процессе", когда рабочий элемент находится в статусе "Выполняется" менее одного дня.
  • Агрегации по умолчанию Power BI используются всякий раз, когда это возможно, вместо создания мер.
  • Некоторые вычисления включают +0 , чтобы обеспечить включение числового значения для каждой строки вместо BLANK.
  • Возможно, потребуется пересмотреть некоторые определения вычисляемого столбца на основе состояний рабочего процесса, используемых проектом. Например, если в вашем проекте используются Новая, Активная и Закрытая вместо Предлагается, В процессе и Завершено.
  • Столбец Date , упомянутый в этой статье, не является собственным столбцом в Azure DevOps; Это производный столбец, созданный в PowerBI для упрощения отчета о времени в состоянии . Этот столбец можно создать с помощью существующих столбцов, связанных с датой, например "Измененная дата" или "Дата изменения состояния".

Предварительные требования

Категория Требования
Уровни доступа - член проекта.
— По крайней мере базовый доступ уровня .
Права доступа По умолчанию члены проекта имеют разрешение выполнять запросы к аналитике и создавать представления. Дополнительные сведения о других предварительных требованиях для включения служб и функций и общих действий отслеживания данных см. в разделе "Разрешения и предварительные требования для доступа к аналитике".

Примечание.

Чтобы воспользоваться всеми показателями времени пребывания в состоянии, описанными в этой статье, обязательно включите следующие поля в ваши представления Analytics, Power Query или OData-запрос: Созданная дата и Категория состояния, помимо полей по умолчанию: Путь области, Назначено, Путь итерации, Состояние, Название, ID рабочего элемента и Тип рабочего элемента.

Кроме того, рекомендуется использовать представление аналитики на основе ежедневной детализации. Примеры в этой статье основаны на представлении Active Bugs Analytics, определенном в Создании отчёта об активных ошибках в Power BI на основе пользовательского аналитического представления, за исключением того, что выбрано 60 дней истории и ежедневной гранулярности. Определите также, хотите ли вы просмотреть завершенные или закрытые рабочие элементы.

Добавить меру количества рабочих элементов

Чтобы упростить быстрое создание отчетов, мы разработали представления Аналитики для работы с агрегатами по умолчанию в Power BI. Чтобы проиллюстрировать разницу между агрегированием по умолчанию и мерой, мы начнем с простой меры количества рабочих элементов.

  1. Загрузите представление Аналитики в Power BI Desktop. Для получения подробной информации см. «Подключение с помощью соединителя данных Power BI», «Подключение к представлению аналитики».

  2. Выберите таблицу данных, а затем на вкладке "Средства таблиц" раздел "Вычисления" ленты выберите "Создать меру".

    Снимок экрана: вкладка

  3. Замените текст по умолчанию следующим кодом, а затем установите флажок.

    Work Items Count=CALCULATE(COUNTROWS ('View Name'),LASTDATE ('View Name'[Date]))
    

    Мера «Число рабочих элементов» использует функции DAX CALCULATE, COUNTROWS и LASTDATE, которые более подробно описаны далее в этой статье.

    Примечание.

    Не забудьте заменить View Name именем таблицы для аналитического представления. Например, мы заменим название представления на Активные ошибки.

    Снимок экрана: вкладка

Как мера отличается от вычисляемого столбца

Мера всегда вычисляет всю таблицу, в которой вычисляемый столбец зависит от одной строки. Дополнительные сведения см. в разделе "Вычисляемые столбцы и меры" в DAX.

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

Снимок экрана: страница отчета Power BI, две карточки с показателем количества рабочих элементов и свойством идентификатора рабочего элемента.

Чтобы получить правильное число, используя агрегирование по умолчанию, примените фильтр Текущий равно значению 'Истина.' Этот шаблон применения фильтров к агрегации по умолчанию является основой для многих примеров, приведенных в этой статье.

Снимок экрана: страница отчета Power BI, количество отфильтрованных идентификаторов рабочих элементов.

Добавление порядка сортировки состояния

По умолчанию Power BI отображает состояния, отсортированные по алфавиту в визуализации. Это может вводить в заблуждение, если вы хотите визуализировать время в состоянии, и Предложенное показывается после Выполнения. Следующие шаги помогут устранить эту проблему.

  1. Убедитесь, что поле категории состояния включено в представление "Аналитика". Это поле включается во все общие представления по умолчанию.

  2. Выберите таблицу данных, а затем на вкладке "Средства таблиц" раздел "Вычисления" ленты выберите новый столбец.

    Снимок экрана: вкладка

  3. Замените текст по умолчанию следующим кодом, а затем установите флажок.

    State Sort Order =  
    SWITCH (  
        'View Name'[State Category],  
        "Proposed", 1,  
        "InProgress", 2,  
        "Resolved", 3,  
        4  
    )  
    

    См. следующий пример.

    Снимок экрана: вкладка

    Примечание.

    Возможно, потребуется пересмотреть определение, если требуется более подробная степень, чем предоставляет категория состояния. Категория состояния обеспечивает правильную сортировку по всем типам рабочих элементов независимо от настроек состояния .

  4. Откройте представление данных и выберите столбец "Состояние".

  5. На вкладке "Инструменты столбцов" выберите "Сортировка по столбцам", а затем выберите поле "Порядок сортировки состояния".

    Снимок экрана: вкладка

Добавить предыдущую дату

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

Date Previous  = 
PREVIOUSDAY ( 'View Name'[Date] )

Однако этот подход имеет две основные проблемы:

  • Это работает только для дневных периодов.
  • Он не обрабатывает пробелы в данных. Например, если рабочий элемент перемещается между проектами.

Чтобы устранить эти проблемы, вычисляемый столбец должен найти предыдущий день путем сканирования поля Date.

Чтобы добавить столбец "Дата предыдущего вычисления", на вкладке "Инструменты таблиц" выберите "Создать столбец ", а затем замените текст по умолчанию следующим кодом и установите флажок.

Date Previous =
CALCULATE (
    MAX ( 'View Name'[Date] ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] < EARLIER ( 'View Name'[Date] )
)

В вычисляемом столбце Date Previous используются три функции DAX: MAX, ALLEXCEPT и EARLIER, которые более подробно описаны позднее в этой статье. Так как столбец вычисляется, он выполняется для каждой строки в таблице и при каждом запуске он имеет контекст этой конкретной строки.

Снимок экрана: таблица Power BI и вкладка

Совет

В контекстном меню полей "Дата" и "Предыдущая дата" выберите "Дата" (вместо иерархии дат), чтобы просмотреть одну дату для этих полей.

Добавление диффа даты в днях

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

Внимание

Требуется, чтобы вы добавили рассчитанный столбец Date Previous в таблицу.

Важно рассмотреть первый день набора данных, если предыдущая дата пусто. В этом примере мы присвоим этой строке стандартное значение 1, чтобы обеспечить согласованность вычислений.

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

Date Diff in Days =
IF (
    ISBLANK ( 'View Name'[Date Previous] ),
    1,
    DATEDIFF (
        'View Name'[Date Previous],
        'View Name'[Date],
        DAY
    )
)

В этом вычисляемом столбце используются ISBLANK функции DAX, DATEDIFF описанные далее в этой статье.

Добавить "Последний день в состоянии"

На следующем шаге мы вычисляем, является ли указанная строка последним днем, когда конкретный рабочий элемент находился в определённом состоянии. Он поддерживает агрегирование по умолчанию в Power BI, которое мы добавим в следующем разделе, где мы добавим столбец "Время состояния в днях".

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

Is Last Day in State = 
ISBLANK (CALCULATE (
    COUNTROWS ( 'View Name' ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] > EARLIER ( 'View Name'[Date] ),
        'View Name'[State] = EARLIER ( 'View Name'[State] )
))

Добавить время состояния в днях

Время, которое рабочий элемент провел в определенном состоянии, теперь можно рассчитать, суммируя разницу дат в днях для каждого рабочего элемента. Это вычисление включает все время, затраченное на определенное состояние, даже если оно переключилось между состояниями несколько раз. Можно оценивать каждую строку как тенденцию, используя Дату или последние данные, используя функцию "Последний день в состоянии".

Внимание

Требуется, чтобы вы добавили в таблицу вычисляемые столбцы Разница в датах в днях и Является ли последним днем в состоянии.

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

State Time in Days = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State] = EARLIER ( 'View Name'[State] )
) + 0

Создание трендовых столбчатых диаграмм с накоплением на основе времени нахождения в состоянии в днях

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

Снимок экрана: диаграмма столбцов с накоплением Power BI и вкладка

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

Снимок экрана: составная гистограмма Power BI и вкладка

Добавление времени состояния в днях — последнее (последнее время в состоянии)

При оценке времени нахождения в состоянии для каждого рабочего элемента в таблице или при фильтрации по полю, например, Путь области, не используйте столбец "Время состояния в днях" в агрегации. Агрегирование использует значение для каждого дня, когда рабочий элемент находился в данном состоянии. Например, если рабочий элемент был в процессе в понедельник и перешел завершен в четверг, время в данном состоянии составляет три дня, но сумма колонки времени состояния в днях составляет шесть дней, 1+2+3, что неправильно.

Добавление времени состояния в днях — последнее.

Чтобы устранить эту проблему, используйте время состояния в днях и примените фильтр Последний день в состоянии равно 'True'. Он устраняет все исторические данные, необходимые для тренда, и вместо этого фокусируется только на последнем значении для каждого состояния.

Используйте время состояния в днях и примените фильтр

Добавление времени состояния в днях — выполняется

В предыдущих примерах время состояния в днях для заданного рабочего элемента учитывается только в том случае, если рабочий элемент находился в этом конкретном состоянии. Если ваша цель состоит в том, чтобы время пребывания в состоянии для данного рабочего элемента непрерывно учитывалось при вычислении среднего значения, необходимо изменить вычисление. Например, если мы хотим отслеживать состояние "Выполняется", мы добавим вычисляемый столбец Время состояния в днях — Выполняется.

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

State Time in Days - In Progress = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
   'View Name'[Date] <= EARLIER('View Name'[Date]),
   'View Name'[State] = "In Progress"
) + 0

Примечание.

Возможно, потребуется изменить определение на основе состояний рабочего процесса, используемых проектом. Например, проект, используемый в примерах в этой статье, использует состояние рабочего процесса "In Progress", однако процессы Agile, Scrum и CMMI обычно используют состояния "Активный" или "Зафиксирован" для представления работы. Общие сведения см. в разделе "Состояния рабочего процесса" и категории состояний.

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

Сравнение трендов среднего времени в состоянии

Время состояния в днях тенденции нескольких состояний

Анализ производительности в нескольких состояниях также возможен с помощью шаблона "Непрерывный". Однако этот подход работает только с диаграммой тренда.

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

State Time in Days - Working States = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
   'View Name'[Date] <= EARLIER('View Name'[Date]),
   'View Name'[State] IN { "Committed", "In Progress" }
) + 0

Примечание.

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

На диаграмме слева отображается объединенное среднее значение, а в правой части показано каждое отдельное состояние.

Сравнение трендов нескольких состояний

Получить состояние времени в днях — последние данные для нескольких состояний

При создании тренда вы используете вычисляемый столбец "время состояния в днях - последний". С фильтром по состояниям, "Время состояния в днях" и "Последний день в состоянии" предоставляют простой способ получить общее время, которое любой рабочий элемент или группа рабочих элементов провели в наборе состояний.

Последнее время в штатах

Добавить предыдущее состояние

Вычисляемый столбец Date Previous также можно использовать для поиска прошлых значений, таких как предыдущее состояние для каждого рабочего элемента.

Внимание

Требуется, чтобы вы добавили вычисляемый столбец «Предыдущая дата» в таблицу.

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

State Previous =
LOOKUPVALUE (
    'View Name'[State],
    'View Name'[Work Item Id], 'View Name'[Work Item Id],
    'View Name'[Date], 'View Name'[Date Previous]
)

Этот вычисляемый столбец использует LOOKUPVALUE, описанный далее в этой статье.

Первый LOOKUPVALUE параметр, 'View Name'[State] указывает на возвращение значения [State].

Следующий параметр 'View Name'[Work Item Id], 'View Name'[Work Item Id] указывает, что следует учитывать только те строки, идентификатор рабочего элемента которых совпадает с идентификатором текущей строки.

А последний параметр 'View Name'[Date], 'View Name'[Date Previous]указывает, что дата возвращаемой строки должна иметь значение [Дата], соответствующее [предыдущей дате] текущей строки. В моментальном снимке может соответствовать этим критериям только одна строка.

Состояние добавления изменено

С помощью столбца State Previous можно пометить строки для каждого рабочего элемента, в котором произошел переход состояния. Вычисляемый столбец "Изменение этапа" имеет два особых аспекта:

  • Пустые значения *State Previous, которые мы установили на дату создания рабочего элемента
  • Создание рабочего элемента считается переходом состояния

Внимание

Требуется добавить в таблицу вычисляемый столбец "State Previous".

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

State Changed =
IF (
    ISBLANK ( 'View Name'[State Previous] ),
    'View Name'[Created Date].[Date] = 'View Name'[Date],
    'View Name'[State Previous] <> 'View Name'[State]
)

Вычисляемый столбец — это логическое значение, определяющее, является ли строка переходом состояния. Используя Not Equal To оператор, вы правильно перехватываете строки, в которых предыдущее состояние не соответствует текущему состоянию, что означает, что сравнение возвращает значение True, как ожидалось.

Добавить StateFlow

С помощью вычисляемых столбцов "Предыдущее состояние" и "Изменено состояние" можно создать столбец, иллюстрирующий поток состояния для заданного рабочего элемента. Создание этого столбца является необязательным для целей этой статьи.

Внимание

Требуется, чтобы вы добавили в таблицу вычисляемые столбцы Предыдущее состояние и Измененное состояние.

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

State Flow = 
IF([State Changed], [State Previous], [State]) & " => " & [State]

Добавить количество изменений состояния

При переходе на более сложные меры необходимо иметь представление общего количества изменений состояния для сравнения строк данных для заданного рабочего элемента. Мы получаем представление путем добавления вычисляемого столбца "Число изменений состояния".

Внимание

Необходимо, чтобы вы добавили в таблицу вычисляемый столбец Изменение состояния.

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

State Change Count = 
CALCULATE (
    COUNTROWS ( 'View Name' ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State Changed]
) + 0

Добавить количество изменений состояния, последнее предложенное и время перезапуска состояния в днях.

Время перезапуска состояния в днях является довольно сложным вычислением. Первым шагом является поиск последнего рабочего элемента в предлагаемом состоянии. Добавьте счетчик изменений состояния — последний предлагаемый вычисляемый столбец.

Примечание.

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

На вкладке "Моделирование " выберите новый столбец , а затем замените текст по умолчанию следующим кодом и установите флажок.

State Change Count - Last Proposed = 
CALCULATE (
    MAX ( 'View Name'[State Change Count] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State] = "Proposed"
)

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

На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

State Restart Time in Days = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State Change Count] < EARLIER('View Name'[State Change Count - Last Proposed] ),
    'View Name'[State] <"Proposed"
) + 0

Так как время перезапуска состояния в днях обновляется для каждой строки данных, можно создать тенденцию для оценки переработки в определенных спринтах или проверить повторное выполнение отдельных рабочих элементов с помощью is Current.

Добавить время переработки состояния в днях

Аналогично времени перезапуска состояния в днях, время повторной работы состояния в днях показывает, когда рабочий элемент впервые был в категории "Завершенное состояние". После этого времени каждый день, который рабочий элемент проводит в состоянии, отличном от состояния 'Завершен', подлежит переработке.

  1. Создайте столбец "Число изменений состояния — первое завершение". Этот столбец отслеживает количество переходов рабочего элемента в состояние "Завершено" из любого другого состояния.

    State Change Count - First Completed =
    VAR CompletedState = "Completed"
    RETURN
    CALCULATE(
       COUNTROWS('YourTable'),
       FILTER(
           'YourTable',
           'YourTable'[State] = CompletedState
           && 'YourTable'[State Change Date] = MIN('YourTable'[State Change Date])
       )
    )
    
  2. На вкладке "Моделирование " выберите новый столбец и замените текст по умолчанию следующим кодом и установите флажок.

    State Rework Time in Days = 
    IF (
        ISBLANK ( 'View Name'[State Change Count - First Completed] ),
        0,
        CALCULATE (
            SUM ( 'View Name'[Date Diff in Days] ),
            ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
            'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
            'View Name'[State Change Count] <= EARLIER ( 'View Name'[State Change Count - First Completed] ),
            'View Name'[State] IN {"Completed", "Closed", "Cut" } = FALSE()
        ) + 0
    )
    

    Примечание.

    Возможно, потребуется изменить предыдущее определение на основе состояний рабочего процесса, используемых проектом. Например, если проект использует готово вместо "Закрыто" и т. д.

функций DAX;

Дополнительные сведения приведены в этом разделе для функций DAX, используемых для создания вычисляемых столбцов и мер, добавленных в этой статье. См. также DAX, функции временного интеллекта.

Функция Описание
ALLEXCEPT Удаляет все фильтры контекста в таблице, кроме фильтров, примененных к указанным столбцам. По сути, ALLEXCEPT ('View Name'', 'View Name'[Work Item Id]) уменьшает количество строк в таблице до тех, которые используют тот же идентификатор рабочего элемента, что и текущая строка.
CALCULATE Эта функция является основой почти для всех примеров. Базовая структура — это выражение, за которым следует ряд фильтров, применяемых к выражению.
COUNTROWS Эта функция COUNTROWS ( 'View Name' )просто подсчитывает количество строк, оставшихся после применения фильтров.
DATEDIFF Возвращает количество границ интервалов, пересекаемых между двумя датами. DATEDIFF Вычитает дату назад из даты , чтобы определить количество дней между ними.
EARLIER Возвращает текущее значение указанного столбца при внешней оценке этого столбца. Например, 'View Name'[Date] < EARLIER ( 'View Name'[Date] ) дополнительно сокращает набор данных до тех строк, которые записаны до даты текущей строки, указанной с помощью функции EARLIER. EARLIER не ссылается на предыдущие даты; он специально определяет контекст строки вычисляемого столбца.
ISBLANK Проверяет, является ли значение пустым и возвращает значение TRUE или FALSE. ISBLANK вычисляет текущую строку, чтобы определить, имеет ли дата назад значение. Если это не так, оператор If устанавливает Date Diff в днях на 1.
LASTDATE Мы применяем LASTDATE фильтр к выражению, например LASTDATE ( 'View Name'[Date] ), чтобы найти последнюю дату во всех строках таблицы и исключить строки, которые не используют одну и ту же дату. Используя таблицу моментальных снимков, созданную аналитическим представлением, этот фильтр выбирает последний день выбранного периода.
LOOKUPVALUE Возвращает значение в result_columnName для строки, которая соответствует всем критериям, заданным search_columnName и search_value.
MAX Возвращает наибольшее числовое значение в столбце или между двумя скалярными выражениями. Для определения последней даты после применения всех фильтров мы применяем MAX ( 'View Name'[Date] ).