DAX в заметках

Пример использования функции EARLIER

Синтаксис

EARLIER(column, [number])

Параметры

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

Возвращаемое значение

Текущее значение строки из столбца column на расстоянии в number внешних этапов вычисления.

Пример

=
COUNTROWS (
    FILTER (
        ProductSubcategory;
        EARLIER ( ProductSubcategory[TotalSubcategorySales] )
            < ProductSubcategory[TotalSubcategorySales]
    )
)
    + 1
  1. Функция EARLIER получает значение TotalSubcategorySales для текущей строки в таблице. В данном случае, поскольку процесс только начинается, это первая строка в таблице.
  2. EARLIER([TotalSubcategorySales]) дает результат $ 156 176.88 — текущая строка во внешнем цикле.
  3. Теперь функция FILTER возвращает таблицу, где все строки имеют значение TotalSubcategorySales, превышающее $ 156 176.88 (текущее значение EARLIER).
  4. Функция COUNTROWS подсчитывает строки отфильтрованной таблицы и присваивает новому вычисляемому столбцу в текущей строке полученное значение и прибавляет единицу 1.
  5. Формула вычисляемого столбца переходит к следующей строке, и шаги с 1 по 4 повторяются. Эти шаги повторяются до конца таблицы.
  6. Функция EARLIER всегда получает значение столбца перед выполнением текущей операции в таблице. Чтобы получить значение на более раннем этапе цикла, установите второй аргумент в значение 2.

Как в DAX отобразить положительные числа со знаком плюс?

Ответ: Используйте пользовательские числовые форматы для функции FORMAT

Пример

  • В качестве примера возьмем таблицу Entry с положительными и отрицательными значениями:
Value
- 10
0
10
  • Для простоты примера сделаем вспомогательную, среднее значение:
AvgValue = 
  AVERAGE( Entry[Value] )
  • Напишем формулу:
FormatValue = 
    IF( [AvgValue] = 0;
        "0";
        FORMAT( [AvgValue]; "+#,##0;-#,##0" )
    )
  • В результате получим таблицу вида:
Value FormatValue
- 10 - 10
0 0
10 + 10

Комментарии

  • Подробное описание функции FROMAT см. в статье пользовательские числовые форматы для функции FORMAT

  • Так как для второго параметра нет форматирование нуля использовал функцию IF. Если не использовать функцию IF для обработки нулевого значения получиться 0 с плюсом. Что может быть не приемлемо для бизнес правил.

  • Обратите внимание, что правила форматирования чисел очень похожи на правила форматирование чисел в Excel.


  1. Прибавлять единицу необходимо, чтобы предотвратить появление пустого значения в качестве значения с верхним рангом. ↩︎

Следующий