Учебники

Excel DAX — Операторы

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

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

Типы операторов DAX

DAX поддерживает следующие типы операторов —

Порядок приоритета оператора DAX

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

Приоритет оператора DAX по умолчанию приведен в следующей таблице.

Порядок приоритета Оператор (ы) операция
1 ^ Возведение
2 Знак
3 * а также / Умножение и деление
4 ! НЕ
5 + и — Сложение и вычитание
6 & конкатенация
7 =, <,>, <=,> = и <> Равно, меньше, больше, меньше или равно, больше или равно и не равно

Синтаксис выражения DAX

Сначала необходимо понять синтаксис выражения DAX и то, как выполняется оценка выражения с операндами и операторами.

  • Все выражения всегда начинаются со знака равенства (=). Знак равенства означает, что последующие символы составляют выражение.

  • Справа от знака равенства у вас будут операнды, связанные операторами DAX. Например, = 5 + 4> 5.

    = 5 * 6 — 3.

  • Выражения всегда читаются слева направо, и вычисления выполняются в этой последовательности на основе приоритета оператора DAX, приведенного в предыдущем разделе.

  • Если операторы DAX имеют одинаковое значение приоритета, они оцениваются слева направо. Например, = 5 * 6/10. И * и / имеют одинаковый порядок прецедента. Следовательно, выражение оценивается как 30/10 = 3.

  • Если операторы DAX в выражении имеют разные значения приоритета, то они оцениваются в порядке приоритета слева направо.

    • = 5 + 4> 7. Приоритет по умолчанию + первый и> следующий. Следовательно, выражение вычисляется слева направо. — Сначала вычисляется 5 + 4, в результате получается 9, а затем 9> 5, что дает ИСТИНА.

    • = 5 * 6 — 3. Приоритет по умолчанию * первый и — следующий. Следовательно, выражение вычисляется слева направо. — сначала вычисляется 5 * 6, в результате получается 30, а затем вычисляется 30 — 3, что приводит к 27.

    • = 2 * 5 — 6 * 3. Приоритет по умолчанию — * сначала, * затем, а затем -. Следовательно, выражение оценивается как 10 — 18, а затем как -8. Обратите внимание, что это не 10 — 6, в результате 4, а затем 4 * 3, что 12.

Все выражения всегда начинаются со знака равенства (=). Знак равенства означает, что последующие символы составляют выражение.

Справа от знака равенства у вас будут операнды, связанные операторами DAX. Например, = 5 + 4> 5.

= 5 * 6 — 3.

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

Если операторы DAX имеют одинаковое значение приоритета, они оцениваются слева направо. Например, = 5 * 6/10. И * и / имеют одинаковый порядок прецедента. Следовательно, выражение оценивается как 30/10 = 3.

Если операторы DAX в выражении имеют разные значения приоритета, то они оцениваются в порядке приоритета слева направо.

= 5 + 4> 7. Приоритет по умолчанию + первый и> следующий. Следовательно, выражение вычисляется слева направо. — Сначала вычисляется 5 + 4, в результате получается 9, а затем 9> 5, что дает ИСТИНА.

= 5 * 6 — 3. Приоритет по умолчанию * первый и — следующий. Следовательно, выражение вычисляется слева направо. — сначала вычисляется 5 * 6, в результате получается 30, а затем вычисляется 30 — 3, что приводит к 27.

= 2 * 5 — 6 * 3. Приоритет по умолчанию — * сначала, * затем, а затем -. Следовательно, выражение оценивается как 10 — 18, а затем как -8. Обратите внимание, что это не 10 — 6, в результате 4, а затем 4 * 3, что 12.

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

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

Например, = 5 * 6 — 3 оценивается как 27 с порядком приоритета оператора DAX по умолчанию. Если вы используете круглые скобки для группировки операндов и операторов как = 5 * (6 — 3), то сначала вычисляется 6 — 3, в результате получается 3, а затем 5 * 3, что приводит к 15.

= 2 * 5 — 6 * 3 — до -8 с порядком приоритета оператора DAX по умолчанию. Если вы используете круглые скобки для группировки операндов и операторов как = 2 * (5-6) * 3, то сначала вычисляется 5-6, что приводит к -1, а затем вычисляется 2 * (-1) * 3, что приводит к -6 ,

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

Различия между Excel и DAX

Хотя DAX имеет сходство с формулами Excel, между ними есть определенные существенные различия.

  • DAX является более мощным, чем Excel, из-за его основного механизма вычисления резидентной памяти.

  • DAX поддерживает больше типов данных, чем Excel.

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

DAX является более мощным, чем Excel, из-за его основного механизма вычисления резидентной памяти.

DAX поддерживает больше типов данных, чем Excel.

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

В некоторых случаях результаты вычислений или поведение функций в DAX могут отличаться от результатов в Excel. Это связано с различиями в следующем —

  • Тип данных приведение
  • Типы данных

Разница в приведении типов данных

В DAX, когда у вас есть оператор value2 value1, value2, два операнда value1 и value2 должны быть одного типа данных. Если типы данных отличаются, DAX сначала неявно преобразует их в общий тип данных. Подробнее см. Главу «Синтаксис DAX».

Например, вам нужно сравнить два операнда разных типов данных, скажем, число, полученное из формулы, например = [Amount] * 0,08 и целое число. Первое число может быть десятичным числом со многими десятичными разрядами, тогда как второе число является целым числом. Затем DAX обрабатывает это следующим образом:

  • Во-первых, DAX преобразует оба операнда в действительные числа, используя самый большой числовой формат, который может хранить оба вида чисел.

  • Далее DAX сравнит два действительных числа.

Во-первых, DAX преобразует оба операнда в действительные числа, используя самый большой числовой формат, который может хранить оба вида чисел.

Далее DAX сравнит два действительных числа.

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

Разница в типах данных

Порядок приоритетов операторов в DAX и Excel одинаков. Однако процент оператора (%) и диапазоны данных, которые поддерживает Excel, не поддерживаются DAX. Более того, DAX поддерживает таблицу как тип данных, что не имеет место в Excel.

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

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

Вы узнаете больше обо всем этом в следующих главах.