Данное краткое руководство предназначено для пользователей, начинающих работать с Power Pivot в Excel или с проектами табличной модели, созданными в SQL Server Data Tools. Это быстрое и простое введение в использование выражений анализа данных (DAX) для решения ряда основных задач по моделированию данных и аналитике. В этой статье объясняются термины, описываются возможные задачи и предлагаются вопросы для проверки ваших знаний. После прочтения статьи вы будете хорошо понимать базовые понятия DAX.
Что такое DAX?
DAX — это набор функций, операторов и констант, которые можно использовать в формуле или выражении, чтобы подсчитывать и возвращать одно или несколько значений. Говоря проще, DAX помогает создавать новую информацию из данных, уже имеющихся в модели.
Почему DAX — это полезно?
Создать книгу и импортировать в нее данные несложно. Можно даже создавать сводные таблицы или сводные диаграммы для отображения важной информации без применения формул DAX. Однако что, если необходимо, например, проанализировать критичные данные о продажах по нескольким категориям товаров для разных диапазонов дат? Или, например, требуется свести важные данные по инвентаризации из нескольких таблиц в разных источниках данных? Все эти, а также многие другие возможности предоставляют формулы DAX. Умение создавать эффективные формулы DAX поможет извлечь наибольшую пользу из данных. Располагая нужными данными, можно начинать решать реальные бизнес-задачи, влияющие на конечный итог. Это называется бизнес-аналитикой, овладеть которой помогает DAX.
Предварительные требования
Пользователь может уже быть знаком с созданием формул в Microsoft Excel. Эти знания помогут в освоении DAX, но даже если нет опыта работы с формулами Excel, описанные здесь основные понятия помогут сразу начать создавать формулы DAX и решать практические задачи по бизнес-аналитике.
Наибольшее внимание уделяется формулам DAX, применяемым в вычислениях. Необходимо предварительно ознакомиться с основными понятиями вычисляемых столбцов и мер (вычисляемых полей), которые описаны в справке Power Pivot. Также необходимо ознакомиться со средой и средствами разработки Power Pivot в Excel.
Образец книги
Для освоения DAX лучше всего создать несколько простых формул, применить их к реальным данным и посмотреть на результаты. В примерах и упражнениях данного руководства используется книга Contoso Sample DAX Formulas.xlsx. Ее можно скачать по ссылке http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. После скачивания книги на компьютер откройте ее, затем откройте окно Power Pivot.
Начнем!
Говоря о DAX, необходимо отметить три основополагающих понятия: синтаксис, функции и контекст. В DAX, разумеется, существуют и другие важные понятия, однако понимание этих трех концепций послужит наилучшим фундаментом для приобретения навыков DAX.
Синтаксис
Перед созданием собственных формул предлагаем ознакомиться с синтаксисом формул DAX. Синтаксис состоит из различных элементов, составляющих формулу (говоря проще, из правил написания формул). Рассмотрим простой пример формулы DAX, создающей новые данные (значения) для каждой строки в вычисляемом столбце Margin в таблице FactSales (цвета текста в формуле приводятся только в качестве иллюстрации).
Синтаксис этой формулы включает следующие элементы:
-
Оператор равенства (=) означает начало формулы, которая после вычисления возвратит результат или значение. Все формулы, вычисляющие значения, начинаются со знака равенства.
-
Ссылаемый столбец [SalesAmount] содержит уменьшаемые значения. Ссылка на столбец в формуле всегда заключена в квадратные скобки ([]). В отличие от формул Excel, которые ссылаются на ячейку, формула DAX всегда ссылается на столбец.
-
Математический оператор вычитания (-).
-
Ссылаемый столбец [TotalCost] содержит значения, которые требуется вычесть из значений в столбце [SalesAmount].
Для лучшего понимания формул DAX зачастую полезно перевести каждый из элементов формулы на повседневный язык. Например, данную формулу можно прочитать следующим образом.
В таблице FactSales для каждой строки вычисляемого столбца Margin вычисляем (=) значение путем вычитания (-)значений в столбце [TotalCost] из значений встолбце[SalesAmount].
Рассмотрим формулу другого типа, используемую в мере.
Синтаксис этой формулы включает следующие элементы:
-
Имя меры: «Сумма Sales Amount». Формулы для мер могут включать в себя имя меры, затем двоеточие, затем формулу вычисления.
-
Оператор равенства (=) означает начало формулы вычисления. При вычислении она возвращает результат.
-
Функция SUM складывает все числа в столбце [SalesAmount]. О функциях будет рассказано позже.
-
Внутри скобок () содержится один или несколько аргументов. Для каждой функции необходим минимум один аргумент. Аргумент служит для передачи значения функции.
-
Ссылаемая таблица FactSales.
-
Ссылаемый столбец [SalesAmount] в таблице FactSales. Этот аргумент указывает функции SUM на столбец с числами, которые требуется сложить.
Данную формулу можно прочитать следующим образом:
Для
меры
«Сумма Sales Amount» вычислить (=) сумму (SUM) значений в столбце [
SalesAmount
] в таблице
FactSales
.
При помещении в зону значений в списке полей сводной таблицы эта мера вычисляет и возвращает значения, определенные каждой ячейкой в сводной таблице, например Cell Phones in the USA.
Заметьте, что эта формула имеет ряд отличий от формулы, использованной нами для вычисляемого столбца Margin. В частности, в ней применена функция SUM. Функции предварительной записи формулы, выполняющие им более простые и сложные вычисления для работы со значениями даты и времени, текстом и т. д. О функциях будет рассказано позже.
В отличие от вышеупомянутого вычисляемого столбца Margin, в данном случае перед столбцом [SalesAmount] стоит таблица FactSales, к которой принадлежит столбец. Это называется полным именем столбца, потому что перед именем столбца добавляется имя таблицы. Для столбцов, на которые ссылаются в одной и той же таблице, присутствие в формуле имени таблицы необязательно. В некоторой степени это укорачивает сложные формулы, ссылающиеся на множество столбцов, и облегчает их чтение. Однако по возможности рекомендуется всегда включать имя таблицы в формулы мер, даже для столбцов в одной и той же таблице.
Примечание: Если имя таблицы содержит пробелы, зарезервированные ключевые слова или недопустимые символы, необходимо заключить его в одинарные кавычки. Также необходимо заключать в кавычки имена таблиц, содержащие любые символы вне диапазона алфавитно-цифровых символов ANSI, независимо от поддержки кодировки в локали.
Очень важно использовать правильный синтаксис в формулах. В большинстве случаев при неправильном синтаксисе будет возвращена ошибка. Иногда синтаксис может быть правильным, однако возвращаемые значения не будут соответствовать ожиданиям. Power Pivot (а также SQL Server Data Tools) включает в себя функцию IntelliSense, помогающую в выборе правильных элементов и тем самым позволяющую создавать формулы с правильным синтаксисом.
Создадим простую формулу. Данное упражнение поможет лучше изучить синтаксис формул и возможности функции IntelliSense в строке формул.
Задача: создание простой формулы для вычисляемого столбца
-
Если вы еще не находитесь в окне Power Pivot, в Excel на ленте Power Pivot нажмите кнопку Окно Power Pivot.
-
В окне Power Pivot щелкните таблицу (вкладку) FactSales.
-
Прокрутите до крайнего правого столбца, затем щелкните Добавить столбец в заголовке столбца.
-
Щелкните строку формул в верхней части окна конструктора моделей.
Курсор теперь находится в строке формул. В строке формул введите формулу для вычисляемого столбца или вычисляемого поля.
Обратите внимание на три кнопки слева от строки формул.
Эти три кнопки активны, когда активный курсор находится в строке формул. Крайняя левая кнопка X — кнопка отмены. Попробуйте нажать ее. Курсор больше не отображается в строке формул; кнопка отмены и кнопка с галочкой также исчезли. Попробуйте снова щелкнуть строку формул. Кнопка отмены и кнопка с галочкой снова отображаются. Это означает, что можно вводить формулу.
Кнопка с флажком служит для проверки формулы. Пока формула не введена, эта кнопка не представляет интереса. Мы вернемся к ней чуть позже.
Нажмите кнопку Fx. Появится новое диалоговое окно — «Вставка функции». В нем проще всего ввести формулу DAX. Чуть позже вы добавим в формулу функцию при создании меры; сейчас добавлять функцию в формулу вычисляемого столбца необязательно. Закройте диалоговое окно «Вставка функции».
-
В строке формул введите знак равенства (=), затем — открывающую квадратную скобку [. Появляется небольшое окно со всеми столбцами в таблице FactSales. Эта технология IntelliSense в действии.
Поскольку вычисляемые столбцы всегда создаются в активной таблице, нет необходимости указывать имя таблицы перед именем столбца. Прокрутите вниз, затем дважды щелкните [SalesQuantity]. Можно также прокрутить до имени желаемого столбца и нажать клавишу Tab.
Теперь курсор активен справа от [SalesQuantity].
-
Нажмите пробел, затем введите оператор вычитания (-) и еще один пробел.
-
Теперь введите еще одну открывающую квадратную скобку [. В этот раз выберите столбец [ReturnQuantity] и нажмите клавишу ВВОД.
Если возникла ошибка, внимательно проверьте синтаксис. При необходимости сравните синтаксис с формулой в ранее описанном вычисляемом столбце Margin.
После нажатия клавиши ВВОД для завершения формулы в строке состояния в нижней части окна Power Pivot отображается слово Вычисление. Процесс завершается быстро, хотя вычисляются новые значения для свыше трех миллионов строк.
-
Щелкните правой кнопкой мыши заголовок столбца и задайте ему новое имя NetSales.
Это все! Только что мы создали простую и в то же время очень эффективную формулу DAX. Для каждой строки в таблице FactSales формула NetSales вычисляет значение путем вычитания значения в столбце [ReturnQuantity] из значения в столбце [SalesQuantity]. Обратите внимание на фразу «для каждой строки». Это беглый взгляд на еще одно очень важное понятие в DAX — контекст строки. О контексте строки будет рассказано позже.
При введении оператора в формулу DAX очень важно иметь ввиду тип данных в используемых аргументах. Например, если ввести формулу «= 1 & 2», будет возвращено текстовое значение «12». Это происходит потому, что оператор-амперсанд (&) служит для объединения текста. DAX интерпретирует эту формулу следующим образом: вычислить результат, принимая значение 1 и добавляя значение 2 в виде текста. Теперь, если потребуется ввести = 1 + 2, то эту формулу DAX воспринимает следующим образом: вычислить результат, создав числовое значение 1 и добавив числовое значение 2. Разумеется, результатом является числовое значение «3». DAX вычисляет итоговые значения в зависимости от оператора в формуле, а не от типа данных столбцов, использующихся в аргументе. Типы данных в DAX очень важны, однако в целях данного краткого руководства не рассматриваются. Дополнительные сведения о типах данных и операторах в формулах DAX см. в разделе «Справочник DAX» (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x419) электронной документации.
Попробуем еще один вариант. В этот раз создадим меру путем ввода формулы с использованием IntelliSense. Не переживайте, если формула не совсем понятна. В данном случае важно научиться создавать формулу с правильным синтаксисом, используя несколько элементов.
Задача: создание формулы меры
-
В таблице FactSales щелкните любую пустую ячейку в области вычислений. Это область из пустых ячеек сразу под таблицей в окне Power Pivot.
-
В строке формул введите имя «Previous Quarter Sales:».
-
Введите знак равенства (=) для начала ввода формулы вычисления.
-
Введите первые три буквы CAL, затем дважды щелкните желаемую функцию. В данном примере мы будем использовать функцию CALCULATE.
-
Введите открывающую скобку ( для начала ввода аргументов, передаваемых функции CALCULATE.
Заметьте, что после ввода открывающей скобки технология IntelliSense подсказывает вам аргументы, необходимые для функции CALCULATE. Об аргументах будет рассказано чуть позже.
-
Введите первые несколько букв таблицы FactSales, а затем в списке дважды щелкните FactSales[Продажи].
-
Введите запятую (,) для указания первого фильтра, затем введите PRE и дважды щелкните функцию PREVIOUSQUARTER.
После выбора функции PREVIOUSQUARTER появляется еще одна открывающаяся скобка, указывая на необходимость еще одного аргумента; на этот раз для функции PREVIOUSQUARTER.
-
Введите первые три буквы Dim, а затем дважды щелкните DimDate[DateKey].
-
Закройте оба аргумента (для функции PREVIOUSQUARTER и для функции CALCULATE), введя две закрывающие скобки )).
Формула должна выглядеть следующим образом:
Previous Quarter Sales:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey]))
-
Нажмите кнопку с флажком в строке формул для проверки формулы. В случае возникновения ошибки проверьте каждый элемент синтаксиса.
Получилось! С помощью DAX мы только что создали довольно сложную меру. Эта формула подсчитает общую сумму продаж за прошлый квартал с учетом фильтров, применяемых в сводной таблице или диаграмме.
Только что был рассмотрен ряд важных аспектов формул DAX. Во-первых, в данной формуле были использованы две функции. Обратите внимание, что функция PREVIOUSQUARTER вложена в качестве аргумента, переданного функции CALCULATE. Формулы DAX могут содержать до 64 вложенных функций. Маловероятно, что какая-либо формула будет содержать такое количество вложенных функций. Фактически, ее будет очень непросто создать и отладить, и вряд ли она будет отличаться скоростью.
В данной формуле также использованы фильтры. Фильтры ограничивают диапазон элементов для вычисления. В данном случае был выбран один фильтр в качестве аргумента, который на самом деле является еще одной функцией. О фильтрах будет рассказано позже.
Наконец, была использована функция CALCULATE. Это одна из наиболее мощных функций в DAX. В процессе разработки моделей данных и создания более сложных формул эта функция используется очень часто. Подробное обсуждение функции CALCULATE выходит за рамки данного краткого руководства, однако следует обращать на нее особое внимание по мере обретения опыта работы с DAX.
Примечание: Как правило, для использования функций логики операций со временем в формулах DAX необходимо указывать уникальный столбец с датами с помощью диалогового окна «Пометить как таблицу дат». В книге Contoso DAX Formula Samples.xlsx, в качестве уникального столбца с датами выбран столбец DateKey в таблице DimDate.
Дополнительные баллы
Возможно, вы задайте вопрос: «Какая у меня простейшая формула DAX? Ответ на этот вопрос — формула, которая вам не нужно делать. Кроме того, это можно сделать с помощью стандартной агрегатной функции в мерах. Почти любая модель данных должна фильтровать и вычислять на основе совокупных данных. Например, функция СУММ в показателе Sum of Sales Amount, которую вы видели ранее, используется для с суммы всех чисел в определенном столбце. DAX включает несколько других функций, которые также агрегируются значения. Вы можете автоматически создавать формулы, используя стандартные агрегаты, с помощью функции автосортирования.
Дополнительная задача: создание формулы меры с использованием функции автосуммирования
-
Прокрутите таблицу FactSales до столбца ReturnQuantity и щелкните его заголовок, чтобы выделить весь столбец.
-
На вкладке Главная на ленте в группе Вычисления нажмите кнопку Автоумма.
Щелкните стрелку вниз рядом скнопкой Авто сумма и выберите среднее значение (обратите внимание на другие стандартные агрегатные функции, которые можно использовать).
Сразу же создается новая мера с именем «Среднее ReturnQuantity:», за которой следует формула =AVERAGE([ReturnQuantity]).
Просто, не правда ли? Конечно, не все формулы будут такими простыми. Однако с помощью функции автосуммирования можно быстро создавать простые формулы с помощью стандартных агрегатных вычислений.
Теперь уже должно было сложиться понимание синтаксиса, используемого в формулах DAX. Также, были рассмотрены некоторые очень полезные функции, в том числе IntelliSense и автосуммирование, которые помогут быстро создавать простые и точные формулы. Разумеется, о синтаксисе можно узнать намного больше. Хорошими источниками дополнительной информации является Справочник DAX и электронная документация по SQL Server.
Краткий тест по синтаксису
-
Что делает эта кнопка в панели формул?
-
Что всегда окружает имя столбца в формуле DAX?
-
Как создать формулу для следующей формулы: в таблице
DimProductдля каждой строки в вычисляемом столбце UnitMargin вычисляется значение путем вычитания значений в столбце UnitCostиз значений в столбце UnitPrice?
Ответы приведены в конце данного раздела.
Функции
Функции представляют собой стандартные формулы, которые производят вычисления, используя конкретные значения, называемые аргументами и указанные в определенном порядке. Аргументом может быть другая функция, другая формула, ссылка на столбец, число, текст, логическое значение (например, TRUE или FALSE) или константа.
В DAX предусмотрены следующие категории функций: дата и время, сведения, математические, логические, статистические, текст и функции логики операций со временем. Для пользователей, ранее работавших с функциями в формулах Excel, большая часть функций в DAX будет знакома; однако функции DAX имеют следующие отличия:
-
Функция DAX всегда ссылается на столбец или таблицу целиком. В формулу можно добавить фильтры, чтобы использовать только определенные значения из таблицы или столбца.
-
Если требуется построчная настройка вычислений, DAX предоставляет функции, в которых можно использовать текущее значение строки или связанное значение в качестве своеобразного аргумента, для выполнения вычислений в зависимости от контекста. О контексте будет рассказано позже.
-
DAX имеет множество функций, возвращающих таблицу вместо значения. Таблица не отображается, но используется для передачи данных другим функциям. Например, можно получить таблицу и затем подсчитать уникальные значения в ней или вычислить динамические суммы по отфильтрованным таблицам или столбцам.
-
DAX содержит множество различных функций логики операций со временем. Они позволяют определять или выбирать диапазоны дат и на их основе выполнять динамические вычисления. Например, можно сравнить суммы по параллельным периодам.
Иногда трудно понять, какие функции могут понадобиться в формуле. В Power Pivot и конструкторе табличных моделей в SQL Server Data Tools есть кнопка «Вставить функцию», открывающая диалоговое окно, где можно выбирать функции по категориям и просматривать их краткое описание.
Давайте создадим новую формулу, которая содержит функцию, выбранную с помощью кнопки «Вставить функцию».
Задача: добавление функции в формулу с помощью кнопки «Вставить функцию»
-
Прокрутите таблицу FactSales до правого столбца, а затем в его заглавной области выберите добавить столбец.
-
В строке формул введите знак равенства (=).
-
Нажмите кнопку Вставить функцию. откроется диалоговое окно Вставка функции.
-
В диалоговом окне Вставка функции щелкните список Выберите категорию. По умолчанию выбрано значение Все, и ниже перечислены все функции в категории Все. Это большое количество функций, поэтому функции следует отфильтровать, чтобы легче найти желаемый тип функции.
-
Для данного примера нужно вернуть данные, уже присутствующие в другой таблице. Для этого будет использована функция из категории Фильтры. Щелкните категорию Фильтр, а затем в области Выбор функции прокрутите список вниз и дважды щелкните функцию RELATED. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Вставка функции.
-
Воспользуйтесь технологией IntelliSense, чтобы найти и выбрать столбец DimChannel[ChannelName].
-
Закройте формулу и нажмите клавишу ВВОД.
-
После нажатия клавиши ВВОД для завершения формулы в строке состояния в нижней части окна Power Pivot отображается слово Вычисление. Мы только что создали новый столбец в таблице FactSales со сведениями о канале из таблицы DimChannel.
-
Задайте для столбца новое имя Channel.
Формула должна выглядеть следующим образом: =RELATED(DimChannel [ChannelName])
Вы только что впервые впервые стали работать с другой очень важной функцией DAX , функцией RELATED. Функция RELATED возвращает значения из другой таблицы. Функцию RELATED можно использовать, если существует связь между текущей таблицей и таблицей, содержащей желаемые значения. Разумеется, возможности функции RELATED очень обширны. В данном случае можно добавить в таблицу FactSales канал продаж для каждой продажи. Теперь можно скрыть таблицу DimChannel из списка полей сводной таблицы; это упростит просмотр и позволит отображать только самые важные и нужные сведения. Как и вышеописанная функции CALCULATE, функция RELATED очень важна, и, скорее всего, будет использоваться неоднократно.
Как видно, функции в DAX позволяют создавать очень эффективные формулы. Пока что были рассмотрены лишь основы функций. По мере обретения навыков DAX можно будет создавать формулы с множеством разных функций. Сведения обо всех функциях DAX лучше всего узнать в справочнике по выражениям анализа данных (DAX).
Краткий тест по функциям
-
На что всегда ссылается функция?
-
Может ли формула содержать более одной функции?
-
Какая категория функций подходит для объединения двух текстовых строк в одну строку?
Ответы приведены в конце данного раздела.
Контекст
Контекст является одним из важнейших понятий в DAX. Существуют два типа контекста в DAX: контекст строки и контекст фильтра. Вначале рассмотрим понятие контекста строки.
Контекст строки
Контекст строки проще всего рассматривать как текущую строку. Помните, например, вычисляемый столбец Margin, описанный ранее в ходе ознакомления с синтаксисом? Формула « =[SalesAmount] — [TotalCost] » вычисляет значение в столбце Margin для каждой строки в таблице. Значения для каждой строки вычисляются из значений в двух других столбцах в той же строке, [SalesAmount] и [TotalCost]. С помощью DAX можно определить значения для каждой строки в столбце Margin благодаря наличию контекста: для каждой строки в столбце принимаются значения в столбце [TotalCost] и удаляются из значений в столбце [SalesAmount].
В выбранной ячейке, приведенной ниже, значение $49,54 в текущей строке было вычислено путем вычитания значения $51,54 в столбце [TotalCost] от значения $101,08 в столбце [SalesAmount].
Контекст строки применяется не только к вычисляемым столбцам. Контекст строки также применяется в случаях, когда формула имеет функцию, применяющую фильтры для определения одной строки в таблице. По существу функция будет применять контекст строки для каждой строки фильтруемой таблицы. Этот тип контекста строки чаще всего применяется к мерам.
Контекст фильтра
Контекст фильтра немного сложнее понять, чем контекст строки. Контекст фильтра проще всего определить как один или несколько фильтров, применяемых в вычислениях, которые определяют результат или значение.
Контекст фильтра не заменяет контекст строки; скорее, он применяется в дополнение к контексту строки. Например, чтобы еще больше ограничить диапазон значений в вычислении, можно применить контекст фильтра, который не только задает контекст строки, но также задает только конкретное значение (фильтр) в данном контексте строки.
Контекст фильтра хорошо заметен в сводных таблицах. Например, при добавлении TotalCost в область Values и последующем добавлении Year и Region в строку или в столбцы, задается контекст фильтра, который выбирает подмножество данных в зависимости от данного года и региона.
Почему контекст фильтра так важен в DAX? Потому что если контекст фильтра проще всего применить путем добавления срезов и меток столбцов и строк в сводную таблицу, его также можно применить в формуле DAX путем задания фильтра с использованием таких функций, как ALL, RELATED, FILTER и CALCULATE, а также с помощью связей и других мер и столбцов. Например, рассмотрим следующую формулу в мере StoreSales:
Эта формула явно сложнее, чем некоторые другие формулы, которые были рассмотрены ранее. Однако, чтобы лучше понять эту формулу, можно разбить ее на составляющие так же, как это было с другими формулами.
Синтаксис этой формулы включает следующие элементы:
-
Имя меры StoreSales с последующим двоеточием (:).
-
Оператор равенства (=) означает начало формулы.
-
Функция CALCULATE вычисляет выражение в качестве аргумента, в контексте, измененном заданными фильтрами.
-
Внутри скобок () содержится один или несколько аргументов.
-
Мера [Sales] в той же таблице в виде выражения. Мера Sales содержит формулу: =SUM(FactSales[SalesAmount]).
-
Фильтры разделены между собой запятыми (,).
-
Столбец, на который указывает ссылка, и конкретное значение, DimChannel[ChannelName] =”Store”, в качестве фильтра.
Данная формула гарантирует, что только значения продаж, определенные мерой Sales в качестве фильтра, вычисляются только для строк в столбце DimChannel[ChannelName] со значением «Store» в качестве фильтра.
Как можно представить, возможность задания контекста фильтра в формуле дает обширные и эффективные возможности. Возможность ссылки только на конкретное значение в связанной таблице — это лишь один пример. Не переживайте, если не удается сразу полностью усвоить понятие контекста. В процессе создания собственных формул появится понимание контекста и его важной роли в DAX.
Краткий тест по контексту
-
Как называются два типа контекста?
-
Что такое контекст фильтра?
-
Что такое контекст строки?
Ответы приведены в конце данного раздела.
Сводка
Теперь, когда вы получили общее представление об основных понятиях DAX, вы можете приступить к созданию собственных формул DAX для вычисляемых столбцов и мер. DAX может показаться сложным, но существует множество ресурсов, помогающих освоить его. Прочтите эту статью несколько раз и поэкспериментируйте с собственными формулами, а затем переходите к другим основным понятиям и формулам DAX, которые помогут в решении конкретных бизнес-задач. Существует множество ресурсов по DAX: справка по Power Pivot, электронная документация на SQL Server, технические документы и блоги сотрудников Майкрософт и ведущих специалистов в области бизнес-аналитики. Отличной отправной точкой является вики-сайт Центра ресурсов DAX (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx). Справочник по выражениям анализа данных (DAX) также является отличным ресурсом. Не забудьте добавить его в закладки.
Технический документ «DAX в табличной модели бизнес-аналитики», доступный для загрузки по ссылке http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x419, содержит более подробное описание рассмотренных здесь основных понятий, а также многих других расширенных понятий и формул. В нем также используется книга Contoso DAX Sample Formulas.xlsx, которая была загружена для этого занятия.
Ответы на вопросы кратких тестов
Синтаксис:
-
Открывает диалоговое окно «Вставка функции».
-
Квадратные скобки [].
-
=[UnitPrice] – [UnitCost]
Функции:
-
На таблицу и столбец.
-
Да. Формула DAX может содержать до 64 вложенных функций.
-
Текстовые функции.
Контекст:
-
Контекст строки и контекст фильтра.
-
Один или несколько фильтров в вычислении, определяющем одно значение.
-
Текущая строка.
DAX-формулы или Data Analysis Expressions — выражения для анализа данных в Microsoft Power BI, в Analysis Services и Power Pivot в Excel. DAX-формулы позволяют, по аналогии с формулами Excel, выполнять вычисления и настраивать произвольную фильтрацию и представление данных в таблицах.
Язык DAX есть в следующих приложениях:
Впервые DAX-формулы появились в Excel 2010 года во внешней com-надстройке Power Pivot. С тех пор этот язык становится все более популярным, и если раньше о DAX слышали только единицы, то сейчас он широко применяется в бизнес-аналитике и проектировании моделей. Поэтому DAX-формулы вам точно пригодятся для продвинутого анализа.
В этой статье описание DAX приводится для Power Pivot в Excel и Power BI.
Строение DAX-формул
DAX-формулы очень похожи на обычные формулы Excel. Многие из них записываются одинаково, например, «сумма»-SUM и «если»-IF. Но сами вычисления работают по-разному: в отличие от обычного Excel, в языке DAX нет расчетов по ячейкам. DAX-формулы обращаются сразу к таблицам и столбцам целиком. Примерно похожий способ вычислений есть и в «обычном» Excel – с помощью формул массивов. И если вы работали с форматированными smart-таблицами, то чтобы лучше понять DAX, вспомните, как в них выглядят ссылки – название столбца в квадратных скобках.
В DAX-формулах почти также: названия таблиц обычно пишут в одинарных кавычках (или без кавычек, если имя таблицы написано латинскими буквами без пробелов и цифр в начале). Названия столбцов пишут в квадратных скобках:
'
Имя таблицы'
[Название столбца] или TableName[Название столбца]
Математические операторы:
& + — / * = > < () и их сочетания дают тот же эффект, что в Excel.
Логические операторы:
- && — аналог формулы И (AND)
- || — аналог ИЛИ (OR)
- IN – поиск элемента в списке
- NOT – логическое отрицание, аналог формулы НЕ.
Вычисляемые столбцы, меры и таблицы
С помощью DAX-формул в Power BI можно создавать:
- вычисляемые столбцы;
- меры;
- вычисляемые таблицы.
В Excel есть только вычисляемые столбцы и меры.
Понятия столбцов и мер – основы работы с DAX. Давайте разберемся, что это такое.
Вычисляемый столбец – это столбец, который добавляется в существующую таблицу, а DAX-формула определяет значения этого столбца.
Как и обычные столбцы в модели данных, вычисляемые столбцы можно использовать в других вычислениях. А также для создания связей между таблицами, для построения визуализаций и срезов. В сводных таблицах вычисляемые столбцы можно помещать в области фильтров, колонок, строк и значений.
Если данные в вашем файле загружаются в режиме импорта, то столбец рассчитывается и записывается в файл при загрузке и обновлении данных, увеличивая размер файла. Вычисляемые столбцы лучше использовать, когда нужен текст, дата или когда вычисление зависит от соседних колонок.
Вычисляемые столбцы создаются просто, как в Power Pivot, так и в Power BI: добавляется новый столбец, пишется «равно» и формула.
в Power Pivot
в Power BI
Чтобы обратиться к вычисляемому столбцу в других вычислениях, нужно написать имя таблицы, в которой он находится, и название самого столбца. Например, '
Таблица'
[Столбец]
Меры – это динамические вычисления, результаты которых рассчитываются в зависимости от контекста. Результат вычисления меры можно увидеть в отчете, где мы задаем в каком именно контексте (в разрезе каких полей, фильтров и др.) нужно посчитать меру.
Как создать меру:
- В Excel меры записывают в окне Power Pivot в области для вычислений под таблицей: выберите ячейку, введите название меры и знак :=
Или в меню Power Pivot → Меры → Создать меру. - Чтобы создать меру в Power BI, нажмите Главная → Создать меру (или нажать правой кнопкой мышки в области полей по таблице → Создать меру).
в Power Pivot
в Power BI
При создании мер нужно обязательно использовать агрегирующие функции, например суммирования SUM. Мера не может быть создана просто как обращение к столбцу таблицы:
-
Так не работает: прибыль:= '
Данные'
[выручка] —
'
Данные'
[расходы]
+ Так работает: прибыль:= SUM('
Данные'
[выручка]) – SUM('
Данные'
[расходы])
Меры лучше создавать, когда нужны числовые вычисления, например, для промежуточных итогов, вычисления процентов, доли продукта в группе и так далее. Меры можно использовать для вычисления других мер и столбцов. При оформлении отчетов и сводных таблиц меры добавляются только в область значений.
Чтобы использовать меру в других вычислениях, ее название пишут в квадратных скобках.
Пример: МераВ = [МераА] + 100
Примечание о записи формул и разделителей:
- В Power BI формулы записывают с помощью знака равно = и разделителей-запятых.
Пример: Мера = IF( [kpi]>100, [a], [b])
В настройках Power BI есть возможность выбрать, какой именно разделитель использовать в формулах – запятую или точку с запятой.
- В Power Pivot разделителем в формулах может быть запятая «,» или точка с запятой «;» в зависимости от региональных настроек.
Вычисляемые столбцы записывают с помощью знака =
При создании меры пишут её название и знак :=
Пример: Мера:= IF( [kpi]>100; [a]; [b])
Базовые DAX-формулы
В языке DAX существует множество формул или функций, позволяющих выполнять продвинутые аналитические вычисления. Эти функции относятся к разным группам — агрегирующие, логические, математические, для работы с текстом, со временем и др. Полный список функций можно посмотреть на сайте Microsoft. Для начала разберем наиболее часто встречающиеся (на наш взгляд) формулы.
SUM суммирует числа в столбце. Её аналог в Excel – формула СУММ.
Синтаксис формулы очень простой:
SUM — это базовая формула, а всё потому что вычисления, связанные с цифрами, в DAX делаются с помощью мер. Нельзя просто так взять и обратиться к цифрам какого-то столбца напрямую. Придется это сделать с помощью какой-то агрегирующей формулы, чаще всего – с помощью SUM. Так что эта формула не только считает сумму, без нее в принципе мало какие расчёты работают )
2. BLANK
Формула BLANK возвращает пустое значение. Пустое значение в DAX – это отсутствие значения, а не привычный нам в Excel 0 (ноль) или пустая строка («»).
Записывается формула очень просто:
Никаких аргументов у нее нет.
Формулы BLANK нет в Excel, но в вычислениях с DAX она используется очень часто. Для чего нужна формула BLANK? Она помогает скрыть в отчетах ненужные значения.
3. IF
Формула IF – это логическая формула, аналог ЕСЛИ в Excel. Она проверяет условие и, если условие выполнено, возвращает одно значение, иначе – другое значение.
Синтаксис формулы:
IF(<условие>, <значение если истина>[, <значение если ложь>])
Какой же анализ данных может обойтись без логических формул? При всей важности формулы IF, используется она не так часто, как может показаться. Потому что во многих DAX-вычислениях её заменяют формулы фильтрации, о которых мы расскажем позже.
4. DIVIDE
Формула DIVIDE – формула для улучшенного деления.
Несмотря на то, что в DAX есть привычный нам оператор деления / , формула DIVIDE лучше. Она удобнее и в ней не надо делать проверку ошибки деления на ноль. Формула сама всё проверит и заменит ошибку на пустое значение.
Синтаксис формулы:
DIVIDE(<числитель>, <знаменатель> [, <альтернативный результат>])
<альтернативный результат> — это значение, которое будет выводиться, когда деление на ноль приводит к ошибке. Его указывать необязательно, по умолчанию формула возвращает пустое значение.
5. MIN и MAX
Формулы MIN и MAX – это агрегирующие формулы. Они находят минимальное и, соответственно, максимальное значение из столбца или из двух выражений (выражение должно вычислять единичное значение).
MIN(<столбец>) MIN(<выражение1>, <выражение2>) |
MAX(<столбец>) MAX(<выражение1>, <выражение2>) |
Если вы думаете, что эти формулы нужны для поиска наименьшего или наибольшего значения показателя, то вы правы. А еще MIN и MAX часто применяются в вычислениях, связанных с датами. То есть они вам точно пригодятся – выписываем и берем на вооружение!
6. DISTINCTCOUNT
DISTINCTCOUNT – полезная формула. Она подсчитывает количество уникальных значений в столбце таблицы.
Синтаксис формулы:
С помощью этой формулы можно узнать, например, сколько покупателей сделали покупки или количество уникальных заказов, по которым велась работа. И многое другое.
7. COUNTROWS
Формула COUNTROWS считает количество всех строк в таблице. В отличие от предыдущей формулы, она считает все подряд строки, а не только уникальные значения. С помощью этой формулы можно узнать, например, число всех транзакций за период.
Синтаксис формулы:
Кстати, COUNTROWS умеет считать строки не только в простой таблице, но и в таблице, заданной каким-то выражением, например, с помощью фильтрации. Для подсчета пустых ячеек используется формула COUNTBLANK.
Давайте разберем, какие еще вычисления можно делать с помощью DAX.
Функции агрегирования
Как мы уже говорили, в DAX-формулах для обращения к данным нужно писать формулы агрегирования, такие как SUM, MAX и MIN. Также часто встречаются AVERAGE и COUNT – среднее и количество.
Кроме таких формул существуют еще другие, похожие на них с окончаниями «А» и «Х». Функции с «A» на конце обрабатывают непустые ячейки. Формулы с «X» позволяют выполнять вычисления по строкам.
Что считать | Вычисления по таблице | Вычисления для непустых значений (A) | Вычисления для каждой строки таблицы (Х) |
Сумма | SUM | SUMX | |
Среднее | AVERAGE | AVERAGEA | AVERAGEX |
Максимум | MAX | MAXA | MAXX |
Минимум | MIN | MINA | MINX |
Количество | COUNT | COUNTA | COUNTX |
Для чего нужны построчные вычисления в формулах с «X»? Если создать меру так:
Мера = SUM('
Данные'
[Цена]) * SUM('
Данные'
[Количество]), вычисления будут некорректные.
Необходимы вычисления по строкам:
Мера = SUMX('
Данные'
; [Цена] * [Количество])
Логические функции
Логические функции в DAX довольно просты для понимания. Они выполняют то же, что в «обычном» Excel. Чтобы вам было проще разобраться, собрали в таблице часто используемые логические функции.
Формула | Что делает | Похожая формула Excel |
IF | проверка выполнения условия | ЕСЛИ |
AND, && | проверяет, все ли аргументы истинные | И |
OR, || | проверяет, есть ли хотя бы один аргумент, равный TRUE | ИЛИ |
NOT | меняет логическое значение на противоположное | НЕ |
TRUE, FALSE | значения Истина и Ложь | ИСТИНА, ЛОЖЬ |
IFERROR | проверяет, нет ли ошибки | ЕСЛИОШИБКА |
SWITCH | аналог формулы IF, более удобный для множественных условий | ВЫБОР |
В пояснении нуждаются только две последние формулы — IFERROR и SWITCH.
Если формула в некоторых случаях выдает ошибку, ее можно «перехватить» с помощью IFERROR. Хотя лучше сразу проверять данные на ошибки — до выполнения расчетов.
БезОшибки = IFERROR( [Цена] * [Количество] ; BLANK() )
Формула SWITCH может выбрать 255 вариантов значений в зависимости от того, чему равна влияющая ячейка.
Например, мы можем записать формулу для времени года так:
Время года = IF( MONTH([Дата])=1; "
Зима"
; IF( MONTH([Дата])=2; "
Зима"
; IF( MONTH([Дата])=3; "
Весна"
; IF(MONTH([Дата])=4; "
Весна"
; … )
и так далее – даже если мы используем OR, легче не станет.
Со SWITCH все проще:
Время года =
SWITCH(
MONTH([Дата]);
1; "
Зима"
;
2; "
Зима"
;
3; "
Весна"
;
4; "
Весна"
; … )
и так далее – уже проще и понятнее.
Математические функции
Чтобы хорошо разобраться в математических формулах, вспомните, какие именно из них вы чаще всего применяете в вычислениях и найдите аналогичные в DAX. Про формулы SUM и DIVIDE мы уже писали, а далее в таблице собраны другие популярные формулы.
Формула | Что делает | Похожая формула Excel |
ABS | находит модуль числа | ABS |
SIGN | определяет знак числа | ЗНАК |
POWER | возведение в степень | СТЕПЕНЬ |
SQRT | находит квадратный корень | КОРЕНЬ |
QUOTIENT | возвращает только целую часть деления | ОТБР |
RANDBETWEEN | возвращает случайное число в диапазоне между двумя числами | СЛУЧМЕЖДУ |
ROUND | округление до заданного числа десятичных разрядов | ОКРУГЛ |
ROUNDUP | округление в большую сторону | ОКРУГЛВВЕРХ |
ROUNDDOWN | округление в меньшую сторону | ОКРУГЛВНИЗ |
Текстовые функции
Текстовые функции в DAX основаны на аналогичным списке функций в Excel. Наиболее часто используемые функции собраны в таблице.
Формула | Что делает | Похожая формула Excel |
CONCATENATE, CONCATENATEX и оператор & | объединяет текстовые строки в одну, оператор & используется для объединения строк текста | СЦЕПИТЬ, ОБЪЕДИНИТЬ и & |
TRIM | удаляет лишние пробелы | СЖПРОБЕЛЫ |
LOWER и UPPER | преобразует все буквы в строке в строчные / прописные | СТРОЧН и ПРОПИСН |
LEFT и RIGHT | возвращает указанное количество символов с начала (конца) строки | ЛЕВСИМВ и ПРАВСИМВ |
LEN | возвращает число символов в строке | ДЛСТР |
FIND и SEARCH | возвращает номер начальной позиции искомого текста в строке (с учетом или без учета регистра) | НАЙТИ и ПОИСК |
MID | возвращает строку из текста по начальной позиции и длине | ПСТР |
FORMAT | преобразует значение в текст в соответствии с указанным форматом | ТЕКСТ |
Функции для работы с датами
В DAX часто встречаются вычисления, связанные с датами. Поэтому там много формул, позволяющих такие расчеты выполнять.
Формула | Что делает | Похожая формула Excel |
TODAY | определяет сегодняшнюю дату | СЕГОДНЯ |
DATE | возвращает заданную дату | ДАТА |
DAY, MONTH, YEAR | вычисляет день, месяц, год для заданной даты | ДЕНЬ, МЕСЯЦ, ГОД |
WEEKDAY | возвращает номер дня недели, от 1 до 7 | ДЕНЬНЕД |
WEEKNUM | определяет номер недели в году | НОМНЕДЕЛИ |
EDATE | находит дату через указанное число месяцев от заданной даты | ДАТАМЕС |
EOMONTH | находит дату последнего дня месяца до или после указанного числа месяцев | КОНМЕСЯЦА |
Функции фильтрации
А еще в DAX есть формулы фильтров, аналога которых в «обычном» Excel нет и быть не может. Потому что такие формулы позволяют ссылаться не просто на столбец, а целиком на таблицу. Формулы фильтрации можно подставлять в меры и тогда они будут выдавать «виртуальные» таблицы с заданными параметрами. Такие таблицы не дают видимого результата и используются как промежуточные функции внутри вычисления. Примером таких функций являются SUMMARIZE, ADDCOLUMNS и более часто используемые формулы FILTER, ALL.
В определениях DAX функция CALCULATE относится к функциям фильтрации. CALCULATE работает по аналогии с формулой СУММЕСЛИМН при указании в этой формуле суммы и условия отбора – фильтра:
продажи-2020 = CALCULATE( [факт]; '
Календарь'
[Год] = 2020 )
Самыми яркими представителями функций фильтрации являются FILTER и ALL:
- Функция FILTER создает отфильтрованную таблицу. Другими словами, с помощью этой формулы можно извлечь список, соответствующий определенному критерию.
- Функция ALL снимает фильтры, примененные к таблице. Она используется, например, чтобы посчитать долю продаж товара:
Доля товара = DIVIDE( [выручка]; CALCULATE( [выручка]; ALL(
'
Товары'
) )
Кроме функций, перечисленных выше, в DAX существуют другие – функции связей, обработки таблиц, информационные, статистические, финансовые, функции операций со временем и т.д. Как видите, язык DAX позволяет выполнять самые разные вычисления. Примеры таких вычислений можно посмотреть в следующих статьях.
КУРС
АНАЛИТИК ДАННЫХ (DATA ANALYST)
Научитесь выстраивать процессы для роста бизнеса и увеличения прибыли.
В статье рассказываем о структуре языка DAX, объясняем, как он работает, чем отличается от привычного всем Excel и с чего начать обучение.
Что такое DAX?
DAX — это язык, который помогает оптимизировать работу в некоторых приложениях Microsoft (это Power BI и Power Pivot).
DAX состоит из набора функций, которые помогают видоизменять и корректировать имеющиеся данные. Это удобно, когда информации недостаточно для анализа или когда нужно получить на основе данных новые показатели.
В чем польза языка DAX?
На самом деле, создать книгу и импортировать в нее какие-то данные очень просто. Можно без особых усилий создавать сводные таблицы и диаграммы, которые отображали бы важную информацию, даже не используя формулы DAX.
Но как быть в тех случаях, когда нужно проанализировать данные о продажах, например, по нескольким категориям товаров и для разных временных промежутков? Или нужно объединить данные инвентаризации из нескольких таблиц в разных источниках данных?
В этом случае без формул DAX тоже можно обойтись, но те возможности, которые предоставляет этот язык, стоят того, чтобы немного повозиться с его освоением.
Изучение того, как создавать эффективные формулы DAX, поможет получить максимальную отдачу от ваших бизнес-данных. Создав новые меры и вычисляемые столбцы, вы получаете не нагромождение данных, а «приятную» для работы специалиста среду.
Аналитику не придется судорожно бегать по всем отделам в поисках дополнительной информации: он сам сможет создавать то, что нужно и пригодиться в исследовании. Получив необходимую информацию, он сможет начать решать реальные бизнес-проблемы, которые влияют на прибыль и процветание компании.
DAX — это рай для любознательного и ориентированного на результат специалиста.
Безусловно, многие знают, как создавать формулы в Microsoft Excel. Если вы чувствуете пробелы в знаниях функционала Excel, то рекомендуем записаться на наш открытый онлайн-курс «Аналитика в Excel». Начав работать с DAX, вы поймете, что синтаксис, набор функций и операторов у двух этих инструментов перекликаются. Но разница между ними просто не может не существовать (иначе зачем два одинаковых инструмента?). Основное различие заключается в том, что они по-разному сконструированы.
В Excel все действия связаны с ячейкой: мы знаем ее адрес, имеем к ней доступ, можем писать для нее формулы, менять типы данных (причем в одном столбце могут быть ячейки с разными типами), по-разному форматировать, объединять ячейки и так далее. То есть ячейка — базовая структурная единица.
В DAX так сделать уже не получится!
В качестве базового элемента здесь выступает столбец. У всех ячеек одного столбца одинаковый тип данных, формулы для расчета применяются к целому столбцу. Также с помощью DAX мы не сможем добраться до какой-то конкретной ячейки (у ячеек нет адресов).
Мы, конечно, сможем получить значение какой-то ячейки, например, прописав название таблицы, адрес необходимого нам столбца, а потом наложив строгий фильтр, чтобы осталось значение только из необходимой ячейки. Но адрес ее мы все же не узнаем. У нее его просто нет!
Чаще всего DAX применяют для усовершенствования работы в Power BI.
Базовых знаний о Power BI достаточно, чтобы создать достойный отчет со всеми доступными данными. Но если информации, которой вы располагаете недостаточно для анализа, тогда необходимо принять серьезные меры в создании новых мер, с помощью DAX (забавный оксюморон).
Так что, умение работать с языком формул рано или поздно пригодится. А сейчас лучшее время с ним познакомиться!
Сначала предлагаем узнать о трех основных принципах, на которых построен DAX — это синтаксис, функции и контексты. Конечно, есть и другие концепции языка, но понимание этих трех принципов обеспечит хорошую базу для развития навыков DAX.
Перед тем как приступить к глубокому изучению, давайте проясним два важных понятия, которые встречались ранее и без которых не обойтись, если вы хотите научиться «говорить» на языке DAX.
Первое понятие — «мера». Это некоторое выражение, рассчитывающее не существовавшие до этого важные показатели.
Для этого они берут за основу данные, содержащиеся в таблицах, и прописывают формулу. С ее помощью появляется новое значение, которое можно использовать в других вычислениях или в визуализации.
Примером использования мер можно считать нахождение среднего значения, суммы элементов столбца, количества уникальных записей и прочее.
Второе понятие — «Вычисляемый столбец».
Оно также позволяет рассчитывать показатели, но расчет производится для каждой строки таблицы отдельно, а результат сохраняется в новый столбец таблицы. Это дает возможность использовать новый столбец наравне с основными.
Эти два понятия необходимо различать! Но вернемся к нашим буквам и слогам.
Синтаксис
Первоначальный и самый важный шаг в изучении языка (не только технического, но и любого другого) состоит в том, чтобы разбить его на минимальные элементы и понять, как с ними работать.
Вспомните начальную школу и уроки русского или английского языка.
Первым делом нас учили алфавиту. После того, как мы выучили буквы (основные кирпичики языка), мы начали изучать слоги (соединение нескольких букв в новую структурную единицу), затем слоги складывали в слова, слова — в словосочетания, словосочетания — в предложения и в конечном итоге получали текст.
Точно так же нужно подходить к изучению языков программирования!
Именно поэтому мы сперва изучим синтаксис! Посмотрим на формулу, написанную с помощью DAX:
Она состоит из следующих элементов:
A: Название новой меры.
B: Оператор (=). Как и в Excel он указывает на начало вычисляемого высказывания.
C: SUM — это функция DAX. С ее помощью можно найти сумму значений.
D: В круглых скобках указывают аргумент функции (те значения, которые участвуют в расчетах). Каждая функция должна иметь хотя бы один аргумент.
E: Название таблицы, из которой берется поле или столбец.
F: Название поля, из которого формула будет брать значения.
У нас создается новая мера «Прогнозируемые продажи 2020», которая будет равна сумме значений столбца [Sales] из таблицы [financials].
G: Оператор умножения
Проще говоря, эта формула DAX дает команду системе рассчитать произведение суммы значений Sales и 1,08 и сохранить значение в новом поле или столбце, называемом «Прогнозируемые продажи 2020».
Чтобы проще было понять формулу, можно разбить ее на элементы и проговорить их.
Сделаем это для описанного выше примера:
В таблице financials для каждой строки в мере «Пронозируемые продажи 2020» рассчитайте результат, умножая значения из столбца [Sales] на 1,08. Все просто!
Перейдем к понятию Функции
Функция DAX — это предопределенная, структурированная и упорядоченная формула, которая показывает, как производить расчет. В скобках после функции обязательно должен указываться аргументы. Параметрами функции могут быть любые элементы: от ссылок на столбцы до других функций.
Каждая функция выполняет определенную операцию со значениями, заключенными в скобках (то есть входящих в аргумент).
Как мы уже упоминали — любая формула DAX использует только полные столбцы или таблицы. Если нужно использовать функции для отдельных значений в столбце, то неизбежно применение фильтров.
Функции DAX очень похожи на формулы Excel
Вот основные типы, которые используют в работе:
1. Функции даты и времени
Эти функции помогают производить вычисления для значений даты и времени.
2. Интеллектуальные функции времени
Функции анализа времени используют, когда нужно оценить какие-то показатели за определенные периоды времени (день, неделя, месяц, квартал и т.п.), а затем сравнить их между собой.
3. Информационные
Данный тип позволяет получить метаданные (то есть информацию о данных). Например, функция ISERROR (аналог формулы ЕСЛИОШИБКА) возвращает TRUE, если аргумент содержит ошибку.
Еще примеры:
ISBLANK проверяет является ли значение пустым.
ISNUMBER показывает является ли значение числовым, а ISTEXT – является ли текстовым.
4. Логические
Логические функции проверяют выполнение некоторого условия. Если оно выполняется, то результат – ИСТИНА, если нет, то ЛОЖЬ.
5. Математические и тригонометрические
Математические и триггерные функции используются для выполнения всевозможных математических операций для указанных значений.
6. Агрегатные
Позволяют получать статистическую информацию о данных, например, максимум, минимум, среднее, общее количество строк и так далее.
7. Текстовые
Текстовые функции в Power BI очень похожи на строковые функции Excel. Они преобразовывают строковые значения.
8. Функции родителя и ребенка
Данный тип функций используется для значений данных, которые являются частью иерархии родительских и дочерних элементов.
9. Табличные
Табличные функции используются в Power BI для видоизменения целой таблицы. Эти функции похожи на операторов SQL.
И, наконец, мы добрались до третьего основного «кирпичика» языка DAX! Существует два типа контекстов: «Контекст строки» и «Контекст фильтра». Разберемся, что это.
Контекст строки
Под контекстом строки легче всего понимать текущую строку. Иными словами, это область данных, которые используются в вычислении в конкретный момент.
Например, посчитаем расходы:
DAX может вычислять значения для каждой строки в столбце «Расходы», так как для этого есть контекст: для каждой строки он берет значения из столбца [Sales] и вычитает из него соответствующие значения из столбца [Profit] (значения находятся в одной строке). Это и есть контекст строки.
Контекст фильтра
С контекстом фильтра дела обстоят сложнее. Контекст фильтра — это набор фильтров, которые применяются к выражению. Параллельно с вычислением происходит отбор строк, которые должны участвовать в расчетах.
Такой подход необходим, так как в DAX нет доступа к отдельным ячейкам. До них можно добраться только с помощью фильтров.
Эти два типа контекстов не существуют отдельно. Скорее Контекст фильтра используется дополнительно к Контексту строки.
Не расстраивайтесь, если вы не сразу поймете, как это работает. Все приходит с опытом и практикой!
Заключение
После прочтения статьи у вас должно было проясниться общее представление о наиболее важных концепциях языка DAX. Теперь вы можете смело пробовать создавать свои формулы и использовать новые меры и столбцы в визуальных отчетах Power BI.
Не переживайте, это еще не конец!
Мы вернемся к изучению DAX совсем скоро и уже на практике посмотрим, где и как он нам сможет пригодиться.
Главную мысль мы усвоили — DAX дает новый подход к анализу данных: он умный и интеллектуальный. Благодаря нему можно найти подходящие решения для бизнес-задач, которые есть риск упустить при обычном анализе. Делитесь ваши успехами в познании DAX в комментариях и записывайтесь на наш курс «Бизнес-аналитик», если хотите освоить язык DAX.
КУРС
АНАЛИТИК ДАННЫХ (DATA ANALYST)
Научитесь выстраивать процессы для роста бизнеса и увеличения прибыли.
Excel DAX — Overview
DAX stands for Data Analysis Expressions. DAX is a formula language and is a collection of functions, operators, and constants that can be used in a formula or expression to calculate and return one or more values. DAX is the formula language associated with the Data Model of Excel Power Pivot.
It is not a programming language, but is a formula language that allows the users to define custom calculations in calculated columns and calculated fields (also known as measures). DAX helps you create new information from the data that is already present in your Data Model. DAX formulas enable you to perform data modeling, data analysis, and use the results for reporting and decision making.
DAX includes some of the functions that are used in Excel formulas, but with modified functionality and additional functions that are designed to work with relational data and perform dynamic aggregation.
Importance of DAX
The foundation of DAX is the Data Model that is the Power Pivot database in Excel. Data Model consists of tables between which relationships can be defined so as to combine the data from different sources. The data connections to the Data Model can be refreshed as and when the source data changes. Data Model makes the use of the Power Pivot xVelocity in-memory analytics engine (VertiPaq) that makes the data operations to be as quick as possible in addition to accommodating several thousands of rows of data. For more information on Data Model, refer to the tutorial – Power Pivot.
DAX in conjunction with Data Model enables several power features in Excel – Power Pivot, Power PivotTables, Power PivotCharts and Power View. You can use DAX to solve a number of basic calculations and data analysis problems.
DAX is also useful in Power BI to create a new Power BI Desktop file and import some data into it. Further, DAX formulas provide capabilities such as analyzing growth percentage across product categories and for different date ranges, calculating year-over-year growth compared to market trends and many others as well.
Learning how to create effective DAX formulas will help you get the most out of your data. When you get the information you need, you can begin to solve real business problems that affect your bottom line. This is the power in Power BI and DAX will help you get there.
Prerequisites for this Tutorial
This tutorial is an extension to Excel Power Pivot tutorial, where you have learnt about the Power Pivot feature, Data Model, Relationships, Power PivotTables, Power Pivot Charts, etc. It would be a good idea to brush up on this tutorial before you delve into DAX as this tutorial is more on the DAX language wherein you write formulas for the analysis of data in the Data Model and report those results.
This tutorial also introduces DAX Functions that are like Excel Functions, but with some variations. A comparison of Excel Functions and DAX Functions is provided to help you distinguish both. Similarly, Excel formulas and DAX formulas are compared and the similarities and differences are discussed. A good understanding of these differences would help you in writing effective DAX formulas efficiently.
Knowledge of Excel Functions and Excel Formulas is not necessary for this tutorial, as DAX is entirely for the Data Model in the Power Pivot window. You will get into an Excel worksheet only to view the Power PivotTables, Power Pivot Charts and Power View visualizations that are based on Data Model. However, if you are an Excel professional with good amount of knowledge in Excel Functions and Formulas, better make a note of what is mentioned in the previous section and the details given in the course of this tutorial.
Calculated Columns
Calculated columns are the columns that you can add to a table in the Data Model, by means of a DAX formula. You have already learnt about them in Excel Power Pivot tutorial, but you will learn in detail in the chapter – Calculated Columns as DAX is all about calculated columns, calculated fields, and DAX functions.
Calculated Fields / Measures
You cannot change the values in the tables in the Data Model by editing. However, you can add calculated fields to a table that can be used in the Power PivotTables. The calculated fields are defined by giving a name and by defining a DAX formula. For details, refer to the chapter – Calculated Fields.
The calculated fields were named as measures in the Excel versions prior to Excel 2013. They are renamed back to measures in Excel 2016. In this tutorial, we will refer them as calculated fields. But, note that the terms — calculated fields and measures — are synonymous and refer to the same in all aspects.
You can edit a calculated field after it is defined and stored. You can change the DAX formula used in the definition or you can rename the calculated field. You will learn about this in the chapter – Editing a Calculated Field. You can delete a calculated field. Refer to the chapter – Deleting a Calculated Field.
DAX Formulas
DAX formulas form the heart of the DAX language. You can create calculated fields and calculated columns by defining them with DAX formulas. You can write DAX formulas for the data analysis operations. DAX formulas do not refer to the individual cells or range of cells in the table, but refer to the tables and columns in the Data Model. A column in a table in the Data Model must contain the same data type.
DAX formulas contain the tables, columns, calculated columns, calculated fields, DAX operators, and DAX functions. Refer to the chapter – DAX Formulas to learn in detail.
DAX Syntax
As is the case with any language, DAX, the formula language also has a syntax. Your DAX formulas should follow DAX syntax, or else, you will either get errors at design time or at run time or you will receive incorrect results.
You will learn the following in the chapter – DAX Syntax −
- DAX naming requirements for Tables, Columns
- DAX operators
- DAX special values
- DAX data types
- DAX implicit data type conversions
DAX Operators
DAX is a formula language and hence makes the use of the operators in defining the formulas. DAX has the following types of operators −
- DAX Arithmetic Operators
- DAX Comparison Operators
- DAX Text Concatenation Operator
- DAX Logical Operators
DAX operator precedence order is also defined and varies from Excel operator precedence order. Refer to the chapter – DAX Operators.
DAX Standard Parameters
DAX Function syntax has certain requirements on parameters. This is because the DAX function arguments can be tables or columns or calculated fields or other DAX functions. Refer to the chapter — DAX Standard Parameters.
DAX Functions
Excel 2013 has 246 DAX functions that you can use in DAX formulas. You will learn about these functions at the category level in the chapter – DAX Functions. However, for details on each DAX function syntax, parameters, usage and return values, you have to refer to our tutorial on – DAX Functions. The section names used for the description of each DAX function is given in the chapter – Understanding DAX Functions.
As DAX functions are required in writing the DAX formulas and the results of the DAX functions used depend on the context they are used, you might have to go back and forth between these two tutorials to get a grasp on DAX that you will use in Data Modeling with DAX and Power BI.
DAX Special Functions
DAX has some functions that make DAX powerful. These DAX functions come under the categories – DAX time intelligence functions and DAX filter functions and require a special mention. You will learn about DAX time intelligence functions in the chapter – Understanding DAX Time Intelligence. You will learn about the usage of DAX filter functions in the chapter – DAX Filter Functions.
DAX Evaluation Context
The results of a DAX formula can vary based on the context that is used for evaluation. DAX has two types of evaluation context – Row Context and Filter Context. Refer to the chapter — DAX Evaluation Context.
DAX Formulas
DAX is a formula language and you have to get the most of it in writing the DAX formulas. Refer to the chapter — DAX Formulas to learn about the formula syntax and how to create them easily and correctly.
The results of the DAX formulas change whenever the data is refreshed and whenever the DAX formulas are recalculated. You have to understand the difference between data refresh and recalculation. Refer to the chapter — Updating the Results of DAX Formulas.
Data in the Data Model is expected and subjected to change from time to time. This is because the data is used for data analysis activities that require up-to-date data at any point of time. To understand the different ways of refreshing data, refer to the chapter — Updating Data in Data Model.
You will understand the different types of DAX formula recalculation in the chapter — Recalculating DAX Formulas.
DAX formula recalculations have to consider data dependencies and follow a specific order. Otherwise, you might get errors or erroneous results. Refer to the chapter — Troubleshooting DAX Formula Recalculation for details.
You will get an insight into some of the common DAX formula errors and you will learn how to fix those errors, in the chapter — DAX Formula Errors.
DAX Scenarios
If you start learning a new language, the best way of getting acquainted to the language is by understanding where to use what. Similarly, DAX being a formula language meant for data analysis, you need to understand the various scenarios where it can be used.
Refer to the following chapters to get details on this.
- DAX Scenarios
- Scenarios — Performing Complex Calculations
- Scenarios — Working with Text and Dates
- Scenarios — Conditional Values and Testing for Errors
- Scenarios — Using Time Intelligence
- Scenarios — Ranking and Comparing Values
Excel DAX — Calculated Columns
A calculated column is a column that you add to an existing table in the Data Model of your workbook by means of a DAX formula that defines the column values. Instead of importing the values in the column, you create the calculated column.
You can use the calculated column in a PivotTable, PivotChart, Power PivotTable, Power PivotChart or Power View report just like any other table column.
Understanding Calculated Columns
The DAX formula used to create a calculated column is like an Excel formula. However, in DAX formula, you cannot create different formulas for different rows in a table. The DAX formula is automatically applied to the entire column.
For example, you can create one calculated column to extract Year from the existing column – Date, with the DAX formula −
= YEAR ([Date])
YEAR is a DAX function and Date is an existing column in the table. As seen, the table name is enclosed in brackets. You will learn more about this in the chapter – DAX Syntax.
When you add a column to a table with this DAX formula, the column values are computed as soon as you create the formula. A new column with the header CalculatedColumn1 filled with Year values will get created.
Column values are recalculated as necessary, such as when the underlying data is refreshed. You can create calculated columns based on existing columns, calculated fields (measures), and other calculated columns.
Creating a Calculated Column
Consider the Data Model with the Olympics Results as shown in the following screenshot.
- Click the Data View.
- Click the Results tab.
You will be viewing the Results table.
As seen in the above screenshot, the rightmost column has the header – Add Column.
- Click the Design tab on the Ribbon.
- Click Add in the Columns group.
The pointer will appear in the formula bar. That means you are adding a column with a DAX formula.
- Type =YEAR ([Date]) in the formula bar.
As can be seen in the above screenshot, the rightmost column with the header – Add Column is highlighted.
- Press Enter.
It will take a while (few seconds) for the calculations to be done. Please wait.
The new calculated column will get inserted to the left of the rightmost Add Column.
As shown in the above screenshot, the newly inserted calculated column is highlighted. Values in the entire column appear as per the DAX formula used. The column header is CalculatedColumn1.
Renaming the Calculated Column
To rename the calculated column to a meaningful name, do the following −
- Double-click on the column header. The column name will be highlighted.
- Select the column name.
- Type Year (the new name).
As seen in the above screenshot, the name of the calculated column got changed.
You can also rename a calculated column by right-clicking on the column and then clicking on Rename in the dropdown list.
Just make sure that the new name does not conflict with an existing name in the table.
Checking the Data Type of the Calculated Column
You can check the data type of the calculated column as follows −
- Click the Home tab on the Ribbon.
- Click the Data Type.
As you can see in the above screenshot, the dropdown list has the possible data types for the columns. In this example, the default (Auto) data type, i.e. the Whole Number is selected.
Errors in Calculated Columns
Errors can occur in the calculated columns for the following reasons −
-
Changing or deleting relationships between the tables. This is because the formulas that use columns in those tables will become invalid.
-
The formula contains a circular or self-referencing dependency.
Performance Issues
As seen earlier in the example of Olympics results, the Results table has about 35000 rows of data. Hence, when you created a column with a DAX formula, it had calculated all the 35000+ values in the column at once, for which it took a little while. The Data Model and the tables are meant to handle millions of rows of data. Hence, it can affect the performance when the DAX formula has too many references. You can avoid the performance issues doing the following −
-
If your DAX formula contains many complex dependencies, then create it in steps saving the results in new calculated columns, instead of creating a single big formula at once. This enables you to validate the results and assess the performance.
-
Calculated columns need to be recalculated when data modifications occur. You can set the recalculation mode to manual, thus saving frequent recalculations. However, if any values in the calculated column are incorrect, the column will be grayed out, until you refresh and recalculate the data.
Excel DAX — Calculated Fields / Measures
A calculated field in a table in a Data Model is the field obtained by a DAX formula. In earlier versions of Power Pivot, the calculated field was termed as a measure. In Excel 2013, it was renamed as a calculated field. However, it is renamed back to measure in Excel 2016. If you refer to any documentation, you can observe a mix up of these two terms. Note that the terms calculated field and measure are synonymous. In this tutorial, we use the term calculated field.
Understanding Calculated Fields
A calculated field is a formula that is created specifically for use in a PivotTable (or PivotChart).
You can create a calculated field based on standard aggregation functions, such as COUNT or SUM, or by defining your own DAX formula.
Following is the difference between the calculated field and the calculated column −
-
A calculated field can be used only in the VALUES area of a PivotTable.
-
A calculated column with the calculated results can be used in ROWS, COLUMNS and FILTERS areas also.
Saving Calculated Field
The calculated field will be saved with its source table in the Data Model. It appears in the Power PivotTable or Power PivotChart Fields list as a field in the table.
Using Calculated Field
To use a calculated field, you have to select it from the Power PivotTable Fields list. The calculated field will get added to the VALUES area and the formula used for the calculated field will be evaluated. A result is created for each combination of row and column fields.
Calculated Field – An Example
Consider the following Data Model for Olympics data −
As seen in the above screenshot, the Results table has a field Medal that contains the values – Gold, Silver, or Bronze for each of the rows containing Sport – Event — Country – Date combination. Suppose you want medal count for each country, then you can create a calculated field Medal Count with the following DAX formula −
Medal Count := COUNTA([Medal])
Creating a Calculated Field in a Table
To create the calculated field Medal Count in the Results table, do the following −
-
Click the cell in the calculation area below the Medal column in the Results table. The cell will be highlighted.
-
Type Medal Count:=COUNTA([Medal]) in the formula bar.
Press Enter.
As seen in the above screenshot, the calculated field appears in the selected cell, showing the value as 34,094. This number is the total number of rows in the Results table. Hence, it does not make much sense at the first look. As discussed earlier, the real use of a calculated field can be seen only by adding it to a Power PivotTable or a Power PivotChart.
Using the Calculated Field in a Power PivotTable
To use the calculated field to count the number of medals for each country, do the following −
- Click the PivotTable on the Ribbon in the Power Pivot window.
- Click the PivotTable in the dropdown list.
Create PivotTable dialog box appears.
- Click the Existing Worksheet.
- Select where you want to place the PivotTable.
An empty PivotTable will get created.
- Click the Results table in the PivotTable Fields list.
- Click the fields – Country and Medal count.
As you can observe, Medal Count is added to VALUES area and Country is added to ROWS area. The PivotTable is created with the field Country values appearing in the rows. And for each row, the Medal Count value is calculated and displayed. That is the way, the calculated field evaluates the DAX formula used and displays the values.
- Add the field Sport from the Results table to ROWS area.
As you can see in the above screenshot, Medal Count is calculated for each Country — Sport-wise and a Subtotal for the Country itself.
This is how DAX supplements the Power features.
Types of Calculated Fields
There are two types of Calculated Fields – Implicit and Explicit.
-
An implicit calculated field is created in the Power PivotTable Fields list pane.
-
An explicit calculated field is created either in the table in the Power Pivot window, or from the PowerPivot Ribbon in the Excel window.
Creating an Implicit Calculated Field
An implicit calculated field can be created in two ways, both in the Power PivotTable Fields pane.
Creating an Implicit Calculated Field in the PivotTable Fields List
You can create the Count of Medal Field from the Medal field in the PivotTable Fields list as follows −
- Deselect the field Medal Count.
- Right-click on the field Medal.
- Click Add to Values in the dropdown list.
Count of Medal appears in the Values area. Count of Medal column will be added to the PivotTable.
Creating an Implicit Calculated Field in the VALUES Area
You can create an implicit calculated field — % of Parent Row in the Values area to express the Medal count of each sport that a country has won as a percentage of the total number of Medals won by that Country.
- Click the down arrow in the Count of Medal box in VALUES area.
- Click the Value Field Settings in the dropdown list.
Value Field Settings dialog box appears.
- Type % Medals in the Custom Name box.
- Click the Show Values As tab.
- Click the box under Show values as.
- Click the % of Parent Row Total.
- Click the Number Format button.
Format Cells dialog box appears.
- Click Percentage.
- Type 0 in decimal places.
- Click OK.
- Click OK in the Value Field Settings dialog box.
- Select Do Not Show Subtotals.
You created another implicit calculated field % Medals and as you can observe, for each Country, the percentage of Medals Sport-wise are displayed.
Drawbacks of an Implicit Calculated Field
Implicit calculated fields are easy to create. In fact, you have been creating them even in Excel PivotTables and Pivot Charts. But, they have the following drawbacks −
-
They are volatile. That means, if you deselect the field you used for calculated field, it will be removed. If you want to display it again, you have to once again create it.
-
Their scope is limited to the PivotTable or PivotChart in which they are created. If you create another PivotTable in another worksheet, you have to create the calculated field again.
On the other hand, explicit calculated fields will get saved with the table and will be available whenever you select that table.
Creating an Explicit Calculated Field
You can create an explicit calculated field in two ways −
-
In the calculation area in a Table in the Data Model. You have already learnt this in the section – Creating Calculated Field in a Table.
-
From PowerPivot Ribbon in the Excel table. You will learn this way of creating an explicit calculated field in the next section.
Creating an Explicit Calculated Field from PowerPivot Ribbon
To create an explicit calculated field from PowerPivot Ribbon, do the following −
- Click the POWERPIVOT tab on the Ribbon in your workbook.
- Click the Calculated Fields in the Calculations area.
- Click the New Calculated Field in the dropdown list.
Calculated Field dialog box appears.
- Fill in the required information as shown in the following screenshot.
- Click the Check formula button.
- Click OK only if there are no errors in the formula.
As you can observe, you can define the category and format of the calculated field in this dialog box. Further, you can use the IntelliSense feature to understand the usage of the functions and to use the AutoComplete feature to easily complete the names of the functions, tables, and columns. For details on IntelliSense feature, refer to the chapter – DAX Formulas.
This is a recommended way to create explicit calculated fields.
Excel DAX — Editing a Calculated Field
You can edit a calculated field to modify it. But, before you edit a calculated field, you should know where it is stored. That means, in which table the calculated field is stored. This holds both for implicit and explicit calculated fields. A calculated field can be associated with only one table in a Data Model.
Finding Calculated Fields
To find the calculated fields in the Data Model, do the following −
- Click the Advanced tab on the Ribbon in the Power Pivot window.
- Click the Show Implicit Calculated Fields.
- Click the Diagram View.
As you can see in the above screenshot, Show Implicit Calculated Fields is highlighted on the Ribbon. If it is not highlighted, click it again.
You can also observe that there are 4 checkboxes – Columns, Calculated Fields, Hierarchies, and KPIs. By default, all the 4 are selected.
- Uncheck the boxes — Columns, Hierarchies and KPIs.
This will leave only Calculated Fields box checked.
As seen in the above screenshot, only the Results table has fields displayed. The other two tables are blank. This shows that only the Results table has calculated fields. You can also observe that the implicit calculated fields have an icon displayed, whereas the explicit calculated field – Medal Count does not have that icon.
Viewing Calculated Fields in the Table
You can view the calculated fields in the Table as follows −
- Click the calculated field.
- Right-click and select Go To in the dropdown list.
The table will appear in Data View.
As seen in the above screenshot, the calculated fields appear in the calculation area of the table.
Changing a Calculated Field in the Table
You can change the formula used for a calculated field in the table.
- Click the calculated field in the table in data view of the Data Model.
- Select the formula in the formula bar – to the right side of :=.
The formula will get highlighted.
- Type the new formula.
- Press Enter.
You will learn more about the DAX formulas in the subsequent chapters.
Renaming a Calculated Field in the Data Model
You can change the name of a calculated field in the Data Table either in Data View or Diagram View.
Renaming a Calculated Field in the Data View
- Click the calculated field in the table in data view of the Data Model.
- Select the calculated field name in the formula bar – to the left side of :=.
The calculated field name will get highlighted.
- Type the new name for the calculated field.
- Press Enter.
You will learn more about the DAX Syntax in the subsequent chapters.
Renaming a Calculated Field in the Diagram View
- Right-click the calculated field name in the table in the diagram view.
- Click Rename in the dropdown list.
The name will get into editing mode. Type the new name for the calculated field.
Viewing Calculated Fields in the Excel Window
You can view the calculated fields in the Excel window as follows −
- Click the POWERPIVOT tab on the Ribbon.
- Click Calculated Fields in the Calculations group.
- Click Manage Calculated Fields in the dropdown list.
Manage Calculated Fields dialog box appears. The names of the explicit calculated fields in the Data Model appear in the dialog box.
Changing a Calculated Field in the Manage Calculated Fields
You can change a calculated field in the Manage Calculated Fields dialog box.
- Click the Medal Count.
- Click the Edit button.
Calculated Field dialog box appears.
- Select the formula to the right of = in the formula box.
- Type the new Formula.
- Click OK.
- Click Close in the Manage Calculated Fields dialog box.
Renaming a Calculated Field in the Manage Calculated Fields
You can rename a calculated field in the Manage Calculated Fields dialog box.
- Click the Medal Count.
- Click the Edit button.
Calculated Field dialog box appears.
- Select the name in the calculated field name box.
- Type the new name for the calculated field.
- Click OK.
- Click Close in the Manage Calculated Fields dialog box.
Moving a Calculated Field in the Data Model
You can move a calculated field within the calculation area of the table in which it is created. But, it cannot be moved to another table.
- Right-click the calculated field.
- Click Cut.
- Move the pointer to a different place in the calculation area of the same table.
- Click Paste.
Note − It does not really matter where the calculated field is within the calculation area of the table because the data references in the DAX formula of the calculated field are by the column names and are stated explicitly.
Excel DAX — Deleting a Calculated Field
You can delete both explicit and implicit calculated fields. There are several ways of doing so, which you will learn in this chapter.
However, you need to remember the following points before deleting a calculated field −
-
An explicit calculated field can be used in more than one PivotTable and/or PivotChart. Hence, you need to make sure that deleting the explicit calculated field does not affect any of the reports that you have already generated.
-
An explicit calculated field can be used in the calculations of other explicit calculated fields. Hence, you need to make sure that the explicit calculated field is not used in any of the calculations of other explicit calculated fields.
-
An implicit calculated field is limited to the PivotTable or PivotChart where it is used. Hence, before deleting an implicit calculated field, it is just sufficient to make sure that it can be deleted from the corresponding PivotTable or PivotChart.
-
Creating an implicit calculated field is simpler than creating an explicit calculated field. Hence, more caution is required before deleting an explicit calculated field.
-
You cannot create an explicit calculated field, if the name conflicts with the name of an implicit calculated field. Hence, you might have to delete that implicit calculated field before creating the explicit calculated field.
Deleting an Explicit Calculated Field in the Data Model
You can delete an explicit calculated field either in the data view or the diagram view in the Data Model.
Deleting an Explicit Calculated Field in the Data View
- Locate the calculated field in the calculations area in the Data View.
- Right-click the calculated field.
- Click Delete in the dropdown list.
Message appears for delete confirmation.
Click Delete from Model. The explicit calculated field will get deleted.
Deleting an Explicit Calculated Field in the Diagram View
- Locate the calculated field in the data table in the Diagram View.
- Right-click the calculated field name.
- Click Delete in the dropdown list.
Message appears for delete confirmation.
Click Delete from Model. The explicit calculated field will get deleted and it will not be seen in the fields list of the data table.
Deleting an Explicit Calculated Field in the Excel Window
You can delete an explicit calculated field from the Excel window as follows −
- Click the POWERPIVOT tab on the Ribbon.
- Click Calculated Field in the Calculations group.
- Click Manage Calculated Fields in the dropdown list.
Manage Calculated Fields dialog box appears.
- Click the explicit calculated field name.
- Click the Delete button.
Confirmation message for deletion appears.
- Click Yes. Information message that the Data Model is changed appears at the top.
- Click the Close button in the dialog box.
The explicit calculated field will get deleted and it will not be seen in the PivotTable/PivotChart Fields list in the workbook.
Deleting an Implicit Calculated Field
You can delete an implicit calculated field either in the data view or the diagram view in the Data Model.
Deleting an Implicit Calculated Field in the Data View
- Locate the calculated field in the calculations area in the Data View.
- Right-click the calculated field.
- Click Delete in the dropdown list.
Message appears for delete confirmation.
- Click Delete from Model. The implicit calculated field will get deleted.
Deleting an Implicit Calculated Field in the Diagram View
- Locate the calculated field in the data table in the Diagram View.
- Right-click the calculated field name.
- Click Delete in the dropdown list.
Message appears for delete confirmation.
Click Delete from Model. The implicit calculated field will get deleted and it will not be seen in the fields list of the data table.
Excel DAX — Syntax
As discussed earlier, DAX is a formula language comprising of operators, values, functions, and formulas. In this chapter, you will learn about DAX Syntax.
DAX Syntax can be categorized as −
- Syntax for DAX Formulas
- DAX Naming Requirements
- DAX Special Values
- DAX Functions
- DAX Operators
- DAX Data Types
Before you proceed to learning DAX Syntax, you have to understand the difference between Excel formulas and DAX formulas.
Differences between Excel Formulas and DAX Formulas
DAX formulas are similar to the Excel formulas and you can type them in the formula bar. However, there are some vital differences between the two.
Excel Formula | DAX Formula |
---|---|
Excel formulas are typed in the formula bar in the Excel window. |
DAX formulas are typed in the formula bar in the Power Pivot window. |
In Excel formulas, you can reference individual cells or arrays for data. |
In DAX formulas, you can reference only complete tables or columns of data, i.e. references can be only to tables and fields in the tables. However, if at all you have to perform a calculation only on a part of the column data, you can do so with the DAX functions that filter and provide the required unique data values for calculation. |
Excel formulas support certain data types. |
DAX provides more data types than Excel does. Hence, DAX formulas can use the additional data types also. |
Excel does not support any implicit data conversions. |
DAX performs implicit data type conversions during calculations. |
Excel DAX — Operators
DAX is a formula language comprising of functions, operators, and values that can be used in a formula or expression, to calculate and return one or more values.
You can use DAX operators to compare values, perform arithmetic calculations, and concatenate strings. In this chapter, you will learn about DAX operators and how to use them.
Types of DAX Operators
DAX supports the following types of operators −
- DAX Arithmetic Operators
- DAX Comparison Operators
- DAX Text Concatenation Operator
- DAX Logical Operators
DAX Operator Precedence Order
You can have a DAX formula with many DAX operators combining several values or expressions. In such a case, the final result will depend on the order in which the operations are performed. DAX provides you with the default operator precedence order and also ways of overriding the default precedence order.
DAX default operator precedence is listed in the following table.
Precedence Order | Operator(s) | Operation |
---|---|---|
1 | ^ | Exponentiation |
2 | – | Sign |
3 | * and / | Multiplication and Division |
4 | ! | NOT |
5 | + and – | Addition and Subtraction |
6 | & | Concatenation |
7 | =, <, >, <=, >= and <> | Equal to, Less than, Greater than, Less than or equal to, Greater than or equal to and Not equal to |
DAX Expression Syntax
You need to first understand the DAX expression syntax and how the expression evaluation is done with the operands and operators.
-
All expressions always begin with an equal sign (=). The equal sign indicates that the succeeding characters constitute an expression.
-
To the right of the equal sign, you will have the operands connected by the DAX operators. For example, = 5 + 4 > 5.
= 5 * 6 — 3.
-
Expressions are always read from left to right, and the calculations are done in that sequence, based on the DAX operator precedence given in the previous section.
-
If the DAX operators have equal precedence value, they are evaluated from the left to right. For example, =5*6/10. Both * and / have same the precedent order. Hence, the expression is evaluated as 30/10 = 3.
-
If the DAX operators in the expression have different precedence values, then they are evaluated in the precedence order from the left to right.
-
= 5 + 4 > 7. Default precedence is + first and > next. Hence, the expression is calculated from the left to right. — 5 + 4 is calculated first resulting in 9 and then 9 > 5 is evaluated that results in TRUE.
-
= 5 * 6 — 3. Default precedence is * first and — next. Hence, the expression is calculated from the left to right. — 5 * 6 is calculated first resulting in 30 and then 30 — 3 is calculated that results in 27.
-
= 2 * 5 — 6 * 3. Default precedence is * first, * next and then -. Hence, the expression evaluates as 10 – 18 and then as -8. Note, that it is not 10 — 6 resulting in 4 and then 4*3 that is 12.
-
Using Parentheses to Control DAX Calculation Order
You can change the DAX default operator precedence order by using parentheses, grouping the operands and the operators to control the calculation sequence.
For example, = 5 * 6 — 3 evaluates to 27 with the DAX default operator precedence order. If you use parenthesis to group the operands and operators as = 5 * (6 — 3), then 6 — 3 is calculated first resulting in 3 and then 5 * 3 is calculated which results in 15.
= 2 * 5 — 6 * 3 evaluates to -8 with the DAX default operator precedence order. If you use parenthesis to group the operands and operators as = 2 * (5 — 6) * 3, then 5 — 6 is calculated first resulting in -1 and then 2 * (-1) * 3 is calculated which results in -6.
As you can see, with the same operands and operators, different results are possible by the way you group them. Hence, when you use the DAX operators in the DAX formulas, you should pay attention to how the computation sequence is to be.
Differences Between Excel and DAX
Though DAX has similarities with Excel formulas, there are certain significant differences between the two.
-
DAX is more powerful than Excel because of its underlying memory resident computation engine.
-
DAX supports more data types than Excel.
-
DAX provides additional advanced features of a relational database, Data Model, including richer support for date and time types.
In some cases, the results of calculations or the behavior of functions in DAX may not be the same as in Excel. This is due to the differences in the following −
- Data type casting
- Data types
Difference in Data Type Casting
In DAX, when you have an expression =value1 operator value2, the two operands value1 and value2 should be of the same data type. If the data types are different, DAX will convert them first to a common data type implicitly. Refer to the chapter – DAX Syntax for details.
For example, you have to compare two operands of different data types, say a number resulting from a formula, such as =[Amount] * 0.08 and an integer. The first number can be a decimal number with many decimal places, whereas the second number is an integer. Then DAX handles it as follows −
-
First, DAX will convert both the operands to real numbers using the largest numeric format that can store both kinds of numbers.
-
Next, DAX will compare the two real numbers.
In contrast, Excel tries to compare values of different data types without first coercing them to a common data type. For this reason, you might find different results in DAX and in Excel for the same comparison expression.
Difference in Data Types
The operator precedence order in DAX and Excel is the same. However, the operator percent (%) and data ranges that Excel supports are not supported by DAX. Moreover, DAX supports table as a data type, which is not the case in Excel.
Further, in Excel formulas, you can refer to a single cell, or an array or a range of cells. In DAX formulas, you cannot refer to any of these. The DAX formula references to data should be by tables, columns, calculated fields, and calculated columns.
If you copy formulas from Excel and paste them in DAX, ensure the correctness of the DAX formula as DAX syntax is different from Excel formula syntax. Also, even if a function has the same name in DAX and Excel, its parameters might be different and the result of the function can also be different.
You will learn more about all these in the subsequent chapters.
Excel DAX — Standard Parameters
DAX has standard parameter names to facilitate the usage and understanding of the DAX functions. Further, you can use certain prefixes to the parameter names. If the prefix is clear enough, you can use the prefix itself as the parameter name.
Standard Parameter Names
Following are the DAX standard parameter names −
Sr.No. | Parameter Name & Description |
---|---|
1 |
expression Any DAX expression that returns a single scalar value, where the expression is to be evaluated multiple times (for each row/context). |
2 |
value Any DAX expression that returns a single scalar value where the expression is to be evaluated exactly once before all other operations. |
3 |
table Any DAX expression that returns a table of data. |
4 |
tableName The name of an existing table using standard DAX syntax. It cannot be an expression. |
5 |
columnName The name of an existing column using standard DAX syntax, usually fully qualified. It cannot be an expression. |
6 |
name A string constant that will be used to provide the name of a new object. |
7 |
order An enumeration used to determine the sort order. |
8 |
ties An enumeration used to determine the handling of tie values. |
9 |
type An enumeration used to determine the data type for PathItem and PathItemReverse. |
Prefixing Parameter Names
You can qualify a parameter name with a prefix −
-
The prefix should be descriptive of how the argument is used.
-
The prefix should be in such a way that ambiguous reading of the parameter is avoided.
For example,
-
Result_ColumnName − Refers to an existing column used to get the result values in the DAX LOOKUPVALUE () function.
-
Search_ColumnName − Refers to an existing column used to search for a value in the DAX LOOKUPVALUE () function.
Using Only the Prefix as a Parameter
You can omit the parameter name and use only the prefix, if the prefix is clear enough to describe the parameter. Omitting the parameter name and using only the prefix can sometimes help in avoiding the clutter in reading.
For example, Consider DATE (Year_value, Month_value, Day_value). You can omit the parameter name – value, that is repeated thrice and write it as DATE (Year, Month, Day). As you can observe, by using only the prefixes, the function is more readable.
However, sometimes the parameter name and the prefix have to be present for clarity.
For example, Consider Year_columnName. The parameter name is ColumnName and the prefix is Year. Both are required to make the user understand that the parameter requires a reference to the existing column of years.
Excel DAX — Functions
Most of the DAX functions have the same names and functionality as that of Excel functions. However, DAX functions have been modified to use DAX data types and to work with tables and columns.
DAX has some additional functions that you will not find in Excel. These DAX functions are provided for specific purposes such as lookups based on relationships associated with the relational database aspects of the Data Model, the ability to iterate over a table to perform recursive calculations, to perform dynamic aggregation, and for calculations utilizing time intelligence.
In this chapter, you will learn about the functions supported in the DAX language. For more information on the usage of these DAX functions, refer to the tutorial – DAX Functions in this tutorials library.
What is a DAX Function?
A DAX function is an in-built function provided in the DAX language to enable you to perform various actions on the data in the tables in your Data Model. As discussed earlier, DAX is used for data analysis and business intelligence purposes that require support to extract, assimilate, and derive insights from the data. The DAX functions that are based on the Data Model provide you with these utilities that make your job simpler, once you get a grasp on the DAX language and the usage of the DAX functions.
Excel Functions vs. DAX Functions
There are certain similarities between Excel functions that you are aware of and the DAX functions. However, there are certain differences too. You need to get a clarity on these, so that you can avoid making mistakes in the usage of DAX functions and in writing DAX formulas that include DAX functions.
Similarities between Excel Functions and DAX Functions
-
Many DAX functions have the same name and the same general behavior as Excel functions.
-
DAX has lookup functions that are similar to the array and vector lookup functions in Excel.
Differences between Excel Functions and DAX Functions
-
DAX functions have been modified to take different types of inputs and some of the DAX functions might return a different data type. Hence, you need to understand the usage of these functions separately though they have the same name. In this tutorial, you will find every DAX function prefixed with DAX so as to avoid confusion with the Excel functions.
-
You cannot use DAX functions in an Excel formula or use Excel formulas/functions in DAX, without the required modifications.
-
Excel functions take a cell reference or a range of cells as reference. DAX functions never take a cell reference or a range of cells as reference, but instead take a column or table as reference.
-
Excel date and time functions return an integer that represents a date as a serial number. DAX date and time functions return a datetime data type that is in DAX but not in Excel.
-
Excel has no functions that return a table, but some functions can work with arrays. Many of the DAX functions can easily reference complete tables and columns to perform calculations and return a table or a column of values. This ability of DAX adds power to the Power Pivot, Power View and Power BI, where DAX is used.
-
DAX lookup functions require that a relationship is established between the tables.
-
Excel supports variant data type in a column of data, i.e. you can have data of different data types in a column. Whereas, DAX expects the data in a column of a table to be always of the same data type. If the data is not of the same data type, DAX changes the entire column to the data type that best accommodates all the values in the column. However, if the data is imported and this issue arises, DAX can flag an error.
To learn about DAX data types and data type casting, refer to the chapter – DAX Syntax Reference.
Types of DAX Functions
DAX supports the following types of functions.
- DAX Table Valued Functions
- DAX Filter Functions
- DAX Aggregation Functions
- DAX Time Intelligence Functions
- DAX Date and Time Functions
- DAX Information Functions
- DAX Logical Functions
- DAX Math and Trig Functions
- DAX Other Functions
- DAX Parent and Child Functions
- DAX Statistical Functions
- DAX Text Functions
In this section, you will learn about DAX functions at the functions category level. For details on the DAX Function Syntax and what the DAX function returns and does — refer to the DAX Functions tutorial in this tutorials library.
DAX time intelligence functions and DAX filter functions are powerful and require a special mention. Refer to the chapters — Understanding DAX Time Intelligence and DAX Filter Functions for details.
DAX Table Valued Functions
Many DAX functions take tables as input or output tables or do both. These DAX functions are called DAX table valued functions. Because a table can have a single column, DAX table valued functions also take single columns as inputs. You have the following types of DAX table valued functions −
- DAX Aggregation functions
- DAX Filter functions
- DAX Time intelligence functions
Understanding DAX table valued functions helps you in writing DAX formulas effectively.
DAX Aggregation Functions
DAX Aggregation functions aggregate any expression over the rows of a table and are useful in calculations.
Following are some DAX Aggregation functions −
-
ADDCOLUMNS (<table>, <name>, <expression>, [<name>, <expression>] …)
-
AVERAGE (<column>)
-
AVERAGEA (<column>)
-
AVERAGEX (<table>, <expression>)
-
COUNT (<column>)
-
COUNTA (<column>)
-
COUNTAX (<table>, <expression>)
-
COUNTBLANK (<column>)
-
COUNTROWS (<table>)
-
COUNTX (<table>, <expression>)
-
CROSSJOIN (<table1>, <table2>, [<table3>] …)
-
DISTINCTCOUNT (<column>)
-
GENERATE (<table1>, <table2>)
-
GENERATEALL (<table1>, <table2>)
-
MAX (<column>)
-
MAXA (<column>)
-
MAXX (<table>, <expression>)
-
MIN (<column>)
-
MINA (<column>)
-
MINX (<table>, <expression>)
-
PRODUCT (<column>)
-
PRODUCTX (<table>, <expression>)
-
ROW (<name>, <expression>, [<name>, <expression>] …)
-
SELECTCOLUMNS (<table>, <name>, <scalar_expression>,
-
[<name>, <scalar_expression>] …)
-
SUM (<column>)
-
SUMMARIZE (<table>, <groupBy_columnName>, [<groupBy_columnName>] …, [<name>, <expression>] …)
-
SUMX (<table>, <expression>)
-
TOPN (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]] …)
DAX Filter Functions
DAX Filter functions return a column, a table, or values related to the current row. You can use DAX Filter functions to return specific data types, look up values in related tables, and filter by related values. DAX Lookup functions work by using tables and relationships between them. DAX Filter functions enable you to manipulate the data context to create dynamic calculations.
Following are some DAX Filter functions −
-
ADDMISSINGITEMS(<showAllColumn>, [<showAllColumn>] …, <table>, <groupingColumn>, [<groupingColumn>] … [filterTable] …)
-
ALL( {<table> | <column>, [<column>], [<column>] …} )
-
ALLEXCEPT(<table>, <column>, [<column>] …)
-
ALLNOBLANKROW(<table>|<column>)
-
ALLSELECTED([<tableName> | <columnName>])
-
CALCULATE (<expression>, <filter1>, <filter2>…)
-
CALCULATETABLE (<expression>, <filter1>, <filter2>…)
-
CROSSFILTER (<columnName1>, <columnName2>, <direction>)
-
DISTINCT (<column>)
-
EARLIER(<column>, <number>)
-
EARLIEST(<column>)
-
FILTER(<table>,<filter>)
-
FILTERS(<columnName>)
-
HASONEFILTER(<columnName>)
-
HASONEVALUE(<columnName>)
-
ISCROSSFILTERED (<columnName>)
-
ISFILTERED (<columnName>)
-
KEEPFILTERS (<expression>)
-
RELATED(<column>)
-
RELATEDTABLE(<tableName>)
-
SUBSTITUTEWITHINDEX (<table>, <indexColumnName>, <indexColumnsTable>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]] …])
-
USERELATIONSHIP(<columnName1>,<columnName2>)
-
VALUES(<TableNameOrColumnName>)
DAX Time Intelligence Functions
DAX Time Intelligence functions return a table of dates or use a table of dates to calculate an aggregation. These DAX functions help you create calculations that support the needs of Business Intelligence analysis by enabling you to manipulate data using time periods, including days, months, quarters and years.
Following are some DAX Time Intelligence functions −
-
CLOSINGBALANCEMONTH (<expression>,<dates>[,<filter>])
-
CLOSINGBALANCEQUARTER (<expression>,<dates>, [<filter>])
-
CLOSINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>])
-
DATEADD (<dates>,<number_of_intervals>, <interval>)
-
DATESBETWEEN (<dates>,<start_date>,<end_date>)
-
DATESINPERIOD (<dates>,<start_date>, <number_of_intervals>,<interval>)
-
DATESMTD (<dates>)
-
DATESQTD (<dates>)
-
DATESYTD (<dates>, [<year_end_date>])
-
ENDOFMONTH (<dates>)
-
ENDOFQUARTER (<dates>)
-
ENDOFYEAR (<dates> , [<year_end_date>])
-
FIRSTDATE (<dates>)
-
FIRSTNONBLANK (<column>,<expression>)
-
LASTDATE (<dates>)
-
LASTNONBLANK (<column>,<expression>)
-
NEXTDAY (<dates>)
-
NEXTMONTH (<dates>)
-
NEXTQUARTER (<dates>)
-
NEXTYEAR (<dates>, [<year_end_date>])
-
OPENINGBALANCEMONTH (<expression>,<dates>, [<filter>])
-
OPENINGBALANCEQUARTER (<expression>,<dates>, [<filter>])
-
OPENINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>])
-
PARALLELPERIOD (<dates>,<number_of_intervals>, <interval>)
-
PREVIOUSDAY(<dates>)
-
PREVIOUSMONTH(<dates>)
-
PREVIOUSQUARTER(<dates>)
-
PREVIOUSYEAR (<dates>, [<year_end_date>])
-
SAMEPERIODLASTYEAR(<dates>)
-
STARTOFMONTH(<dates>)
-
STARTOFQUARTER(<dates>)
-
STARTOFYEAR(<dates>)
-
TOTALMTD (<expression>,<dates>, [<filter>])
-
TOTALQTD(<expression>,<dates>, [<filter>])
-
TOTALYTD(<expression>,<dates>, [<filter>], [<year_end_date>])
DAX Date and Time Functions
DAX Date and Time functions are similar to the Excel date and time functions. However, DAX Date and Time functions are based on the datetime data type of DAX.
Following are DAX Date and Time functions −
- DATE(<year>, <month>, <day>)
- DATEVALUE(date_text)
- DAY(<date>)
- EDATE(<start_date>, <months>)
- EOMONTH(<start_date>, <months>)
- HOUR(<datetime>)
- MINUTE(<datetime>)
- MONTH(<datetime>)
- NOW()
- SECOND(<time>)
- TIME(hour, minute, second)
- TIMEVALUE(time_text)
- TODAY()
- WEEKDAY(<date>, <return_type>)
- WEEKNUM(<date>, <return_type>)
- YEAR(<date>)
- YEARFRAC(<start_date>, <end_date>, <basis>)
DAX Information Functions
DAX Information functions look at the cell or row that is provided as an argument and tell you whether the value matches the expected type.
Following are some DAX Information functions −
-
CONTAINS (<table>, <columnName>, <value>, [<columnName>, <value>]…)
-
CUSTOMDATA()
-
ISBLANK(<value>)
-
ISERROR(<value>)
-
ISEVEN(number)
-
ISLOGICAL(<value>)
-
ISNONTEXT(<value>)
-
ISNUMBER(<value>)
-
ISONORAFTER (<scalar_expression>, <scalar_expression>, [sort_order], [<scalar_expression>, <scalar_expression>, [sort_order]]…)
-
ISTEXT(<value>)
-
LOOKUPVALUE (<result_columnName>, <search_columnName>, <search_value>, [<search_columnName>, <search_value>]…)
-
USERNAME()
DAX Logical Functions
DAX Logical Functions return information about values in an expression. For example, DAX TRUE function lets you know whether an expression that you are evaluating returns a TRUE value.
Following are DAX Logical functions −
- AND(<logical1>,<logical2>)
- FALSE()
- IF(logical_test>,<value_if_true>, value_if_false)
- IFERROR(value, value_if_error)
- NOT(<logical>)
- OR(<logical1>,<logical2>)
- SWITCH(<expression>, <value>, <result>, [<value>, <result>]…, [<else>])
- TRUE()
DAX Math and Trig Functions
DAX Mathematical and Trigonometric functions are very similar to the Excel mathematical and trigonometric functions.
Following are some DAX Math and Trig functions −
- ABS(<number>)
- ACOS(number)
- ACOSH(number)
- ASIN(number)
- ASINH(number)
- ATAN(number)
- ATANH(number)
- CEILING(<number>, <significance>)
- COMBIN(number, number_chosen)
- COMBINA(number, number_chosen)
- COS(number)
- COSH(number)
- CURRENCY(<value>)
- DEGREES(angle)
- DIVIDE(<numerator>, <denominator>, [<alternateresult>])
- EVEN(number)
- EXP(<number>)
- FACT(<number>)
- FLOOR(<number>, <significance>)
- GCD(number1, [number2], …)
- INT(<number>)
- ISO.CEILING(<number>, [<significance>])
- LCM(number1, [number2], …)
- LN(<number>)
- LOG(<number>,<base>)
- LOG10(<number>)
- INT(<number>)
- MROUND(<number>, <multiple>)
- ODD(number)
- PI()
- POWER(<number>, <power>)
- PRODUCT(<column>)
- PRODUCTX(<table>, <expression>)
- QUOTIENT(<numerator>, <denominator>)
- RADIANS(angle)
- RAND()
- RANDBETWEEN(<bottom>,<top>)
- ROUND(<number>, <num_digits>)
- ROUNDDOWN(<number>, <num_digits>)
- ROUNDUP(<number>, <num_digits>)
- SIN(number)
- SINH(number)
- SIGN(<number>)
- SQRT(<number>)
- SUM(<column>)
- SUMX(<table>, <expression>)
- TAN(number)
- TANH(number)
- TRUNC(<number>,<num_digits>)
DAX Other Functions
These DAX functions perform unique actions that cannot be defined by any of the categories most other functions belong to.
Following are some DAX Other functions −
-
EXCEPT(<table_expression1>, <table_expression2>
-
GROUPBY (<table>, [<groupBy_columnName1>], [<name>, <expression>] … )
-
INTERSECT(<table_expression1>, <table_expression2>)
-
ISEMPTY(<table_expression>)
-
NATURALINNERJOIN(<leftJoinTable>, <rightJoinTable>)
-
NATURALLEFTOUTERJOIN(<leftJoinTable>, <rightJoinTable>)
-
SUMMARIZECOLUMNS (<groupBy_columnName>, [<groupBy_columnName>]…, [<filterTable>] …, [<name>, <expression>]…)
-
UNION (<table_expression1>, <table_expression2>, [<table_expression>]…)
-
VAR <name> = <expression>
DAX Parent and Child Functions
DAX Parent and Child functions are useful in managing data that is presented as a parent/child hierarchy in the Data Model.
Following are some DAX Parent and Child functions −
- PATH(<ID_columnName>, <parent_columnName>)
- PATHCONTAINS(<path>, <item>)
- PATHITEM(<path>, <position>, [<type>])
- PATHITEMREVERSE(<path>, <position>, [<type>])
- PATHLENGTH(<path>)
DAX Statistical Functions
DAX Statistical functions are very similar to the Excel Statistical functions.
Following are some DAX Statistical functions −
-
BETA.DIST(x, alpha, beta, cumulative,[A],[B])
-
BETA.INV(probability, alpha, beta,[A],[B])
-
CHISQ.INV(probability, deg_freedom)
-
CHISQ.INV.RT(probability, deg_freedom)
-
CONFIDENCE.NORM(alpha, standard_dev, size)
-
CONFIDENCE.T(alpha, standard_dev, size)
-
DATATABLE (ColumnName1, DataType1, ColumnName2, DataType2 …, {{Value1, Value2…}, {ValueN, ValueN+1…}…})
-
EXPON.DIST(x, lambda, cumulative)
-
GEOMEAN(<column>)
-
GEOMEANX(<table>, <expression>)
-
MEDIAN(<column>)
-
MEDIANX(<table>, <expression>)
-
PERCENTILE.EXC(<column>, <k>)
-
PERCENTILE.INC(<column>, <k>)
-
PERCENTILEX.EXC(<table>, <expression>, k)
-
PERCENTILEX.EXC(<table>, <expression>, k)
-
POISSON.DIST(x, mean, cumulative)
-
RANK.EQ(<value>, <columnName>[, <order>])
-
RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])
-
SAMPLE (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…)
-
STDEV.P(<ColumnName>)
-
STDEV.S(<ColumnName>)
-
STDEVX.P(<table>, <expression>)
-
STDEVX.S(<table>, <expression>)
-
SQRTPI(number)
-
VAR.P(<columnName>)
-
VAR.S(<columnName>)
-
VARX.P(<table>, <expression>)
-
VARX.S(<table>, <expression>)
-
XIRR(<table>, <values>, <dates>, [guess])
-
XNPV(<table>, <values>, <dates>, <rate>)
DAX Text Functions
DAX Text functions work with tables and columns. With DAX Text functions you can return the part of a string, search for text within a string or concatenate string values. You can also control the formats for dates, times, and numbers.
Following are some DAX Text functions −
- BLANK()
- CODE(text)
- CONCATENATE(<text1>, <text2>)
- CONCATENATEX(<table>, <expression>, [delimiter])
- EXACT(<text1>,<text2>)
- FIND(<find_text>, <within_text>, [<start_num>], [<NotFoundValue>])
- FIXED(<number>, <decimals>, <no_commas>)
- FORMAT(<value>, <format_string>)
- LEFT(<text>, <num_chars>)
- LEN(<text>)
- LOWER(<text>)
- MID(<text>, <start_num>, <num_chars>)
- REPLACE(<old_text>, <start_num>, <num_chars>, <new_text>)
- REPT(<text>, <num_times>)
- RIGHT(<text>, <num_chars>)
- SEARCH(<find_text>, <within_text>, [<start_num>], [<NotFoundValue>])
- SUBSTITUTE(<text>, <old_text>, <new_text>, <instance_num>)
- TRIM(<text>)
- UPPER (<text>)
- VALUE(<text>)
Excel DAX — Understanding DAX Functions
In Excel 2013, DAX has 246 functions. You have already learnt about the different types of DAX functions in the chapter – DAX Functions. However, if you have to use a DAX function in a DAX formula, you need to understand the function in detail. You should know the syntax of the function, the parameter types, what the function returns, etc.
If you are writing a DAX formula, it is suggested to use the DAX functions where applicable. For this, you can refer to the tutorial – DAX Functions in this tutorials library for an indepth understanding of where and how to use each of the 246 DAX functions. You can always go back and forth between this tutorial and DAX Functions tutorial to obtain mastery on DAX.
In this chapter, you will understand how to read and interpret the DAX functions in the DAX Functions tutorial.
DAX Function – Explanation Structure
In the DAX functions tutorial, each DAX function is explained in a standard structure, comprising of the following sections −
- Description
- Syntax
- Parameters
- Return Value
- Remarks
- Example
You will learn about each of these in the following sections.
Description
In the Description section, you will learn what the DAX function is about and where it can be used.
Syntax
In the Syntax section, you will learn the exact function name and the respective parameters.
Parameters
In the Parameters section, you will learn about each of the parameters of the specific DAX function, whether a parameter is an input or an output and if there are any options. As seen in the chapter — DAX Standard Parameters, only the standard parameter names will be used.
Return Value
In the Return Value section, you will learn about what value the DAX function will return and its data type.
Remarks
In the Remarks section, you will learn about any extra information that you need to know about the usage of the DAX function.
Example
The DAX function description will be ended with an example of the usage of the function.
Excel DAX — Evaluation Context
In DAX, context is an important term that you should be aware of, while writing DAX formulas. Also referred to as evaluation context, DAX context is used to determine the evaluation of a DAX formula and the corresponding result. This means, the results of a DAX formula can vary according to the context. You should clearly understand how a specific DAX context is used and how the results can be different.
Evaluation context enables you to perform dynamic analysis, in which the results of a DAX formula can change to reflect the current row or a cell selection and also any related data. Understanding context and using context effectively are very important to build powerful DAX formulas, perform dynamic data analysis, and troubleshoot problems in DAX formulas. Evaluation contexts are the basis of all of the advanced features of DAX that you need to master to create complex data analysis reports.
As you keep referencing to DAX functions for relevant usage in DAX formulas, you need to refer to this chapter on DAX context to obtain clarity on the results.
Types of Context in DAX
DAX supports the following evaluation contexts −
- Row Context
- Filter Context
When a DAX formula is evaluated, all the contexts will be taken into account and are applied as relevant. The contexts exist together and the result of the formula will be different based on the context that is used while calculating a value. For example, when you select fields for rows, columns, and filters in a PivotTable, the subtotals are dynamically calculated based on which row and which column the subtotal/total is associated with and the values in the rows and columns are determined by the filters used.
Row Context
Row context means that the DAX formula or the DAX function knows which row of the table it is referencing at any point in time. You can consider row context as the current row. The formula will get calculated row-by-row with the row context.
Some DAX functions (e.g., the X-functions, FILTER ()) and all calculated columns have a row context. For example, if you create a calculated column Year with the DAX formula = YEAR ([Date]), the values of the calculated column are obtained by applying the given DAX formula on the given column in the table, row by row.
This means that if you have created a calculated column, the row context consists of the values in each individual row and the values in the columns that are related to the current row, as determined by the DAX formula used. Though the DAX formula does not contain the reference to a row, DAX implicitly understands the row context while calculating values.
DAX creates a row context automatically when you define a calculated column and all the calculated values with the DAX formula used will appear in the calculated column.
In contrast, when you have a DAX function such as SUMX, the values calculated row by row get summed up and only the final result will be displayed. That is, the intermediate values are discarded.
When you have related tables, the row context determines which rows in the related table are associated with the current row. However, the row context does not propagate through relationships automatically. You have to use the DAX functions — RELATED and RELATEDTABLE for this.
Multiple Row Context
DAX has iterator functions like SUMX. You can use these functions to nest row contexts. With this, programmatically you can have a recursion over an inner loop and an outer loop, where you can have multiple current rows and current row contexts.
For example, you can use the DAX function Earlier () that stores the row context from the operation that preceded the current operation. This function stores two sets of context in memory — one set of context represents the current row for the inner loop of the formula, and another set of context represents the current row for the outer loop of the formula. DAX automatically feeds the values between the two loops so that you can create complex aggregates.
For an example, refer to the scenario — Creating a DAX Formula that Dynamically Ranks Values in the chapter Scenarios — Ranking and Comparing Values.
Filter Context
Filter context refers to any filtering that is applied to the Data Model in DAX. Filter context is created by a PivotTable and also by the DAX functions.
Filter Context Created by a PivotTable
Filter Context created by a PivotTable is the natural filtering that is applied by the selections made on the PivotTable fields from the following −
- Rows
- Columns
- Filters
- Slicers
The filter context created by a PivotTable, filters the underlying tables in the Data Model. If the tables are related, then the filters flow down from the lookup tables to data tables. That means, you can filter the data tables based on the results from the lookup tables. The filter propagation does not happen the other way round. However, you can use DAX formulas to filter the lookup tables based on the results from the data tables.
Filter Context Created by DAX Functions
You can use DAX Filter functions to define calculated fields and calculated columns, containing filter expressions that control the values used by the DAX formula. These calculated fields and calculated columns then become part of the PivotTable fields list and you can add them to the PivotTable. You can also selectively clear the filters on particular columns with these DAX Filter functions. An example of a powerful DAX Filter function to create Filter Context is CALCULATE (). For an example, refer to the chapter Scenarios — Performing Complex Calculations.
Filter Context as an Addition to Row Context
Row context does not automatically create a filter context. You can achieve the same with the DAX formulas containing DAX Filter functions.
Excel DAX — Formulas
DAX is a formula language for creating custom calculations in Power PivotTables. You can use the DAX functions that are designed to work with relational data and perform dynamic aggregation in DAX formulas.
DAX formulas are very similar to Excel formulas. To create a DAX formula, you type an equal sign, followed by a function name or expression and any required values or arguments.
DAX Functions vs. DAX Formulas
DAX formulas can include DAX functions and leverage their usage. This is where DAX formulas tend to differ from DAX functions in important ways.
-
A DAX function always reference a complete column or a table. If you want to use only particular values from a table or column, you can add filters to the formula.
-
If you want to customize calculations on a row by row basis, Power Pivot provides functions that let you use the current row value or a related value to perform calculations that vary by context.
-
DAX includes a type of function that returns a table as its result, rather than a single value. These functions can be used to provide input to other functions, thus calculating values for entire tables or columns.
-
Some DAX functions provide time intelligence, which lets you create calculations using meaningful ranges of dates and compare the results across parallel periods.
Understanding DAX Formula Syntax
Every DAX formula has the following syntax −
-
Each formula must begin with an equal sign.
-
To the right of the equal sign, you can either type or select a function name, or type an expression. The expression can contain table names and column names connected by DAX operators.
Following are some valid DAX formulas −
- [column_Cost] + [column_Tax]
- = Today ()
Understanding IntelliSense Feature
DAX provides the IntelliSense feature that will enable you to write DAX formulas promptly and correctly. With this feature, you need not type the table, column, and function names completely, but select the relevant names from the dropdown list while writing a DAX formula.
-
Begin to type the first few letters of the function name. AutoComplete displays a list of available functions with the names beginning with those letters.
-
Place the pointer on any of the function names. IntelliSense tooltip will be displayed giving you the use of the function.
-
Click the function name. The function name appears in the formula bar and the syntax is displayed, which will guide you as you select the arguments.
-
Type the first letter of the table name that you want. AutoComplete displays a list of available tables and columns with the names beginning with that letter.
-
Press TAB or click the name to add an item from the AutoComplete list to the formula.
-
Click the Fx button to display a list of available functions. To select a function from the dropdown list, use the arrow keys to highlight the item and click OK to add the function to the formula.
-
Supply the arguments to the function by selecting them from a dropdown list of possible tables and columns or by typing in required values.
Usage of this handy IntelliSense feature is highly recommended.
Where to Use DAX Formulas?
You can use DAX formulas in creating calculated columns and calculated fields.
-
You can use DAX formulas in calculated columns, by adding a column and then typing an expression in the formula bar. You create these formulas in the PowerPivot window.
-
You can use DAX formulas in calculated fields. You create these formulas −
-
In the Excel window in the Calculated Field dialog box, or
-
In the Power Pivot window in the calculation area of a table.
-
The same formula can behave differently depending on whether the formula is used in a calculated column or a calculated field.
-
In a calculated column, the formula is always applied to every row in the column, throughout the table. Depending on the row context, the value might change.
-
In a calculated field, however, the calculation of results is strongly dependent on the context. That is, the design of the PivotTable and the choice of row and column headings affects the values that are used in calculations.
It is important to understand the concept of context in DAX to write DAX formulas. This can be a bit difficult in the beginning of your DAX journey, but once you get a grasp on it, you can write effective DAX formulas that are required for complex and dynamic data analysis. For details, refer to the chapter – DAX Context.
Creating a DAX Formula
You have already learnt about the IntelliSense feature in a previous section. Remember to use it while creating any DAX formula.
To create a DAX formula, use the following steps −
-
Type an equal sign.
-
To the right of the equal sign, type the following −
-
Type the first letter of a function or table name and select the complete name from the dropdown list.
-
If you have chosen a function name, type parenthesis ‘(‘.
-
If you have chosen the table name, type bracket ‘[‘. Type the first letter of the column name and select the complete name from the dropdown list.
-
Close the column names with ‘]’ and function names with ‘)’.
-
Type a DAX operator between expressions or type ‘,’ to separate function arguments.
-
Repeat steps 1 — 5 till the DAX formula is complete.
-
For example, you want to find the total sales amount in the East region. You can write a DAX formula as shown below. East_Sales is the name of the table. Amount is a column in the table.
SUM ([East_Sales[Amount])
As already discussed in the chapter – DAX Syntax, it is a recommended practice to use the table name along with the column name in every reference to any column name. This is termed as – “the fully qualified name”.
The DAX formula can vary based on whether it is for a calculated field or calculated column. Refer to the sections below for details.
Creating a DAX Formula for a Calculated Column
You can create a DAX formula for a calculated column in the Power Pivot window.
- Click the tab of the table in which you want to add the calculated column.
- Click the Design tab on the Ribbon.
- Click Add.
- Type the DAX formula for the calculated column in the formula bar.
= DIVIDE (East_Sales[Amount], East_Sales[Units])
This DAX formula does the following for every row in the table East_Sales −
-
Divides the value in Amount column of a row by the value in Units column in the same row.
-
Places the result in the new added column in the same row.
-
Repeats steps 1 and 2 iteratively till it completes all the rows in the table.
You have added a column for Unit Price at which those units are sold with the above formula.
-
As you can observe, calculated columns require computation and storage space as well. Hence, use calculated columns only if necessary. Use calculated fields where possible and sufficient.
Refer to the chapter — Calculated Columns for details.
Creating a DAX Formula for a Calculated Field
You can create a DAX formula for a calculated field either in the Excel window or in the Power Pivot window. In the case of calculated field, you need to provide the name beforehand.
-
To create a DAX formula for a calculated field in the Excel window, use the Calculated Field dialog box.
-
To create a DAX formula for a calculated field in the Power Pivot window, click a cell in the calculation area in the relevant table. Start the DAX formula with CalculatedFieldName:=.
For example, Total East Sales Amount:=SUM ([East_Sales[Amount])
If you use Calculated Field dialog box in the Excel window, you can check the formula before you save it and make it as a mandatory habit to ensure the use of correct formulas.
For more details on these options, refer to the chapter – Calculated Fields.
Creating DAX Formulas Using the Formula Bar
Power Pivot window also has a formula bar that is like Excel window formula bar. Formula bar makes it easier to create and edit formulas, using the AutoComplete functionality so as to minimize syntax errors.
-
To enter the name of a table, begin typing the name of the table. Formula AutoComplete provides a dropdown list containing valid table names that begin with those letters. You can start with one letter and type more letters to narrow down the list if required.
-
To enter the name of a column, you can select it from the list of column names in the selected table. Type a bracket ‘[‘, to the right of the table name, and then choose the column from the list of columns in the selected table.
Tips for Using AutoComplete
Following are some tips for using AutoComplete −
-
You can nest functions and formulas in a DAX formula. In such a case, you can use Formula AutoComplete in the middle of an existing formula with nested functions. The text immediately before the insertion point is used to display values in the dropdown list and all of the text after the insertion point remains unchanged.
-
Defined names that you create for constants do not get displayed in the AutoComplete dropdown list, but you can still type them.
-
The closing parenthesis of functions is not automatically added. You need to do it by yourself.
-
You must make sure that each function is syntactically correct.
Understanding Insert Function Feature
You can find the Insert Function button labelled as fx, both in the Power Pivot window and Excel window.
-
The Insert Function button in the Power Pivot window is to the left of formula bar.
-
The Insert Function button in the Excel window is in the Calculated Field dialog box to the right of Formula.
When you click on the fx button, Insert Function dialog box appears. The Insert Function dialog box is the easiest way to find a DAX function that is relevant to your DAX formula.
The Insert Function dialog box helps you select functions by category and provides short descriptions for each function.
Using Insert Function in a DAX Formula
Suppose you want to create the following calculated field −
Medal Count: = COUNTA (]Medal])
You can use Insert Function dialog box using the following steps −
- Click the calculation area of the Results table.
- Type the following in the formula bar −
Medal Count: =
- Click the Insert Function button (fx).
Insert Function dialog box appears.
-
Select Statistical in the Select a category box as shown in the following screenshot.
-
Select COUNTA in the Select a function box as shown in the following screenshot.
As you can observe, the selected DAX function syntax and the function description are displayed. This enables you to make sure that it is the function that you want to insert.
-
Click OK. Medal Count:=COUNTA( appears in the formula bar and a tooltip displaying the function syntax also appears.
-
Type [. This means you are about to type a column name. The names of all the columns and the calculated fields in the current table will be displayed in the dropdown list. You can use IntelliSense to complete the formula.
-
Type M. The displayed names in the dropdown list will be limited to those starting with ‘M’.
-
Click Medal.
-
Double-click Medal. Medal Count: = COUNTA([Medal] will be displayed in the formula bar. Close the parenthesis.
-
Press Enter. You are done. You can use the same procedure to create a calculated column also. You can also follow the same steps to insert a function in the Calculated Field dialog box in the Excel window using the Insert Function feature.
-
Click the Insert Function (fx) button to the right of Formula.
Insert Function dialog box appears. The rest of the steps are the same as above.
Using Multiple Functions in a DAX Formula
DAX formulas can contain up to 64 nested functions. But, it is unlikely that a DAX formula contains so many nested functions.
If a DAX formula has many nested functions, it has the following disadvantages −
- The formula would be very difficult to create.
- If the formula has errors, it would be very difficult to debug.
- The formula evaluation would not be very fast.
In such cases, you can split the formula into smaller manageable formulas and build the large formula incrementally.
Creating a DAX Formula Using Standard Aggregations
When you perform data analysis, you will perform calculations on aggregated data. There are several DAX aggregation functions, such as SUM, COUNT, MIN, MAX, DISTINCTCOUNT, etc. that you can use in DAX formulas.
You can automatically create formulas using standard aggregations by using the AutoSum feature in the Power Pivot window.
- Click the Results tab in the Power Pivot window. Results table will be displayed.
- Click the Medal column. The entire column – Medal will be selected.
- Click the Home tab on the Ribbon.
- Click the down arrow next to AutoSum in the Calculations group.
- Click COUNT in the dropdown list.
As you can observe, the calculated field Count of Medal appears in the calculation area below the column – Medal. The DAX formula also appears in the formula bar −
Count of Medal: = COUNTA([Medal])
The AutoSum feature has done the work for you – created the calculated field for data aggregation. Further, AutoSum has taken the appropriate variant of the DAX function COUNT, i.e. COUNTA (DAX has COUNT, COUNTA, COUNTAX functions).
A word of caution – To use AutoSum feature, you need to click the down arrow next to AutoSum on the Ribbon. If you click on the AutoSum itself instead, you will get −
Sum of Medal: = SUM([Medal])
And an error is flagged as Medal is not a numeric data column and the text in the column cannot be converted to numbers.
You can refer to the chapter — DAX Error Reference for details on DAX errors.
DAX Formulas and the Relational Model
As you are aware, in the Data Model of Power Pivot, you can work with multiple tables of data and connect the tables by defining relationships. This will enable you to create interesting DAX formulas that use the correlations of the columns among the related tables for calculations.
When you create a relationship between two tables, you are expected to make sure that the two columns used as keys have values that match, at least for most of the rows, if not completely. In the Power Pivot Data Model, it is possible to have non-matching values in a key column and still create a relationship, because Power Pivot does not enforce referential integrity (look at the next section for details). However, the presence of blank or non-matching values in a key column might affect the results of the DAX formulas and the appearance of PivotTables.
Referential Integrity
Establishing referential integrity involves building a set of rules to preserve the defined relationships between tables when you enter or delete data. If you do not exclusively ensure this, as Power Pivot does not enforce it, you might not get correct results with the DAX formulas created before data changes are made.
If you enforce referential integrity, you can prevent the following pitfalls −
-
Adding rows to a related table when there is no associated row in the primary table (i.e. with matching values in the key columns).
-
Changing data in a primary table that would result in orphan rows in a related table (i.e. rows with a data value in the key column that does not have a matching value in the primary table key column).
-
Deleting rows from a primary table when there are matching data values in the rows of the related table.
Updating the Results of DAX Formulas
DAX formulas are used in calculations involving large data, including data from external data sources. The data can be subjected to changes from time to time as the DAX calculations are meant for live data as well.
The results of DAX formulas need to get updated on two occasions −
-
Data Refresh − When the data is refreshed.
-
Recalculation − When there are changes in the DAX formula.
Understanding Data Refresh vs. Recalculation
Data refresh and recalculation are two separate but related operations.
-
Data refresh is the process of updating the data in the Data Model in your workbook obtaining up-to-date data from external data sources.
-
Recalculation is the process of updating all the columns, tables, and PivotTables in your workbook that contain DAX formulas, to reflect the changes in the underlying data that result from the changes to DAX formulas themselves.
You should not save or publish the workbook until the DAX formulas in it have been recalculated.
Different Ways to Update Data in Data Model
Power Pivot does not automatically detect changes in external data sources.
-
You can refresh data manually from the Power Pivot window at intervals that you can specify.
-
You can schedule an automatic data refresh from external sources, if you have published the workbook to a SharePoint site.
For details on these, refer to the chapter – Updating Data in Data Model.
Recalculation of DAX Formulas
Recalculation of a DAX formula is an important task, because during recalculation, column dependencies are checked and you will be notified if a column has changed, if the data is invalid, or if an error has appeared in a DAX formula that used to work.
Recalculation can affect performance in the following ways −
-
For a calculated column, the result of DAX formula should always be recalculated for the entire column, whenever you change the DAX formula.
-
For a calculated field, the result of DAX formula is not calculated until the calculated field is placed in the context of a PivotTable or a PivotChart. The DAX formula will be recalculated when you change any row or column heading that affects the filters on the data or when you manually refresh the PivotTable.
In DAX, recalculating formulas can be done automatically or manually.
To learn more about recalculation, refer to the chapter – Recalculating DAX Formulas.
Excel DAX — Updating Data in the Data Model
DAX is used for calculations on the data in the Data Model in Excel Power Pivot. DAX enables data modeling and reporting activities to be handled in an effective way. However, this requires updating the data in the Data Model from time to time so as to reflect the current data.
You can import data from an external data source into the Data Model of your workbook by establishing a data connection. You can update the data from the source whenever you choose. This option is handy if you are getting data from relational databases that contain live sales information or data feeds that are updated several times a day.
Different Ways of Updating Data in the Data Model
You can update the data in the Data Model in the following ways −
- Refreshing data in the Data Model from time to time.
- Making changes to data sources, such as connection properties.
- Updating the data in the Data Model after the source data has changed.
- Filtering the data to selectively load rows from a table in the data source.
Refreshing Data in the Data Model
In addition to getting updated data from an existing source, you will need to refresh data in your workbook whenever you make changes to the schema of the source data. These changes can include adding columns or tables, or changing the rows that are imported.
Note that addition of data, changing data, or editing filters always triggers recalculation of DAX formulas that depend on that data source. Refer to the chapter – Recalculating DAX Formulas for details.
You have two types of data refresh in Data Model −
Manual Refresh
If you choose manual refresh option, you can refresh the data in the Data Model manually at any time. You can refresh all data, which is the default, or you can manually choose the tables and columns to refresh for individual data sources.
Automatic or Scheduled Refresh
If you have published your workbook to a PowerPivot Gallery or SharePoint site that supports PowerPivot, you or the SharePoint administrator can create a schedule for automatically updating the data in the workbook. In such a case, you can schedule unattended data refresh on the server.
Manually Refreshing an Existing Data Source
You can manually refresh your data any time, if you need to update the data from an existing data source or get the recent data for designing new DAX formulas. You can refresh a single table, all tables that share the same data connection or all tables in the Data Model.
If you have imported data from a relational data source, such as SQL Server and Oracle, you can update all the related tables in one operation. The operation of loading new or updated data into the Data Model often triggers recalculation of DAX formulas, both of which might require some time to complete. Hence, you should be aware of the potential impact before you change data sources or refresh the data that is obtained from the data source.
To refresh data for a single table or all tables in a Data Model, do the following −
- Click the Home tab on the Ribbon in the Power Pivot window.
- Click Refresh.
- Click Refresh in the dropdown list for refreshing the selected table.
- Click Refresh All in the dropdown list for refreshing all the tables.
To refresh data for all tables that use the same connection in a Data Model, do the following −
- Click the Home tab on the Ribbon in Power Pivot window.
- Click the Existing Connections in the Get External Data group.
Existing Connections dialog box appears.
- Select a connection.
- Click the Refresh button.
Data Refresh dialog box appears and data refresh progress information is displayed as the PowerPivot engine reloads data from the selected table or from all tables from the data source.
There are three possible outcomes −
-
Success − Reports on the number of rows imported into each table.
-
Error − An error can occur if the database is offline, you no longer have permissions. A table or column is deleted or renamed in the source.
-
Cancelled − This means Excel did not issue the refresh request, probably because refresh is disabled on the connection.
Click the Close button.
Changing a Data Source
To change the data in your Data Model, you can edit the connection information or update the definition of the tables and columns used in your Data Model in the Power Pivot window.
You can make the following changes to the existing data sources −
Connections
- Edit the database name or the server name.
- Change the name of the source text file, spreadsheet, or data feed.
- Change the location of the data source.
- For relational data sources, change the default catalog or initial catalog.
- Change the authentication method or the credentials used to access the data.
- Edit advanced properties on the data source.
Tables
- Add or remove a filter on the data.
- Change the filter criteria.
- Add or remove tables.
- Change the table names.
- Edit mappings between tables in the data source and tables in the Data Model.
- Select different columns from the data source.
Columns
- Change the column names.
- Add new columns.
- Delete columns from the Data Model (does not affect the data source).
You can edit the properties of an existing data source in the following ways −
-
You can change the connection information, including the file, feed, or database used as a source, its properties or other provider specific connection options.
-
You can change the table and column mappings and remove references to columns that are no longer used.
-
You can change the tables, views, or columns that you get from the external data source.
Modifying a Connection to an Existing Data Source
You can modify the connection that you have created to an external data source by changing the external data source used by the current connection. However, the procedure to be followed depends on the data source type.
- Click the Home tab on the Ribbon in the PowerPivot window.
- Click the Existing Connections in the Get External Data group.
Existing Connections dialog box appears. Select the connection that you want to modify.
Depending on the type of the data source you are changing, the provider might be different. Also the properties that are available may require change. Consider a simple example of a connection to an Excel workbook that contains the data.
-
Click the Edit button. Edit Connection dialog box appears.
-
Click the Browse button to locate another database of the same type (Excel workbook in this example), but with a different name or location.
-
Click the Open button.
The new file will get selected. A message appears stating that you have modified connection information and you need to save and refresh the tables to verify the connection.
-
Click the Save button. You will be back in the Existing Connections dialog box.
-
Click the Refresh button. Data Refresh dialog box appears displaying the data refresh progress. The status of data refresh will be displayed. Refer to the section — Manually Refreshing an Existing Data Source for details.
-
Click Close, once the data refresh is a success.
-
Click Close in the Existing Connections dialog box.
Editing Table and Column Mappings (Bindings)
To edit the column mappings when a data source changes, do the following −
-
Click the tab that contains the table you want to modify in the Power Pivot window.
-
Click the Design tab on the Ribbon.
-
Click the Table Properties.
Edit Table Properties dialog box appears.
You can observe the following −
-
The name of the selected table in the Data Model is displayed in the Table Name box.
-
The name of the corresponding table in the external data source is displayed in the Source Name box.
-
There are two options for column names from – Source and Modal.
-
If the columns are named differently in the data source and in the Data Model, you can toggle between the two sets of column names by selecting these options.
-
Preview of the selected table appears in the dialog box.
You can edit the following −
-
To change the table that is used as a data source, select a different table than the selected one in the Source Name dropdown list.
-
Change the column mappings if needed −
-
To add a column that is present in the source but not in the Data Model, select the checkbox beside the column name. Repeat for all the columns that are to be added. The actual data will be loaded into the Data Model, the next time you refresh.
-
If some columns in the Data Model are no longer available in the current data source, a message appears in the notification area that lists the invalid columns. You do not need to do anything.
-
-
Click the Save button.
When you save the current set of table properties, you will get a message – Please wait. Then the number of rows retrieved will be displayed.
In the table in the Data Model, any invalid columns are automatically removed and new columns are added.
Changing a Column Name and Data Type
You can change the name of a column in a table in the Data Model as follows −
-
Double-click on the header of the column. The name of the column in the header will get highlighted.
-
Type the new column name, overwriting the old name. Alternatively, you can change the name of a column in a table in the Data Model as follows:
-
Select the column by clicking on its header.
-
Right-click the column.
-
Click Rename Column in the dropdown list.
The name of the column in the header will get highlighted. Type the new column name, overwriting the old name.
As you have learnt, all the values in a column in a table in the Data Model must be of the same data type.
To change the data type of a column, do the following −
-
Select the column that you want to change by clicking its header.
-
Click the Home tab on the Ribbon.
-
Click the controls in the Formatting group to modify the column’s data type and format.
Adding / Changing a Filter to a Data Source
You can add a filter to a data source when you import data to restrict the number of rows in the table in the Data Model. Later, you can add more rows or decrease the number of rows in the table in the Data Model by changing the filter that you defined earlier.
Adding a Filter to a Data Source During Import
To add a new filter to a data source during data import, do the following −
- Click the Home tab on the Ribbon in Power Pivot window.
- Click one of the data sources in the Get External Data group.
Table Import Wizard dialog box appears.
- Proceed to the step – Select Tables and Views.
- Select a table and then click Preview & Filter.
Preview Selected Table dialog box appears.
- Click the column on which you want to apply filter.
- Click the down arrow to the right of the column heading.
To add a filter, do one of the following −
-
In the list of column values, select or clear one or more values to filter by and then click OK.
However, if the number of values is extremely large, individual items might not be shown in the list. Instead, you will see the message — «Too many items to show.»
-
Click Number Filters or Text Filters (depending on the data type of the column).
-
Then, click one of the comparison operator commands (such as Equals), or click Custom Filter. In the Custom Filter dialog box, create the filter and then click OK.
-
Note − If you make a mistake at any stage, click the Clear Row Filters button and start over.
- Click OK. You will be back to Select Tables and Views page of Table Import Wizard.
As you can observe, in the column – Filter Details, a link Applied Filters appears for the column on which you defined the filter.
You can click the link to view the filter expression that was built by the wizard. But, the syntax for each filter expression depends on the provider and you cannot edit it.
- Click Finish to import the data with filters applied.
- Close the Table Import Wizard.
Changing a Filter to an Existing Data Source
After you have imported the data, you might have to update it from time to time, by either adding more rows or by restricting the existing rows in the table. In such a case, you can change the existing filters on the table or add new filters.
-
Click the Home tab on the Ribbon in Power Pivot window.
-
Click the Existing Connections in the Get External Data group. Existing Connections dialog box appears.
-
Click the connection that contains the table on which you have to change the filter.
-
Click the Open button.
You will get into Table Import Wizard dialog box. Repeat the steps in the previous section to filter the columns.
Excel DAX — Recalculating DAX Formulas
Recalculation of a DAX formula is required to reflect changes in the data and changes in the formula itself. However, recalculating a DAX formula involves performance cost.
Even then, to obtain accurate results, recalculation is essential. During recalculation, column dependencies are checked and you will be notified if a column has changed, if the data is invalid or if an error has appeared in a DAX formula that used to work.
Types of Recalculation
You have two options for recalculating DAX formulas −
- Automatic Recalculation Mode (default)
- Manual Recalculation Mode
By default, Power Pivot automatically recalculates as required while optimizing the time required for processing. However, you can choose to update calculations manually, if you are working with complex formulas or very large data sets and want to control the timing of updates.
Both automatic and manual modes of recalculating DAX formulas have advantages. However, the recommended way is to use automatic recalculation mode. This way you can keep the Power Pivot data in sync and prevent problems caused by deletion of data, changes in names or data types or missing dependencies.
Recalculating DAX Formulas Automatically
If you choose the default mode of recalculating DAX formulas, i.e. recalculating automatically, any changes to data that would cause the result of any DAX formula to change will trigger recalculation of the entire column that contains the DAX formula.
The following changes always require recalculation of DAX formulas −
-
Values from an external data source have been refreshed.
-
The DAX formula itself is changed.
-
Names of tables or columns that are referenced in the DAX formula have been changed.
-
Relationships between tables have been added, modified or deleted.
-
New calculated fields or calculated columns have been added.
-
Changes have been made to other DAX formulas within the workbook, so columns or calculations that depend on those DAX formulas need to be recalculated.
-
Rows have been inserted or deleted in the table.
-
You applied a filter that requires execution of a query to update the data set. The filter could have been applied either in a DAX formula or as part of a PivotTable or PivotChart.
When to Use Manual Recalculation Mode?
You can use manual recalculation mode until you are ready with all your required DAX formulas in your workbook. This way, you can avoid incurring the cost of computing formula results on the workbook that is still in the draft state.
You can use manual recalculation of DAX formulas in the following conditions −
-
You are designing a DAX formula by using a template and want to change the names of the columns and tables used in the DAX formula before you validate it.
-
You know that some data in the workbook has changed but you are working with a different column that has not changed so you want to postpone a recalculation.
-
You are working in a workbook that has many dependencies and want to defer recalculation till you are sure that all the necessary changes have been made.
But, you should be aware that as long as the workbook is configured to manual recalculation mode, any validation or checking of formulas is not performed. This will result in the following −
-
Any new formulas that you add to the workbook will be flagged as containing an error.
-
No results will appear in the new calculated columns.
Configuring the Workbook for Manual Recalculation
As you have learnt, automatic recalculation is the default mode in the Data Model of any workbook. To configure a workbook for manual recalculation, do the following −
- Click the Design tab on the Ribbon in the Power Pivot window.
- Click the Calculation Options in the Calculations group.
- Click the Manual Calculation Mode in the dropdown list.
Recalculating DAX Formulas Manually
To recalculate the DAX formulas manually, do the following −
- Click the Design tab on the Ribbon in the Power Pivot window.
- Click the Calculation Options field in the Calculations group.
- Click the Calculate Now field in the dropdown list.
Troubleshooting DAX Formula Recalculation
Whenever changes occur in the Data Model of your workbook, Power Pivot performs an analysis of the existing data to determine whether recalculation is required and performs the update in the most efficient way possible.
Power Pivot handles the following, during recalculation of DAX formulas −
- Dependencies
- Sequence of recalculation for dependent columns
- Transactions
- Recalculation of volatile functions
Dependencies
When a column depends on another column, and the contents of that other column change in any way, all related columns might need to be recalculated.
Power Pivot always performs a complete recalculation for a table, because a complete recalculation is more efficient than checking for changed values. The changes that trigger recalculation might include deleting a column, changing the numeric data type of a column or adding a new column. These changes are considered as major changes. However, seemingly trivial changes, such as changing the name of a column might also trigger recalculation. This is because the names of the columns are used as identifiers in the DAX formulas.
In some cases, Power Pivot may determine that columns can be excluded from recalculation.
Sequence of Recalculation for Dependent Columns
Dependencies are calculated prior to any recalculation. If there are multiple columns that depend on each other, Power Pivot follows the sequence of dependencies. This ensures that the columns are processed in the right order at the maximum speed.
Transactions
Operations that recalculate or refresh data take place as a transaction. This means that if any part of the refresh operation fails, the remaining operations are rolled back. This is to ensure that data is not left in a partially processed state. However, you cannot manage the transactions as you do in a relational database or create checkpoints.
Recalculation of Volatile Functions
DAX functions such as NOW, RAND, or TODAY do not have fixed values and are referred to as volatile functions. If such DAX functions are used in a calculated column, the execution of a query or filtering will usually not cause them to be re-evaluated to avoid performance problems.
The results for these DAX functions are only recalculated when the entire column is recalculated. These situations include refresh from an external data source or manual editing of data that causes re-evaluation of DAX formulas that contain these functions.
However, such functions will always be recalculated if the functions are used in the definition of a Calculated Field.
Excel DAX — Formula Errors
You can get errors when you write DAX formulas with wrong syntax. Calculated fields and calculated columns can contain DAX functions that require a specific type of arguments. Arguments of DAX functions can be tables, columns, or other DAX functions (nested DAX functions). As DAX functions can return tables and columns, care should be taken to check that the right type of arguments are passed to the DAX functions.
DAX formula errors can be either syntax errors or semantic errors. The errors can occur either at design time or at run time.
In this chapter, you will learn about some common DAX errors, their causes, and how to fix those errors.
DAX Error: Calculation Aborted
The following error can occur when attempting to create (design-time) or use (run-time) a calculated field with a DAX time-intelligence function. In each case, a noncontiguous date range is being passed to the time intelligence function.
“DAX Error: CALCULATION ABORTED: MdxScript (instance) (00, 0) Function ‘DATEADD’ only works with contiguous date selections.”
Cause at Run-time
This error can be displayed when a calculated field with a DAX time intelligence function is placed in the VALUES area of a PivotTable and date fields such as the month or the quarter are selected as slicers or filters before selecting a year. For example, if you have data of three years – 2014, 2015, and 2016 and you try to use only the month March without selecting the Year field, then the values are not contiguous data values and you will get an error.
How to Fix the Error at Run-time?
In the above example,
-
First add Year as a slicer or a filter and select a year.
-
Then, add Month or Quarter as a slicer or a filter.
-
Then, select one or more months or quarters to slice or filter on for the year selected.
Cause at Design-time
DAX time intelligence functions require a date column specified for the date argument. The date column must have a contiguous range of dates. This error can be returned, if there is a date value in one or more rows in the date column that is not contiguous with the data values in the previous and successive rows.
If you imported your table containing dates from a data source, remember that many organizations run special processes that scan tables in databases for invalid values and replace those with a particular value. That is, if an invalid date is found, it is assigned a particular date value that may not be contiguous with other data values in the column.
How to Fix This Error at Design-time?
Do the following to fix the error at design time −
-
If your date table is imported from a data source, use Refresh in Power Pivot window to reimport any changes found at the source.
-
Check the values in your date column to make sure they are in a contiguous order. If any value is found not to be in place, it will have to be corrected at the source and the date table will have to be refreshed.
-
Create a separate date table and date column in your Data Model. Specify the new date column as the date argument in the formula causing the error. Date tables are easy to create and add to a Data Model.
DAX Semantic Error — An Example
The following DAX error is a semantic error −
“A function ‘CALCULATE’ has been used in a true-false expression that is used as a table filter expression. This is not allowed.”
Cause
This error can appear when one or more filter expressions cannot be used in context of the calculated field or calculated column expression.
In most of the cases, this error is caused by a filter expression specified as an argument to the DAX CALCULATE function. The CALCULATE function requires filters defined as a Boolean expression or a table expression.
How to Fix Such Errors?
You can fix such errors by using the DAX FILTER function to define filters as a table expression, which can then be used as an argument to the DAX CALCULATE function.
Excel DAX — Time Intelligence
DAX has an important and powerful feature, referred to as Time Intelligence. Time intelligence enables you to write DAX formulas that refer to the time periods for use in the PivotTables.
DAX has 35 time-intelligence functions specifically for aggregating and comparing data over time. However, these DAX functions have some constraints on the data that you need to understand and work with caution to avoid errors.
Why Time Intelligence Makes DAX Powerful?
The time intelligence functions work with data that is constantly changing, depending on the context you select in PivotTables and Power View visualizations. As you are aware, most of the data analysis involves summarization of data over time periods, comparing data values across the time periods, understanding the trends and making decisions based on future projections.
For example, you might want to sum sales amounts for the past month product-wise and compare the totals with those of other months in the fiscal year. This means, you have to use the dates as a way to group and aggregate sales transactions for a particular period in time.
This is where you can observe the power of DAX. You can use DAX time intelligence functions to define calculated fields that help you in analyzing the data over time, without having to change the date selections in the pivot tables. This makes your job easier. Moreover, you can build PivotTables that would not be possible any other way.
Requirements for DAX Time Intelligence Functions
DAX time intelligence functions have certain requirements. If these requirements are not met, you might get errors or they may not work properly. Hence, you can refer to these requirements as rules or constraints as well. Following are certain DAX time intelligence functions requirements/rules/constraints −
-
You need to have a date table in your Data Model.
-
The date table must include a column considered to be the Date column by DAX. You can name the column the way you want, but it should comply with the following conditions: o The date column should contain a contiguous set of dates that covers every day in the time period you are analyzing the data.
-
Every date must exist once and only once in the date column.
-
You cannot skip any dates (For e.g. you cannot skip weekend dates).
-
-
DAX time intelligence functions work only on a standard calendar and assume the start of the year as January 1 and the end of the year as December 31, with the months in the year and days in each month as of a calendar year.
However, you can customize a standard calendar for different financial years. It is a good practice to verify the above requirements before any time intelligence function is used.
For more details on date tables and their usage in DAX formulas, refer to the tutorial = Data Modeling with DAX in this tutorials library.
DAX Time Intelligence Functions – Categories
DAX Time Intelligence functions can be categorized as follows −
- DAX functions that return a single date.
- DAX functions that return a table of dates.
- DAX functions that evaluate expressions over a time period.
DAX Functions That Return a Single Date
DAX functions in this category return a single date.
There are 10 DAX functions in this category −
Sr.No. | DAX Function & Return Value |
---|---|
1 |
FIRSTDATE (Date_Column) Returns the first date in the Date_Column in the current context. |
2 |
LASTDATE (Date_Column) Returns the last date in the Date_Column in the current context. |
3 |
FIRSTNONBLANK (Date_Column, Expression) Returns the first date where an expression has a non-blank value. |
4 |
LASTNONBLANK (Date_Column, Expression) Returns the last date where an expression has a non-blank value. |
5 |
STARTOFMONTH (Date_Column) Returns the first date of a month in the current context. |
6 |
ENDOFMONTH (Date_Column) Returns the last date of a month in the current context. |
7 |
STARTOFQUARTER (Date_Column) Returns the first date of a quarter in the current context. |
8 |
ENDOFQUARTER (Date_Column) Returns the last date of a quarter in the current context. |
9 |
STARTOFYEAR (Date_Column, [YE_Date]) Returns the first date of a year in the current context. |
10 |
ENDOFYEAR (Date_Column, [YE_Date]) Returns the last date of a year in the current context. |
DAX Functions That Return a Table of Dates
DAX Functions in this category return a table of dates. These functions will be mostly used as a SetFilter argument to the DAX function — CALCULATE.
There are 16 DAX functions in this category. Eight (8) of these DAX functions are the “previous” and “next” functions.
-
The “previous” and “next” functions start with a date column in the current context and calculate the previous or next day, month, quarter or year.
-
The “previous” functions work backward from the first date in the current context and the “next” functions move forward from the last date in the current context.
-
The “previous” and “next” functions return the resulting dates in the form of a single column table.
Sr.No. | DAX Function & Return Value |
---|---|
1 |
PREVIOUSDAY (Date_Column) Returns a table that contains a column of all dates representing the day that is previous to the first date in the Date_Column in the current context. |
2 |
NEXTDAY (Date_Column) Returns a table that contains a column of all dates from the next day, based on the first date specified in the Date_Column in the current context. |
3 |
PREVIOUSMONTH (Date_Column) Returns a table that contains a column of all dates from the previous month, based on the first date in the Date_Column in the current context. |
4 |
NEXTMONTH (Date_Column) Returns a table that contains a column of all dates from the next month, based on the first date in the Date_Column in the current context. |
5 |
PREVIOUSQUARTER (Date_Column) Returns a table that contains a column of all dates from the previous quarter, based on the first date in the Date_Column in the current context. |
6 |
NEXTQUARTER (Date_Column) Returns a table that contains a column of all dates in the next quarter, based on the first date specified in the Date_Column in the current context. |
7 |
PREVIOUSYEAR (Date_Column, [YE_Date]) Returns a table that contains a column of all dates from the previous year, given the last date in the Date_Column in the current context. |
8 |
NEXTYEAR (Date_Column, [YE_Date]) Returns a table that contains a column of all dates in the next year, based on the first date in the Date_Column in the current context. |
Four (4) DAX functions calculate a set of dates in a period. These functions perform the calculations using the last date in the current context.
Sr.No. | DAX Function & Return Value |
---|---|
1 |
DATESMTD (Date_Column) Returns a table that contains a column of the dates for the month to date, in the current context. |
2 |
DATESQTD (Date_Column) Returns a table that contains a column of the dates for the quarter to date, in the current context. |
3 |
DATESYTD (Date_Column, [YE_Date]) Returns a table that contains a column of the dates for the year to date, in the current context. |
4 |
SAMEPERIODLASTYEAR (Date_Column) Returns a table that contains a column of dates shifted one year back in time from the dates in the specified Date_Column, in the current context. Note− SAMEPERIODLASTYEAR requires that the current context contains a contiguous set of dates. If the current context is not a contiguous set of dates, then SAMEPERIODLASTYEAR will return an error. |
-
Four (4) DAX functions are used to shift from the set of dates that are in the current context to a new set of dates.
These DAX functions are more powerful than the previous ones.
-
DAX functions – DATEADD, DATESINPERIOD and PARALLELPERIOD shift some number of time intervals from the current context. The interval can be day, month, quarter or year, represented by the key words – DAY, MONTH, QUARTER and YEAR respectively.
For example:
-
-
Shift backward by 2 days.
-
Move forward by 5 months.
-
Move forward by one month from today.
-
Go back to same quarter in the last year.
-
DAX function – DATESBETWEEN calculates the set of dates between the specified start date and the end date.
If the function argument — number of intervals (integer value) is positive, shift is forward and if it is negative, shift is backward.
-
Sr.No. | DAX Function & Return Value |
---|---|
1 |
DATEADD (Date_Column, Number_of_Intervals, Interval) Returns a table that contains a column of dates, shifted either forward or backward in time by the specified number of intervals from the dates in the current context. |
2 |
DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval) Returns a table that contains a column of dates that begins with the start_date and continues for the specified number_of_intervals. |
3 |
PARALLELPERIOD (Date_Column, Number_of_Intervals, Interval) Returns a table that contains a column of dates that represents a period parallel to the dates in the specified Date_Column in the current context, with the dates shifted a number of intervals either forward or backward in time. |
4 |
DATESBETWEEN (Date_Column, Start_Date, End_Date) Returns a table that contains a column of dates that begins with the start_date and continues until the end_date. |
DAX Functions that Evaluate Expressions Over a Time Period
DAX Functions in this category evaluate an expression over a specified time period.
There are nine (9) DAX functions in this category −
-
Three (3) DAX functions in this category can be used to evaluate any given expression over a specified time period.
Sr.No. | DAX Function & Return Value |
---|---|
1 |
TOTALMTD (Expression, Date_Column, [SetFilter]) Evaluates the value of the expression for the dates in the month to date, in the current context. |
2 |
TOTALQTD (Expression, Date_Column, [SetFilter]) Evaluates the value of the expression for the dates in the quarter to date, in the current context. |
3 |
TOTALYTD (Expression, Date_Column, [SetFilter], [YE_Date]) Evaluates the value of the expression for the dates in the year to date, in the current context |
-
Six (6) DAX functions in this category can be used to calculate the opening and the closing balances.
-
The opening balance for any period is the same as the closing balance for the previous period.
-
The closing balance includes all data through the end of the period, while the opening balance does not include any data from within the current period.
-
These DAX functions always return the value of an expression evaluated for a specific point in time.
-
-
The point in time we care about is always the last possible date value in a calendar period.
-
The opening balance is based on the last date of the previous period, while the closing balance is based on the last date in the current period.
-
The current period is always determined by the last date in the current date context.
Sr.No. | DAX Function & Return Value |
---|---|
1 |
OPENINGBALANCEMONTH (Expression, Date_Column, [SetFilter]) Evaluates the expression at the first date of the month in the current context. |
2 |
CLOSINGBALANCEMONTH (Expression, Date_Column, [SetFilter]) Evaluates the expression at the last date of the month in the current context. |
3 |
OPENINGBALANCEQUARTER (Expression, Date_Column, [SetFilter]) Evaluates the expression at the first date of the quarter, in the current context. |
4 |
CLOSINGBALANCEQUARTER (Expression, Date_Column, [SetFilter]) Evaluates the expression at the last date of the quarter in the current context. |
5 |
OPENINGBALANCEYEAR (Expression, Date_Column, [SetFilter], [YE_Date]) Evaluates the expression at the first date of the year in the current context. |
6 |
CLOSINGBALANCEYEAR (Expression, Date_Column, [SetFilter], [YE_Date]) Evaluates the expression at the last date of the year in the current context. |
Excel DAX — Filter Functions
DAX has powerful filter functions that are quite different from Excel functions. The lookup functions work by using tables and relationships, like a database. The filtering functions let you manipulate data context to create dynamic calculations.
Note − DAX filter functions that return a table do not add the table to the Data Model. The resulting table is used as an argument in another DAX function. That is, such DAX functions are used as nested functions with other DAX functions.
In the next section, you will learn what DAX filter functions you can use. For more details on these functions, refer to the tutorial – DAX Functions in this tutorials library.
DAX Filter Functions
Following are the DAX Filter functions −
Sr.No. | DAX Function & What the Function Does? |
---|---|
1 |
ADDMISSINGITEMS (<showAllColumn>, [<showAllColumn>] …, <table>, <groupingColumn>, [<groupingColumn>] …, [filterTable] …) Adds combinations of items from multiple columns to a table if they do not already exist. The determination of which item combinations to add is based on referencing source columns which contain all the possible values for the columns. To determine the combinations of items from different columns to evaluate −
|
2 |
ALL ( {<table> | <column>, [<column>], [<column>], … }) Returns all the rows in the given table or all the values in the specified columns in a table, ignoring any filters that might have been applied. This function is useful for clearing filters and creating calculations on all the rows in a table. |
3 |
ALLEXCEPT (<table>, <column>, [<column>], …) Removes all context filters in the table except filters that have been applied to the columns specified as arguments. As against ALL, you can use this function when you want to remove the filters on many, but not all, columns in a table. |
4 |
ALLNOBLANKROW (<table>|<column>) From the parent table of a relationship, returns −
The function disregards any context filters that might exist. |
5 |
ALLSELECTED ( [<tableName>|<columnName>] ) Removes context filters from columns and rows in the current query, while retaining all other context filters or explicit filters. |
6 |
CALCULATE (<expression>, [<filter1>, <filter2> …)] Evaluates an expression in a context that is modified by the specified filters. Returns the value that is the result of the expression. |
7 |
CALCULATETABLE (<expression>, <filter1>, <filter2>, …) Evaluates a table expression in a context modified by the given filters. Returns a table of values. |
8 |
CROSSFILTER (<columnName1>, <columnName2>, <direction>) Specifies the cross-filtering direction to be used in a calculation for a relationship that exists between two columns. Does not return any value. |
9 |
DISTINCT (<column>) Returns a one-column table that contains the distinct values from the specified column. In other words, duplicate values are removed and only unique values are returned. The resulting column is used as an argument in another DAX function. |
10 |
EARLIER (<column>, <number>) Returns the current value of the specified column in an outer evaluation pass of the mentioned column specified by the number. |
11 |
EARLIEST (<column>) Returns the current value of the specified column in an outer evaluation pass of the specified column. |
12 |
FILTER (<table>, <filter>) Returns a table that contains only the filtered rows. FILTER is used only as a function that is embedded in other functions that require a table as an argument. |
13 |
FILTERS (<columnName>) Returns the values that are directly applied as filters to columnName. FILTERS is used only as a function that is embedded in other functions that require a table as an argument. |
14 |
HASONEFILTER (<columnName>) Returns TRUE when the number of directly filtered values on columnName is one. Otherwise, returns FALSE. |
15 |
HASONEVALUE (<columnName>) Returns TRUE when the context for columnName has been filtered down to one distinct value only. Otherwise, returns FALSE. |
16 |
ISCROSSFILTERED (<columnName>) Returns TRUE when columnName or another column in the same or related table is being filtered. |
17 |
ISFILTERED (<columnName>) Returns TRUE when columnName is being filtered directly. If there is no filter on the column or if the filtering happens because a different column in the same table or in a related table is being filtered, then the function returns FALSE. |
18 |
KEEPFILTERS (<expression>) Modifies how filters are applied while evaluating a CALCULATE or CALCULATETABLE function. |
19 |
RELATED (<column>) Returns a related value from another table. |
20 |
RELATEDTABLE (<tableName>) Evaluates a table expression in a context modified by the given filters. |
21 |
SUBSTITUTEWITHINDEX (<table>, <indexColumnName>, <indexColumnTable>, <orderBy_expression>, [<order>]) Returns a table which represents a left semijoin of the two tables supplied as arguments. The semijoin is performed by using common columns, determined by common column names and common data type. The columns being joined on are replaced with a single column in the returned table which is of type integer and contains an index. The index is a reference into the right join table given a specified sort order. |
22 |
USERELATIONSHIP ( <columnName1>,<columnName2>) Specifies the relationship to be used in a specific calculation as the one that exists between columnName1 and columnName2. |
23 |
VALUES (<TableNameOrColumnName>) Returns a one-column table that contains the distinct values from the specified table or column. In other words, duplicate values are removed and only unique values are returned. |
Excel DAX — Scenarios
You have learnt DAX syntax, the usage of DAX operators and DAX functions in the previous chapters. As you are aware, DAX is a formula language used for data modeling and data analysis.
DAX can be used in various scenarios. Based on the DAX scenarios, DAX optimizes the performance and produces accurate and effective results. In this chapter, you will get to know some of the DAX scenarios.
Performing Complex Calculations
DAX formulas can perform complex calculations that involve custom aggregations, filtering, and the use of conditional values. You can do the following with DAX
- Create custom calculations for a PivotTable.
- Apply a filter to a formula.
- Remove filters selectively to create a dynamic ratio.
- Use a value from an outer loop.
For details, refer to the chapter Scenarios — Performing Complex Calculations.
Working with Text and Dates
DAX can be used in the scenarios involving working along with text, extracting and composing date and time values, or creating values based on a condition. You can do the following with DAX −
- Create a key column by concatenation.
- Compose a date based on date parts extracted from a text date.
- Define a custom date.
- Change data types using a formula.
- Convert real numbers to integers.
- Convert real numbers, integers, or dates to strings.
- Convert strings to real numbers or dates.
For details, refer to the chapter Scenarios — Working with Text and Dates.
Conditional Values and Testing for Errors
DAX functions enable to test values in the data and return a different value based on a condition. DAX functions that test values are also useful for checking the range or type of values, to prevent unexpected data errors from breaking calculations. You can do the following with DAX −
- Create a value based on a condition.
- Test for errors within a formula.
For details, refer to the chapter Scenarios — Conditional Values and Testing for Errors.
Using Time Intelligence
You have learnt about DAX time intelligence functions in the chapter – Understanding DAX time intelligence.
DAX time intelligence functions include functions to help you retrieve dates or date ranges from your data. You can then use those dates or date ranges to calculate values across similar periods. The time intelligence functions also include functions that work with standard date intervals, to allow you to compare values across months, years, or quarters. You could also create a DAX formula that compares values for the first and the last date of a specified period.
You can learn more about DAX intelligence functions and what they can do for the following −
- Calculate Cumulative Sales.
- Compare Values over Time.
- Calculate a Value over a Custom Date Range.
For details, refer to the chapter Scenarios — Using Time Intelligence.
Ranking and Comparing Values
If you want to show only the top n number of items in a column or a PivotTable, you have the following options −
- Apply a filter to show only the top or bottom few items.
- Create a DAX formula that dynamically ranks values and apply a filter.
Each of these options have pros and cons.
For details, refer to the chapter Scenarios — Ranking and Comparing Values.
Excel DAX — Performing Complex Calculations
DAX formulas can perform complex calculations that involve custom aggregations, filtering, and the use of conditional values. You can do the following with DAX −
- Create custom calculations for a PivotTable.
- Apply a filter to a DAX formula.
- Remove filters selectively to create a dynamic ratio.
- Use a value from an outer loop.
Creating Custom Calculations for a PivotTable
DAX functions CALCULATE and CALCULATETABLE are powerful and flexible. They are useful for defining calculated fields. These DAX functions enable you to change the context in which the calculation will be performed. You can also customize the type of aggregation or mathematical operation to perform.
CALCULATE Function
CALCULATE (<expression>, [<filter1>], [<filter2>]…)
CALCULATE function evaluates the given expression in a context that is modified by zero or more specified filters.
If your data has been filtered, the CALCULATE function changes the context in which the data is filtered and evaluates the expression in the new context that you specify by the filters. That means, any existing filters on the specified column are removed and the filter used in the filter argument is applied instead.
Example
Suppose you want to display the percentage of medals sport-wise filtered by Country names. Your calculation should get the percentage value overriding the filter that you apply on Country in the PivotTable.
-
Define a calculated field – Percentage of Medal Count as shown in the following screenshot.
With this DAX formula, all the rows in the Results table are taken into account in the CALCULATE function with the filter containing the ALL function. This way, you have the total count in the denominator.
Your PivotTable will be as shown in the following screenshot.
In the above screenshot, Country is filtered to USA and Top 18 values are displayed in the PivotTable. Next, you can dynamically filter values in the PivotTable. However, the calculations will be correct by the custom DAX formula that you used.
The CALCULATETABLE function takes a table of values and performs the same action as that of CALCULATE function.
Filtering Data in Formulas
You can create filters within DAX formulas, to select the values from the source data for use in calculations. You can do this by defining a filter expression and using it along with the table that is an input to the DAX formula.
The filter expression enables you to obtain a subset of the source data. The filter is applied dynamically each time that you update the results of the DAX formula, depending on the current context of your data and you can be assured of accurate and expected results.
The filter expression typically contains a DAX filter function that returns only selected rows of the table, which then can be used as an argument for another DAX function that you are using for data aggregation.
Example
The following screenshot shows the definition of a calculated field that gives medal count only for summer sports.
With this calculated field, the PivotTable looks as shown in the following screenshot.
As you can observe, the values in the PivotTable on the right side with the new calculated field match with those that are in the PivotTable on the left side with the filter on Season field applied explicitly.
Note − DAX filter and value functions return a table, but never return the table or rows directly to the Data Model and hence are always embedded in another DAX function.
For details on these DAX functions, refer to the chapter – DAX Filter Functions.
Adding and Removing Filters Dynamically
DAX Formulas that you use in a PivotTable can be affected by the PivotTable context. However, you can selectively change the context by adding or removing filters. You can use the DAX functions ALL and ALLEXCEPT to dynamically select the rows irrespective of the PivotTable context.
Additionally, you can use the DAX functions DISTINCT and VALUES for returning distinct values.
Using a Value from an Outer Loop
You can use a value from a previous loop in creating a set of related calculations with DAX EARLIER function. This DAX function supports up to two levels of nested loops.
Excel DAX — Working with Text and Dates
DAX can be used in the scenarios involving working along with text, extracting and composing date and time values or creating values based on a condition. You can do the following with DAX −
- Create a key column in a table by concatenation.
- Compose a date based on date parts extracted from a text date.
- Define a custom date format.
- Change data types using a formula.
- Convert real numbers to integers.
- Convert real numbers, integers, or dates to strings.
- Convert strings to real numbers or dates.
Creating a Key Column by Concatenation
Data Model in PowerPivot allows only a single key column. It does not support composite keys that you might find in the external data sources. Hence, if any composite keys exist in a table in the data source, you need to combine them into a single key column for the table in the Data Model.
You can use the DAX function CONCATENATE to combine two columns into a single column in a table in the Data Model. DAX function CONCATENATE joins two text strings into one text string. The joined items can be text, numbers, or Boolean values represented as text or a combination of those items. You can also use a column reference if the column contains appropriate values.
= CONCATENATE ([Column1], [Column2])
DAX CONCATENATE function accepts only two arguments. If any of the arguments is not of text data type, it will be converted to text. DAX CONCATENATE function returns the concatenated string.
Date Based on Date Parts Extracted from a Text Date
Data Model in Power Pivot supports a data type datetime for date and time values. The DAX functions that work on date and/or time values require the datetime data type for the arguments.
If your data source contains dates of a different format, you need to first extract the date parts using a DAX formula and combine those parts to constitute a valid DAX datetime data type.
You can use the following DAX functions to extract and compose dates −
DATE − Returns the specified date in datetime format.
DATEVALUE − Converts a date in the form of text to a date in datetime format.
TIMEVALUE − Converts a time in text format to a time in datetime format.
Defining a Custom Date Format
Suppose the dates in your data source are not represented by a standard format. You can define a custom date format to ensure that the values are handled correctly. DAX FORMAT function enables you to convert a value to text according to the specified format.
FORMAT (<value>, <format_string>)
FORMAT function returns a string containing value formatted as defined by format_string.
You can either use pre-defined Date and Time formats or you can create user-defined Date and Time formats for the argument format_string of the FORMAT function.
Following are the predefined date and time format names. If you use strings other than these predefined strings, they will be interpreted as a custom date and time format.
S. No. | Format_String & Description |
---|---|
1 |
«General Date» Displays a date and/or time. For example, 2/10/2015 10:10:32 AM |
2 |
«Long Date» or «Medium Date» Displays a date according to long date format. For example, Wednesday, March 07, 2016 |
3 |
«Short Date» Displays a date using short date format. For example, 2/03/2016 |
4 |
«Long Time» Displays a time using long time format. Typically includes hours, minutes and seconds. For example, 10:10:32 AM |
5 |
«Medium Time» Displays a time in 12-hour format. For example, 09:30 PM |
6 |
«Short Time» Displays a time in 24-hour format. For example, 14:15 |
Alternatively, you can use the characters in the following table to create user-defined date/time formats.
S. No. | Character & Description |
---|---|
1 |
: Time separator. Time separator. Separates hours, minutes, and seconds when time values are formatted. |
2 |
/ Date separator. Separates the day, month, and year when date values are formatted. |
3 |
% Used to indicate that the following character should be read as a single-letter format without regard to any trailing letters. Also used to indicate that a single-letter format is read as a userdefined format. |
Following are the details of the various characters.
-
%d − Displays the day as a number without a leading zero (e.g. 5).
-
%dd − Displays the day as a number with a leading zero (e.g. 05).
-
%ddd − Displays the day as an abbreviation (e.g. Sun).
-
%dddd − Displays the day as a full name (e.g. Sunday).
-
%M − Displays the month as a number without a leading zero (e.g. January is represented as 1).
-
%MM − Displays the month as a number with a leading zero (e.g. January is represented as 01).
-
%MMM − Displays the month as an abbreviation (e.g. January is represented as Jan).
-
%MMMM − Displays the month as a full month name (e.g. January).
-
%gg − Displays the period/era string (e.g. A.D.).
-
%h − Displays the hour as a number without leading zeros using the 12-hour clock (e.g. 1:15:15 PM). Use %h if this is the only character in your user-defined numeric format.
-
%hh − Displays the hour as a number with leading zeros using the 12-hour clock (e.g. 01:15:15 PM).
-
%H − Displays the hour as a number without leading zeros using the 24-hour clock (e.g. 13:15:15, 1:15:15). Use %H if this is the only character in your user-defined numeric format.
-
%HH − Displays the hour as a number with leading zeros using the 24-hour clock (e.g. 13:15:15, 1:15:15).
-
%m − Displays the minute as a number without leading zeros (e.g. 2:1:15). Use %m if this is the only character in your user-defined numeric format.
-
%mm − Displays the minute as a number with leading zeros (e.g. 2:01:15).
-
%s − Displays the second as a number without leading zeros (e.g. 2:15:5). Use %s if this is the only character in your user-defined numeric format.
-
%ss − Displays the second as a number with leading zeros (e.g. 2:15:05).
-
%f − Displays fractions of seconds. For e.g. ff displays hundredths of seconds, whereas ffff displays ten-thousandths of seconds. You can use up to seven f symbols in your user-defined format. Use %f if this is the only character in your user-defined numeric format.
-
%t − Uses the 12-hour clock and displays an uppercase A for any hour before noon; displays an uppercase P for any hour between noon and 11:59 P.M. Use %t if this is the only character in your user-defined numeric format.
-
%tt − For locales that use a 12-hour clock, displays an uppercase AM with any hour before noon; displays an uppercase PM with any hour between noon and 11:59 P.M. For locales that use a 24-hour clock, displays nothing.
-
%y − Displays the year number (0-9) without leading zeros. Use %y if this is the only character in your user-defined numeric format.
-
%yy − Displays the year in two-digit numeric format with a leading zero, if applicable.
-
%yyy − Displays the year in four-digit numeric format.
-
%yyyy − Displays the year in four-digit numeric format.
-
%z − Displays the timezone offset without a leading zero (e.g. -8). Use %z if this is the only character in your user-defined numeric format.
-
%zz − Displays the. timezone offset with a leading zero (e.g. -08)
-
%zzz − Displays the full timezone offset (e.g. -08:00).
As you can observe, formatting strings are case sensitive. Different formatting can be obtained by using a different case.
Changing Data Types of DAX Formula Outputs
In DAX formulas, the data type of the output is determined by the source columns and you cannot explicitly specify the data type of the result. This is because the optimal data type is determined by Power Pivot. However, you can use the implicit data type conversions performed by Power Pivot to manipulate the output data type. Otherwise, you can use certain DAX functions to convert the output data type.
Using the Implicit Data Type Conversions
-
To convert a date or a number string to a number, multiply by 1.0. For example, = (TODAY()+5)*1.0. This formula calculates the current date plus 5 days and converts the result to an integer value.
-
To convert a date, number or currency value to a string, concatenate the value with an empty string. For example, = Today() & “”
-
Using the DAX Functions for Data Type Conversions
You can use DAX functions for the following −
- Converting Real Numbers to Integers.
- Converting Real Numbers, Integers or Dates to Strings.
- Converting Strings to Real Numbers or Dates.
You will learn this in the following sections.
Converting Real Numbers to Integers
You can use the following DAX functions for converting real numbers to integers −
ROUND (<number>, <num_digits>) − Rounds a number to the specified number of digits and returns a decimal number.
CEILING (<number>, <significance>) − Rounds a number up, to the nearest integer or to the nearest multiple of significance and returns a decimal number.
FLOOR (<number>, <significance>) − Rounds a number down, toward zero, to the nearest multiple of significance and returns a decimal number.
Converting Real Numbers, Integers, or Dates to Strings
You can use the following DAX functions for converting real numbers, integers, or dates to strings −
FIXED (<number>, [<decimals>], [<no_comma>]) − Rounds a number and returns the result as text. The number of digits to the right of the decimal point is 2 or the specified number of decimals. The result is with commas or optionally with no commas.
FORMAT (<value>, <format_string>) − Converts a value to text according to the specified format.
You have already learnt about using Format function for converting dates to strings.
Converting Strings to Real Numbers or Dates
You can use the following DAX functions for converting strings to real numbers or dates −
VALUE (<text>) − Converts a text string that represents a number to a number.
DATEVALUE (date_text) − Converts a date in the form of text to a date in datetime format.
TIMEVALUE (time_text) − Converts a time in text format to a time in datetime format.
Conditional Values and Testing for Errors
You can use DAX functions to test the values in the data that result in different values based on a condition. For e.g., you can test the yearly sales amount and based on the result, label resellers either as Preferred or Value.
You can also use DAX functions for checking the range or the type of values, to prevent unexpected data errors from breaking calculations.
Creating a Value Based on a Condition
You can use nested IF conditions to test values and generate new values conditionally. Following DAX functions are useful for conditional processing and conditional values −
IF (<logical_test>,<value_if_true>, [<value_if_false>]) − Checks if a condition is met. Returns one value if the condition is TRUE and returns another value if the condition is FALSE. Value_if_false is optional, and if omitted and the condition is FALSE, the function returns BLANK ().
OR (<logical1>,<logical2>) − Checks whether one of the arguments is TRUE to return TRUE. The function returns FALSE if both arguments are FALSE.
CONCATENATE (<text1>, <text2>) − Joins two text strings into one text string. The joined items can be text, numbers, or Boolean values represented as text or a combination of those items. You can also use a column reference, if the column contains appropriate values.
Testing for Errors within a DAX Formula
In DAX, you cannot have valid values in one row of a calculated column and invalid values in another row. That is, if there is an error in any part of a calculated column, the entire column is flagged with an error and you must correct the DAX formula to remove the errors that result in invalid values.
Some common errors in DAX formulas are −
- Division by zero.
- Argument to a function is blank while the expected argument is numeric value.
You can use a combination of logical and information functions to test for errors and always return valid values to avoid returning errors in a calculated column. Following DAX functions help you in this.
ISBLANK (<value>) − Checks whether a value is blank and returns TRUE or FALSE.
IFERROR (value, value_if_error) − Returns value_if_error if the expression in the first argument results in an error. Otherwise, returns the value of the expression itself.
Both the return value of the expression and value_if_error must be of same data type. Otherwise, you will get an error.
Excel DAX — Using Time Intelligence
You have learnt about the DAX powerful feature Time Intelligence in the chapter – Understanding Time Intelligence. In this chapter, you will learn how to use DAX time intelligence functions in various scenarios.
DAX time intelligence functions include −
-
Functions that help you retrieve dates or date ranges from your data, which are used to calculate values across similar periods.
-
Functions that work with standard date intervals, to allow you to compare values across months, years, or quarters.
-
Functions that retrieve the first and last date of a specified period.
-
Functions that help you work on the opening and closing balances.
Calculating Cumulative Sales
You can use DAX time intelligence functions to create formulas for calculating cumulative sales. The following DAX functions can be used to calculate closing and opening balances −
CLOSINGBALANCEMONTH (<expression>,<dates>, [<filter>]) − Evaluates the expression at the last date of the month in the current context.
OPENINGBALANCEMONTH (<expression>,<dates>, [<filter>]) − Evaluates the expression at the first date of the month in the current context.
CLOSINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) − Evaluates the expression at the last date of the quarter in the current context.
OPENINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) − Evaluates the expression at the first date of the quarter, in the current context.
CLOSINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>]) − Evaluates the expression at the last date of the year in the current context.
OPENINGBALANCEYEAR (<expression>, <dates>, <filter>], [<year_end_date>]) − Evaluates the expression at the first date of the year in the current context.
You can create the following calculated fields for the product inventory at a specified time by using the following DAX functions −
Month Start Inventory Value: = OPENINGBALANCEMONTH ( SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey] )
Month End Inventory Value: = CLOSINGBALANCEMONTH ( SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey] )
Quarter Start Inventory Value: = OPENINGBALANCEQUARTER ( SUMX ProductInventory, (ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey] )
Quarter End Inventory Value: = CLOSINGBALANCEQUARTER ( SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey] )
Year Start Inventory Value: = OPENINGBALANCEYEAR ( SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey] )
Year End Inventory Value: = CLOSINGBALANCEYEAR ( SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey] )
Comparing Values across Different Time Periods
The default time periods supported by DAX are months, quarters, and years.
You can use the following DAX time intelligence functions to compare the sums across different time periods.
-
PREVIOUSMONTH (<dates>) − Returns a table that contains a column of all the dates from the previous month, based on the first date in the dates column, in the current context.
-
PREVIOUSQUARTER (<dates>) − Returns a table that contains a column of all the dates from the previous quarter, based on the first date in the dates column, in the current context.
-
PREVIOUSYEAR (<dates>, <year_end_date>]) − Returns a table that contains a column of all dates from the previous year, given the last date in the dates column, in the current context.
You can create the following calculated fields for calculating sum of sales in the West region at the specified time periods for comparison, by using the DAX functions −
Previous Month Sales: = CALCULATE ( SUM (WestSales[SalesAmount]), PREVIOUSMONTH (DateTime [DateKey]) )
Previous Quarter Sales: = CALCULATE ( SUM (WestSales[SalesAmount]), PREVIOUSQUARTER (DateTime [DateKey]) )
Previous Year Sales: = CALCULATE ( SUM (WestSales[SalesAmount]), PREVIOUSYEAR (DateTime [DateKey]) )
Comparing Values Across Parallel Time Periods
You can use the DAX time intelligence function PARALLELPERIOD to compare the sums across a period parallel to the specified time period.
PARALLELPERIOD (<dates>, <number_of_intervals>, <interval>)
This DAX function returns a table that contains a column of dates representing a period parallel to the dates in the specified dates column, in the current context, with the dates shifted a number of intervals either forward or backward in time.
You can create the following calculated field for calculating the previous year’s sales in West region −
Previous Year Sales: = CALCULATE ( SUM (West_Sales[SalesAmount]), PARALLELPERIOD (DateTime[DateKey],-1,year) )
Calculating Running Totals
You can use the following DAX time intelligence functions to calculate running totals or running sums.
-
TOTALMTD (<expression>,<dates>, [<filter>]) − Evaluates the value of the expression for the month to date in the current context.
-
TOTALQTD (<expression>,<dates>, <filter>]) − Evaluates the value of the expression for the dates in the quarter to date, in the current context.
-
TOTALYTD (<expression>,<dates>, [<filter>], [<year_end_date>]) − Evaluates the year-to-date value of the expression in the current context.
You can create the following calculated fields for calculating running sum of sales in the West region at specified time periods, by using the DAX functions −
Month Running Sum: = TOTALMTD (SUM (West_Sales[SalesAmount]), DateTime[DateKey])
Quarter Running Sum: = TOTALQTD (SUM (WestSales[SalesAmount]), DateTime[DateKey])
Year Running Sum: = TOTALYTD (SUM (WestSales[SalesAmount]), DateTime[DateKey])
Calculating a Value over a Custom Date Range
You can use DAX time intelligence functions to retrieve a custom set of dates, which you can use as an input to a DAX function that performs calculations, to create custom aggregates across time periods.
DATESINPERIOD (<dates>, <start_date>, <number_of_intervals>, <interval>) − Returns a table that contains a column of dates that begins with the start_date and continues for the specified number_of_intervals.
DATESBETWEEN (<dates>, <start_date>, ) − Returns a table that contains a column of dates that begins with the start_date and continues until the end_date.
DATEADD (<dates>,<number_of_intervals>,<interval>) − Returns a table that contains a column of dates, shifted either forward or backward in time by the specified number of intervals from the dates in the current context.
FIRSTDATE (<dates>) − Returns the first date in the current context for the specified column of dates.
LASTDATE (<dates>) − Returns the last date in the current context for the specified column of dates.
You can create the following DAX formulas for calculating the sum of sales in the West region over a specified date range, by using the DAX functions −
-
DAX Formula to calculate the sales for the 15 days prior to July 17, 2016.
CALCULATE ( SUM (WestSales[SalesAmount]), DATESINPERIOD (DateTime[DateKey], DATE(2016,17,14), -15, day) )
-
DAX Formula to create a calculated field that calculates the first quarter 2016 sales.
= CALCULATE ( SUM (WestSales[SalesAmount]),DATESBETWEEN (DateTime[DateKey], DATE (2016,1,1), DATE (2016,3,31)) )
-
DAX Formula to create a calculated field that obtains the first date when a sale was made in the West region for the current context.
= FIRSTDATE (WestSales [SaleDateKey])
-
DAX Formula to create a calculated field that obtains the last date when a sale was made in the West region for the current context.
= LASTDATE (WestSales [SaleDateKey])
-
DAX Formula to calculate the dates that are one year before the dates in the current context.
= DATEADD (DateTime[DateKey],-1,year)
Excel DAX — Ranking and Comparing Values
If you want to show only the top n number of items in a column or PivotTable, you have the following two options −
-
You can select n number of top values in the PivotTable.
-
You can create a DAX formula that dynamically ranks values and then uses the ranking values in a Slicer.
Applying a Filter to Show only the Top Few Items
To select n number of top values for display in the PivotTable, do the following −
- Click the down arrow in the row labels heading in the PivotTable.
- Click the Value Filters in the dropdown list and then click Top 10.
Top 10 Filter (<column name>) dialog box appears.
- Under Show, select the following in the boxes from left to right.
- Top
- 18 (The number of top values that you want to display. The default is 10.)
- Items.
- In the by box, select Medal Count.
-
Click OK. The top 18 values will be displayed in the PivotTable.
Advantages and Disadvantages of Applying Filter
Advantages
- It is simple and easy to use.
- Suitable for tables with large number of rows.
Disadvantages
-
The filter is solely for display purposes.
-
If the data underlying the PivotTable changes, you must manually refresh the PivotTable to see the changes.
Creating a DAX Formula That Dynamically Ranks Values
You can create a calculated column using a DAX formula that contains the ranked values. You can then use a slicer on the resulting calculated column to select the values to be displayed.
You can obtain a rank value for a given value in a row by counting the number of rows in the same table having a value larger than the one that is being compared. This method returns the following −
-
A zero value for the highest value in the table.
-
Equal values will have the same rank value. If n number of values are equal, the next value after the equal values will have a nonconsecutive rank value adding up the number n.
For example, if you have a table ‘Sales’ with sales data, you can create a calculated column with the ranks of the Sales Amount values as follows −
= COUNTROWS (FILTER (Sales, EARLIER (Sales [Sales Amount]) < Sales [Sales Amount]) ) + 1
Next, you can insert a Slicer on the new calculated column and selectively display the values by ranks.
Advantages and Disadvantages of Dynamic Ranks
Advantages
-
The ranking is done in the table and not on a PivotTable. Hence, can be used in any number of PivotTables.
-
DAX formulas are calculated dynamically. Hence, you can always be sure that the ranking is correct even if the underlying data has changed.
-
Since the DAX formula is used in a calculated column, you can use the ranking in a Slicer.
-
Suitable for tables with large number of rows.
Disadvantages
Since the DAX calculations are computationally expensive, this method might not be suitable for tables with large number of rows.
Excel DAX – Обзор
DAX обозначает D ata A- nalysis E x . DAX – это язык формул, представляющий собой набор функций, операторов и констант, которые можно использовать в формуле или выражении для вычисления и возврата одного или нескольких значений. DAX – это язык формул, связанный с моделью данных Excel Power Pivot.
Это не язык программирования, а язык формул, который позволяет пользователям определять пользовательские вычисления в вычисляемых столбцах и вычисляемых полях (также называемых мерами). DAX помогает вам создавать новую информацию из данных, которые уже присутствуют в вашей модели данных. Формулы DAX позволяют выполнять моделирование данных, анализ данных и использовать результаты для составления отчетов и принятия решений.
DAX включает некоторые функции, которые используются в формулах Excel, но с измененными функциями и дополнительными функциями, которые предназначены для работы с реляционными данными и выполнения динамического агрегирования.
Важность DAX
Основой DAX является модель данных, которая является базой данных Power Pivot в Excel. Модель данных состоит из таблиц, между которыми можно определить отношения, чтобы объединить данные из разных источников. Соединения данных с моделью данных могут обновляться по мере изменения исходных данных. Модель данных использует механизм аналитики в памяти Power Pivot xVelocity (VertiPaq), который делает операции с данными максимально быстрыми в дополнение к размещению нескольких тысяч строк данных. Для получения дополнительной информации о модели данных, обратитесь к учебнику – Power Pivot.
DAX в сочетании с моделью данных обеспечивает несколько мощных функций в Excel – Power Pivot, Power PivotTables, Power PivotCharts и Power View. Вы можете использовать DAX для решения ряда основных задач расчета и анализа данных.
DAX также полезен в Power BI для создания нового файла Power BI Desktop и импорта в него некоторых данных. Кроме того, формулы DAX предоставляют такие возможности, как анализ процента роста по категориям продуктов и для разных диапазонов дат, расчет годового роста по сравнению с рыночными тенденциями и многими другими.
Изучение того, как создавать эффективные формулы DAX, поможет вам получить максимальную отдачу от ваших данных. Получив необходимую информацию, вы можете начать решать реальные бизнес-проблемы, которые влияют на вашу прибыль. Это сила Power BI, и DAX поможет вам в этом.
Предварительные условия для этого урока
Этот учебник является расширением учебника Excel Power Pivot, в котором вы узнали о функции Power Pivot, модели данных, отношениях, Power PivotTable, Power Pivot Charts и т. Д. Было бы неплохо освежить в памяти этот учебник, прежде чем углубиться в изучение. в DAX, поскольку это руководство больше относится к языку DAX, в котором вы пишете формулы для анализа данных в модели данных и сообщаете об этих результатах.
В этом руководстве также представлены функции DAX, подобные функциям Excel, но с некоторыми вариациями. Сравнение функций Excel и DAX позволяет вам различать обе функции. Аналогичным образом сравниваются формулы Excel и формулы DAX, обсуждаются сходства и различия. Хорошее понимание этих различий поможет вам эффективно написать эффективные формулы DAX.
Знание функций Excel и формул Excel не является обязательным для этого учебного пособия, так как DAX предназначен исключительно для модели данных в окне Power Pivot. Вы попадете в рабочую таблицу Excel только для просмотра визуальных таблиц Power Pivot, Power Pivot и Power View, основанных на модели данных. Тем не менее, если вы профессионал в Excel и обладаете достаточными знаниями в области функций и формул Excel, лучше запомните, что упомянуто в предыдущем разделе, а также детали, приведенные в этом руководстве.
Расчетные столбцы
Вычисляемые столбцы – это столбцы, которые можно добавить в таблицу в модели данных с помощью формулы DAX. Вы уже узнали о них в учебном пособии по Excel Power Pivot, но более подробно вы узнаете из главы «Вычисляемые столбцы как DAX», посвященной вычисляемым столбцам, вычисляемым полям и функциям DAX.
Расчетные поля / меры
Вы не можете изменить значения в таблицах в модели данных путем редактирования. Однако в таблицу можно добавить вычисляемые поля, которые можно использовать в сводных таблицах Power. Вычисляемые поля определяются путем присвоения имени и определения формулы DAX. Подробнее см. Главу « Расчетные поля» .
Вычисленные поля были названы показателями в версиях Excel до Excel 2013. Они переименованы обратно в показатели в Excel 2016. В этом руководстве мы будем называть их вычисляемыми полями. Но обратите внимание, что термины – вычисляемые поля и меры – являются синонимами и относятся к одному и тому же во всех аспектах.
Вы можете редактировать вычисляемое поле после того, как оно определено и сохранено. Вы можете изменить формулу DAX, используемую в определении, или переименовать вычисляемое поле. Вы узнаете об этом в главе « Редактирование вычисляемого поля» . Вы можете удалить вычисляемое поле. Обратитесь к главе « Удаление вычисляемого поля» .
DAX Формулы
Формулы DAX составляют основу языка DAX. Вы можете создавать вычисляемые поля и вычисляемые столбцы, определяя их с помощью формул DAX. Вы можете написать формулы DAX для операций анализа данных. Формулы DAX не относятся к отдельным ячейкам или диапазону ячеек в таблице, но относятся к таблицам и столбцам в модели данных. Столбец в таблице в модели данных должен содержать один и тот же тип данных.
Формулы DAX содержат таблицы, столбцы, вычисляемые столбцы, вычисляемые поля, операторы DAX и функции DAX. Обратитесь к главе – DAX Formulas, чтобы узнать подробности.
Синтаксис DAX
Как и в случае с любым языком DAX, язык формул также имеет синтаксис. Ваши формулы DAX должны следовать синтаксису DAX, иначе вы либо получите ошибки во время разработки или во время выполнения, либо получите неверные результаты.
Вы узнаете следующее в главе – Синтаксис DAX –
- Требования к именованию DAX для таблиц, столбцов
- Операторы DAX
- DAX специальные значения
- Типы данных DAX
- DAX неявные преобразования типов данных
Операторы DAX
DAX является языком формул и, следовательно, использует операторы при определении формул. DAX имеет следующие типы операторов –
- Арифметические операторы DAX
- Операторы сравнения DAX
- Оператор объединения текстов DAX
- DAX логические операторы
Порядок приоритета оператора DAX также определен и отличается от порядка приоритета оператора Excel. Обратитесь к главе « Операторы DAX» .
Стандартные параметры DAX
Синтаксис функции DAX имеет определенные требования к параметрам. Это связано с тем, что аргументами функции DAX могут быть таблицы или столбцы, вычисляемые поля или другие функции DAX. См. Главу « Стандартные параметры DAX» .
Функции DAX
В Excel 2013 имеется 246 функций DAX, которые можно использовать в формулах DAX. Вы узнаете об этих функциях на уровне категорий в главе « Функции DAX» . Тем не менее, для получения подробной информации о синтаксисе каждой функции DAX, параметрах, использовании и возвращаемых значениях, вы должны обратиться к нашему руководству по – Функции DAX . Названия разделов, используемые для описания каждой функции DAX, приведены в главе « Общие сведения о функциях DAX» .
Поскольку при написании формул DAX требуются функции DAX, а результаты используемых функций DAX зависят от контекста, в котором они используются, вам, возможно, придется переходить от одного к другому в этих руководствах, чтобы получить представление о DAX, который вы будете использовать в Data Моделирование с DAX и Power BI.
Специальные функции DAX
DAX имеет некоторые функции, которые делают DAX мощным. Эти функции DAX подразделяются на категории – функции анализа времени DAX и функции фильтра DAX и требуют особого упоминания. Вы узнаете о функциях DAX Time Intelligence в главе « Общие сведения о DAX Time Intelligence» . Вы узнаете об использовании функций фильтра DAX в главе « Функции фильтра DAX» .
DAX Оценочный контекст
Результаты формулы DAX могут варьироваться в зависимости от контекста, который используется для оценки. DAX имеет два типа оценочного контекста – контекст строки и контекст фильтра. См. Главу « Контекст оценки DAX» .
DAX Формулы
DAX – это язык формул, и вы должны максимально использовать его при написании формул DAX. Обратитесь к главе «Формулы DAX», чтобы узнать о синтаксисе формул и о том, как их легко и правильно создавать.
Результаты формул DAX изменяются всякий раз, когда данные обновляются, и всякий раз, когда формулы DAX пересчитываются. Вы должны понимать разницу между обновлением данных и пересчетом. Обратитесь к главе – Обновление результатов формул DAX .
Данные в модели данных ожидаются и время от времени могут изменяться. Это связано с тем, что данные используются для операций анализа данных, которые требуют актуальных данных в любой момент времени. Чтобы понять различные способы обновления данных, обратитесь к главе « Обновление данных в модели данных» .
Вы поймете различные типы пересчета формул DAX в главе « Пересчет формул DAX» .
Пересчеты формул DAX должны учитывать зависимости данных и следовать определенному порядку. В противном случае вы можете получить ошибки или ошибочные результаты. Подробнее см. Главу « Устранение неполадок при пересчете формулы DAX» .
Вы получите представление о некоторых типичных ошибках формул DAX и узнаете, как их исправить, в главе « Ошибки формул DAX» .
DAX Сценарии
Если вы начинаете изучать новый язык, лучший способ познакомиться с ним – понять, где что использовать. Аналогично, DAX – это язык формул, предназначенный для анализа данных, вам необходимо понимать различные сценарии, в которых он может использоваться.
Обратитесь к следующим главам, чтобы получить подробную информацию об этом.
- DAX Сценарии
- Сценарии – Выполнение сложных расчетов
- Сценарии – Работа с текстом и датами
- Сценарии – условные значения и тестирование на ошибки
- Сценарии – Использование Time Intelligence
- Сценарии – ранжирование и сравнение ценностей
Excel DAX – вычисляемые столбцы
Вычисляемый столбец – это столбец, который добавляется к существующей таблице в модели данных вашей рабочей книги с помощью формулы DAX, которая определяет значения столбца. Вместо того, чтобы импортировать значения в столбце, вы создаете вычисляемый столбец.
Вы можете использовать вычисленный столбец в сводной таблице, сводной диаграмме, сводной таблице мощности, сводной диаграмме мощности или представлении Power View, как и любой другой столбец таблицы.
Понимание вычисляемых столбцов
Формула DAX, используемая для создания вычисляемого столбца, похожа на формулу Excel. Однако в формуле DAX нельзя создавать разные формулы для разных строк в таблице. Формула DAX автоматически применяется ко всему столбцу.
Например, вы можете создать один вычисляемый столбец для извлечения года из существующего столбца – Дата с формулой DAX –
= YEAR ([Date])
YEAR – это функция DAX, а Date – существующий столбец в таблице. Как видно, имя таблицы заключено в квадратные скобки. Подробнее об этом вы узнаете в главе « Синтаксис DAX» .
Когда вы добавляете столбец в таблицу с этой формулой DAX, значения столбцов вычисляются сразу после создания формулы. Будет создан новый столбец с заголовком CalculatedColumn1, заполненным значениями Year.
При необходимости значения столбцов пересчитываются, например, при обновлении базовых данных. Вы можете создавать вычисляемые столбцы на основе существующих столбцов, вычисляемых полей (мер) и других вычисляемых столбцов.
Создание вычисляемого столбца
Рассмотрим модель данных с результатами Олимпиады, как показано на следующем снимке экрана.
- Нажмите Просмотр данных.
- Нажмите вкладку Результаты.
Вы будете просматривать таблицу результатов.
Как видно на скриншоте выше, самый правый столбец имеет заголовок – Добавить столбец.
- Перейдите на вкладку «Дизайн» на ленте.
- Нажмите Добавить в группе Столбцы.
Указатель появится в строке формул. Это означает, что вы добавляете столбец с формулой DAX.
- Введите = ГОД ([Дата]) в строке формул.
Как видно на скриншоте выше, выделен самый правый столбец с заголовком – Добавить столбец.
- Нажмите Ввод.
Для выполнения расчетов потребуется некоторое время (несколько секунд). Пожалуйста, подождите.
Новый вычисляемый столбец будет вставлен слева от крайнего правого столбца Добавить.
Как показано на скриншоте выше, вновь вставленный вычисляемый столбец подсвечивается. Значения во всем столбце отображаются в соответствии с используемой формулой DAX. Заголовок столбца – CalculatedColumn1.
Переименование вычисляемого столбца
Чтобы переименовать вычисляемый столбец в значимое имя, выполните следующие действия:
- Дважды щелкните заголовок столбца. Имя столбца будет подсвечено.
- Выберите имя столбца.
- Введите год (новое имя).
Как видно на скриншоте выше, имя вычисляемого столбца изменилось.
Вы также можете переименовать вычисляемый столбец, щелкнув правой кнопкой мыши по столбцу и затем щелкнув Переименовать в раскрывающемся списке.
Просто убедитесь, что новое имя не конфликтует с существующим именем в таблице.
Проверка типа данных вычисляемого столбца
Вы можете проверить тип данных вычисляемого столбца следующим образом:
- Перейдите на вкладку «Главная» на ленте.
- Нажмите Тип данных.
Как вы можете видеть на скриншоте выше, раскрывающийся список содержит возможные типы данных для столбцов. В этом примере выбран тип данных по умолчанию (Авто), т.е. весь номер.
Ошибки в вычисляемых столбцах
Ошибки могут возникать в вычисляемых столбцах по следующим причинам:
-
Изменение или удаление отношений между таблицами. Это связано с тем, что формулы, использующие столбцы в этих таблицах, станут недействительными.
-
Формула содержит циклическую или самозависимую зависимость.
Изменение или удаление отношений между таблицами. Это связано с тем, что формулы, использующие столбцы в этих таблицах, станут недействительными.
Формула содержит циклическую или самозависимую зависимость.
Проблемы с производительностью
Как видно ранее на примере результатов Олимпиады, таблица «Результаты» содержит около 35000 строк данных. Следовательно, когда вы создали столбец с формулой DAX, он рассчитал все 35000+ значений в столбце одновременно, для чего потребовалось немного времени. Модель данных и таблицы предназначены для обработки миллионов строк данных. Следовательно, это может повлиять на производительность, если в формуле DAX слишком много ссылок. Вы можете избежать проблем с производительностью, сделав следующее:
-
Если ваша формула DAX содержит много сложных зависимостей, то создайте ее поэтапно, сохраняя результаты в новых вычисляемых столбцах, вместо того, чтобы создавать сразу одну большую формулу. Это позволяет вам проверить результаты и оценить производительность.
-
Вычисленные столбцы необходимо пересчитать при изменении данных. Вы можете установить режим пересчета на ручной, тем самым сохраняя частые пересчеты. Однако если какие-либо значения в вычисляемом столбце неверны, столбец будет недоступен, пока вы не обновите и не пересчитаете данные.
Если ваша формула DAX содержит много сложных зависимостей, то создайте ее поэтапно, сохраняя результаты в новых вычисляемых столбцах, вместо того, чтобы создавать сразу одну большую формулу. Это позволяет вам проверить результаты и оценить производительность.
Вычисленные столбцы необходимо пересчитать при изменении данных. Вы можете установить режим пересчета на ручной, тем самым сохраняя частые пересчеты. Однако если какие-либо значения в вычисляемом столбце неверны, столбец будет недоступен, пока вы не обновите и не пересчитаете данные.
Excel DAX – вычисляемые поля / показатели
Вычисляемое поле в таблице в модели данных – это поле, полученное по формуле DAX. В более ранних версиях Power Pivot вычисленное поле называлось мерой. В Excel 2013 оно было переименовано в вычисляемое поле. Тем не менее, он переименован обратно в измерение в Excel 2016. Если вы обращаетесь к какой-либо документации, вы можете наблюдать смешивание этих двух терминов. Обратите внимание, что термины вычисляемое поле и мера являются синонимами. В этом уроке мы используем термин вычисляемое поле.
Понимание вычисляемых полей
Вычисляемое поле – это формула, созданная специально для использования в сводной таблице (или сводной диаграмме).
Вы можете создать вычисляемое поле на основе стандартных функций агрегирования, таких как COUNT или SUM, или путем определения собственной формулы DAX.
Ниже приводится разница между вычисляемым полем и вычисляемым столбцом.
-
Вычисляемое поле может использоваться только в области VALUES сводной таблицы.
-
Вычисляемый столбец с рассчитанными результатами можно использовать также в областях ROWS, COLUMNS и FILTERS.
Вычисляемое поле может использоваться только в области VALUES сводной таблицы.
Вычисляемый столбец с рассчитанными результатами можно использовать также в областях ROWS, COLUMNS и FILTERS.
Сохранение рассчитанного поля
Рассчитанное поле будет сохранено вместе с исходной таблицей в модели данных. Он отображается в списке полей Power PivotTable или Power PivotChart как поле в таблице.
Использование вычисляемого поля
Чтобы использовать вычисляемое поле, вы должны выбрать его из списка Поля сводной таблицы. Вычисленное поле будет добавлено в область ЗНАЧЕНИЯ, и будет вычислена формула, используемая для вычисляемого поля. Результат создается для каждой комбинации полей строки и столбца.
Расчетное поле – пример
Рассмотрим следующую модель данных для данных Олимпийских игр –
Как видно на снимке экрана выше, в таблице «Результаты» есть поле «Медаль», в котором содержатся значения – золото, серебро или бронза для каждой строки, содержащей комбинацию «Спорт – Событие – Страна – Дата». Предположим, вы хотите подсчет медалей для каждой страны, затем вы можете создать вычисляемое поле Medal Count по следующей формуле DAX –
Medal Count := COUNTA([Medal])
Создание вычисляемого поля в таблице
Чтобы создать вычисляемое поле Medal Count в таблице Results, сделайте следующее –
-
Щелкните по ячейке в области расчета под столбцом «Медаль» в таблице «Результаты». Ячейка будет выделена.
-
Введите Medal Count: = COUNTA ([Medal]) в строке формул.
Щелкните по ячейке в области расчета под столбцом «Медаль» в таблице «Результаты». Ячейка будет выделена.
Введите Medal Count: = COUNTA ([Medal]) в строке формул.
Нажмите Ввод.
Как видно на скриншоте выше, вычисленное поле появляется в выбранной ячейке, показывая значение 34,094. Это число – общее количество строк в таблице результатов. Следовательно, это не имеет большого смысла на первый взгляд. Как обсуждалось ранее, реальное использование вычисляемого поля можно увидеть, только добавив его в Power PivotTable или Power PivotChart.
Использование вычисленного поля в сводной таблице Power
Чтобы использовать вычисленное поле для подсчета количества медалей для каждой страны, выполните следующие действия:
- Нажмите на сводную таблицу на ленте в окне Power Pivot.
- Нажмите на сводную таблицу в раскрывающемся списке.
Откроется диалоговое окно «Создать сводную таблицу».
- Нажмите на существующую таблицу.
- Выберите место, где вы хотите разместить сводную таблицу.
Будет создана пустая сводная таблица.
- Щелкните таблицу «Результаты» в списке «Поля сводной таблицы».
- Нажмите на поля – Страна и Количество медалей.
Как вы можете заметить, счетчик медалей добавляется в область ЗНАЧЕНИЙ, а страна – в область строк. Сводная таблица создается со значениями поля Страна, появляющимися в строках. И для каждой строки рассчитывается и отображается значение количества медалей. Таким образом, вычисляемое поле оценивает используемую формулу DAX и отображает значения.
- Добавьте поле Спорт из таблицы результатов в область ROWS.
Как вы можете видеть на скриншоте выше, количество медалей рассчитывается для каждой страны – в зависимости от вида спорта и промежуточного итога для самой страны.
Вот как DAX дополняет функции Power.
Типы вычисляемых полей
Существует два типа вычисляемых полей – неявные и явные.
-
Неявное вычисляемое поле создается в области списка Power PivotTable Fields.
-
Явное вычисляемое поле создается либо в таблице в окне Power Pivot, либо из ленты PowerPivot в окне Excel.
Неявное вычисляемое поле создается в области списка Power PivotTable Fields.
Явное вычисляемое поле создается либо в таблице в окне Power Pivot, либо из ленты PowerPivot в окне Excel.
Создание неявного вычисляемого поля
Неявное вычисляемое поле может быть создано двумя способами, оба на панели Power PivotTable Fields.
Создание неявного вычисляемого поля в списке полей сводной таблицы
Вы можете создать поле Count of Medal из поля Medal в списке полей сводной таблицы следующим образом:
- Отмените выбор поля «Количество медалей».
- Щелкните правой кнопкой мыши на поле Медаль.
- Нажмите Add to Values в раскрывающемся списке.
Количество медалей появляется в области значений. Столбец Количество медалей будет добавлен в сводную таблицу.
Создание неявного вычисляемого поля в области VALUES
Вы можете создать неявное рассчитанное поле -% родительской строки в области «Значения», чтобы выразить количество медалей по каждому виду спорта, выигранному страной, в процентах от общего числа медалей, выигранных этой страной.
- Нажмите стрелку вниз в поле Count of Medal в области VALUES.
- Нажмите Настройки поля значения в раскрывающемся списке.
Откроется диалоговое окно «Настройки поля значений».
- Введите% Медали в поле Пользовательское имя.
- Перейдите на вкладку «Показать значения как».
- Щелкните поле под Показать значения как.
- Нажмите% от общего количества родительских строк.
- Нажмите кнопку «Числовой формат».
Откроется диалоговое окно «Формат ячеек».
- Нажмите Процент.
- Введите 0 в десятичных разрядах.
- Нажмите ОК.
- Нажмите кнопку ОК в диалоговом окне «Параметры поля значений».
- Выберите Не показывать промежуточные итоги.
Вы создали еще одно неявное рассчитанное поле% Медали, и, как вы можете заметить, для каждой страны отображается процент медалей в зависимости от вида спорта.
Недостатки неявного вычисляемого поля
Неявные вычисляемые поля легко создавать. Фактически вы создавали их даже в сводных таблицах и сводных диаграммах Excel. Но у них есть следующие недостатки –
-
Они изменчивы . Это означает, что если вы отмените выбор поля, которое вы использовали для вычисляемого поля, оно будет удалено. Если вы хотите отобразить его снова, вы должны снова создать его.
-
Их область действия ограничена сводной таблицей или сводной диаграммой, в которой они созданы. Если вы создадите другую сводную таблицу на другом листе, вам придется снова создать вычисляемое поле.
Они изменчивы . Это означает, что если вы отмените выбор поля, которое вы использовали для вычисляемого поля, оно будет удалено. Если вы хотите отобразить его снова, вы должны снова создать его.
Их область действия ограничена сводной таблицей или сводной диаграммой, в которой они созданы. Если вы создадите другую сводную таблицу на другом листе, вам придется снова создать вычисляемое поле.
С другой стороны, явные вычисляемые поля будут сохранены вместе с таблицей и будут доступны всякий раз, когда вы выбираете эту таблицу.
Создание явного вычисляемого поля
Вы можете создать явное вычисляемое поле двумя способами:
-
В области расчета в таблице в модели данных. Вы уже узнали об этом в разделе – Создание вычисляемого поля в таблице.
-
Из ленты PowerPivot в таблице Excel. Этот способ создания явного вычисляемого поля вы узнаете в следующем разделе.
В области расчета в таблице в модели данных. Вы уже узнали об этом в разделе – Создание вычисляемого поля в таблице.
Из ленты PowerPivot в таблице Excel. Этот способ создания явного вычисляемого поля вы узнаете в следующем разделе.
Создание явного вычисляемого поля из ленты PowerPivot
Чтобы создать явное вычисляемое поле из ленты PowerPivot, выполните следующие действия:
- Откройте вкладку POWERPIVOT на ленте в своей книге.
- Нажмите кнопку «Рассчитанные поля» в области «Расчеты».
- Нажмите Новое вычисляемое поле в раскрывающемся списке.
Откроется диалоговое окно «Вычисленное поле».
- Заполните необходимую информацию, как показано на следующем снимке экрана.
- Нажмите кнопку Проверить формулу.
- Нажмите ОК, только если в формуле нет ошибок.
Как вы можете заметить, вы можете определить категорию и формат вычисляемого поля в этом диалоговом окне. Кроме того, вы можете использовать функцию IntelliSense, чтобы понять использование функций и использовать функцию автозаполнения, чтобы легко заполнять названия функций, таблиц и столбцов. Подробнее о функции IntelliSense см. Главу « Формулы DAX» .
Это рекомендуемый способ создания явных вычисляемых полей.
Excel DAX – редактирование вычисляемого поля
Вы можете редактировать вычисляемое поле, чтобы изменить его. Но прежде чем редактировать вычисляемое поле, вы должны знать, где оно хранится. Это значит, в какой таблице хранится вычисленное поле. Это справедливо как для неявных, так и для явных вычисляемых полей. Вычисляемое поле может быть связано только с одной таблицей в модели данных.
Нахождение вычисляемых полей
Чтобы найти вычисляемые поля в модели данных, выполните следующие действия:
- Перейдите на вкладку «Дополнительно» на ленте в окне Power Pivot.
- Нажмите Показать неявные вычисленные поля.
- Нажмите на представление схемы.
Как вы можете видеть на скриншоте выше, Показать неявные вычисляемые поля выделено на ленте. Если он не выделен, щелкните по нему еще раз.
Вы также можете заметить, что есть 4 флажка – Столбцы, Вычисляемые поля, Иерархии и KPI. По умолчанию выбраны все 4.
- Снимите флажки – Столбцы, Иерархии и KPI.
Это оставит только флажок «Рассчитанные поля» отмеченным.
Как видно на скриншоте выше, поля отображаются только в таблице «Результаты». Две другие таблицы пустые. Это показывает, что только таблица «Результаты» имеет рассчитанные поля. Вы также можете заметить, что неявные вычисляемые поля имеют значок отображается, тогда как явное вычисляемое поле – Medal Count не имеет этого значка.
Просмотр вычисленных полей в таблице
Вы можете просмотреть рассчитанные поля в таблице следующим образом:
- Нажмите на рассчитанное поле.
- Щелкните правой кнопкой мыши и выберите Перейти в раскрывающемся списке.
Таблица появится в представлении данных.
Как видно на скриншоте выше, вычисленные поля появляются в области расчета таблицы.
Изменение вычисляемого поля в таблице
Вы можете изменить формулу, используемую для вычисляемого поля в таблице.
- Щелкните вычисляемое поле в таблице в представлении данных модели данных.
- Выберите формулу в строке формул – справа от: =.
Формула будет выделена.
- Введите новую формулу.
- Нажмите Ввод.
Вы узнаете больше о формулах DAX в последующих главах.
Переименование вычисляемого поля в модели данных
Вы можете изменить имя вычисляемого поля в таблице данных в представлении данных или представлении схемы.
Переименование вычисляемого поля в представлении данных
- Щелкните вычисляемое поле в таблице в представлении данных модели данных.
- Выберите вычисляемое имя поля в строке формул – слева от: =.
Вычисленное имя поля будет подсвечено.
- Введите новое имя для вычисляемого поля.
- Нажмите Ввод.
Вы узнаете больше о синтаксисе DAX в следующих главах.
Переименование вычисляемого поля в представлении схемы
- Щелкните правой кнопкой мыши по вычисленному имени поля в таблице в представлении схемы.
- Нажмите Переименовать в раскрывающемся списке.
Имя попадет в режим редактирования. Введите новое имя для вычисляемого поля.
Просмотр вычисляемых полей в окне Excel
Вы можете просмотреть рассчитанные поля в окне Excel следующим образом –
- Нажмите вкладку POWERPIVOT на ленте.
- Нажмите Вычисляемые поля в группе Расчеты.
- Нажмите Управление вычисляемыми полями в раскрывающемся списке.
Откроется диалоговое окно «Управление вычисляемыми полями». Имена явных вычисляемых полей в модели данных появятся в диалоговом окне.
Изменение вычисляемого поля в Управлении вычисляемыми полями
Вы можете изменить вычисляемое поле в диалоговом окне «Управление вычисляемыми полями».
- Нажмите на счет медали.
- Нажмите кнопку Изменить.
Откроется диалоговое окно «Вычисленное поле».
- Выберите формулу справа от = в поле формулы.
- Введите новую формулу.
- Нажмите ОК.
- Нажмите кнопку «Закрыть» в диалоговом окне «Управление вычисляемыми полями».
Переименование вычисляемого поля в Управление вычисляемыми полями
Вы можете переименовать вычисляемое поле в диалоговом окне «Управление вычисляемыми полями».
- Нажмите на счет медали.
- Нажмите кнопку Изменить.
Откроется диалоговое окно «Вычисленное поле».
- Выберите имя в поле имени вычисляемого поля.
- Введите новое имя для вычисляемого поля.
- Нажмите ОК.
- Нажмите кнопку «Закрыть» в диалоговом окне «Управление вычисляемыми полями».
Перемещение вычисляемого поля в модели данных
Вы можете переместить вычисляемое поле в область вычисления таблицы, в которой оно создано. Но его нельзя перенести на другой стол.
- Щелкните правой кнопкой мыши вычисляемое поле.
- Нажмите Cut.
- Переместите указатель в другое место в области вычисления той же таблицы.
- Нажмите Вставить.
Примечание. В действительности не имеет значения, где вычисляемое поле находится в области вычисления таблицы, поскольку ссылки на данные в формуле DAX вычисляемого поля указываются по именам столбцов и указываются в явном виде.
Excel DAX – удаление вычисляемого поля
Вы можете удалить как явные, так и неявные вычисляемые поля. Есть несколько способов сделать это, которые вы узнаете в этой главе.
Однако перед удалением вычисляемого поля необходимо запомнить следующие моменты:
-
Явное вычисляемое поле может использоваться в нескольких сводных таблицах и / или сводных диаграммах. Следовательно, вам нужно убедиться, что удаление явного вычисляемого поля не повлияет ни на один из отчетов, которые вы уже сгенерировали.
-
Явное вычисляемое поле может использоваться в вычислениях других явных вычисляемых полей. Следовательно, вам необходимо убедиться, что явное вычисляемое поле не используется ни в одном из вычислений других явных вычисляемых полей.
-
Неявное вычисляемое поле ограничено сводной таблицей или сводной диаграммой, где оно используется. Следовательно, перед удалением неявного вычисляемого поля достаточно просто убедиться, что оно может быть удалено из соответствующей сводной таблицы или сводной диаграммы.
-
Создать неявное вычисляемое поле проще, чем создать явное вычисляемое поле. Следовательно, требуется большая осторожность перед удалением явного вычисляемого поля.
-
Вы не можете создать явное вычисляемое поле, если имя конфликтует с именем неявного вычисляемого поля. Следовательно, вам может потребоваться удалить это неявное вычисляемое поле перед созданием явного вычисляемого поля.
Явное вычисляемое поле может использоваться в нескольких сводных таблицах и / или сводных диаграммах. Следовательно, вам нужно убедиться, что удаление явного вычисляемого поля не повлияет ни на один из отчетов, которые вы уже сгенерировали.
Явное вычисляемое поле может использоваться в вычислениях других явных вычисляемых полей. Следовательно, вам необходимо убедиться, что явное вычисляемое поле не используется ни в одном из вычислений других явных вычисляемых полей.
Неявное вычисляемое поле ограничено сводной таблицей или сводной диаграммой, где оно используется. Следовательно, перед удалением неявного вычисляемого поля достаточно просто убедиться, что оно может быть удалено из соответствующей сводной таблицы или сводной диаграммы.
Создать неявное вычисляемое поле проще, чем создать явное вычисляемое поле. Следовательно, требуется большая осторожность перед удалением явного вычисляемого поля.
Вы не можете создать явное вычисляемое поле, если имя конфликтует с именем неявного вычисляемого поля. Следовательно, вам может потребоваться удалить это неявное вычисляемое поле перед созданием явного вычисляемого поля.
Удаление явного вычисляемого поля в модели данных
Вы можете удалить явное вычисляемое поле либо в представлении данных, либо в представлении диаграммы в модели данных.
Удаление явного вычисляемого поля в представлении данных
- Найдите вычисляемое поле в области вычислений в представлении данных.
- Щелкните правой кнопкой мыши вычисляемое поле.
- Нажмите Удалить в раскрывающемся списке.
Появится сообщение для подтверждения удаления.
Нажмите Удалить из модели. Явное вычисляемое поле будет удалено.
Удаление явного вычисляемого поля в представлении схемы
- Найдите вычисляемое поле в таблице данных в представлении схемы.
- Щелкните правой кнопкой мыши по вычисленному имени поля.
- Нажмите Удалить в раскрывающемся списке.
Появится сообщение для подтверждения удаления.
Нажмите Удалить из модели. Явное вычисляемое поле будет удалено и не будет отображаться в списке полей таблицы данных.
Удаление явного вычисляемого поля в окне Excel
Вы можете удалить явное вычисляемое поле из окна Excel следующим образом:
- Нажмите вкладку POWERPIVOT на ленте.
- Нажмите Вычисляемое поле в группе Расчеты.
- Нажмите Управление вычисляемыми полями в раскрывающемся списке.
Откроется диалоговое окно «Управление вычисляемыми полями».
- Нажмите явное имя вычисляемого поля.
- Нажмите кнопку Удалить.
Появится подтверждающее сообщение для удаления.
- Нажмите Да. Информационное сообщение об изменении модели данных появляется вверху.
- Нажмите кнопку Закрыть в диалоговом окне.
Явное вычисляемое поле будет удалено и не будет отображаться в списке полей сводной таблицы / сводной диаграммы в рабочей книге.
Удаление неявного вычисляемого поля
Вы можете удалить неявное вычисляемое поле либо в представлении данных, либо в представлении диаграммы в модели данных.
Удаление неявного вычисляемого поля в представлении данных
- Найдите вычисляемое поле в области вычислений в представлении данных.
- Щелкните правой кнопкой мыши вычисляемое поле.
- Нажмите Удалить в раскрывающемся списке.
Появится сообщение для подтверждения удаления.
- Нажмите Удалить из модели. Неявное вычисляемое поле будет удалено.
Удаление неявного вычисляемого поля в представлении схемы
- Найдите вычисляемое поле в таблице данных в представлении схемы.
- Щелкните правой кнопкой мыши по вычисленному имени поля.
- Нажмите Удалить в раскрывающемся списке.
Появится сообщение для подтверждения удаления.
Нажмите Удалить из модели. Неявное вычисляемое поле будет удалено и не будет отображаться в списке полей таблицы данных.
Excel DAX – синтаксис
Как обсуждалось ранее, DAX – это язык формул, состоящий из операторов, значений, функций и формул. В этой главе вы узнаете о синтаксисе DAX.
Синтаксис DAX можно отнести к категории –
- Синтаксис для формул DAX
- Требования к именованию DAX
- DAX Особые ценности
- Функции DAX
- Операторы DAX
- Типы данных DAX
Прежде чем приступить к изучению синтаксиса DAX, вы должны понять разницу между формулами Excel и формулами DAX.
Различия между формулами Excel и формулами DAX
Формулы DAX аналогичны формулам Excel, и их можно ввести в строке формул. Однако между ними есть некоторые существенные различия.
Формула Excel | DAX Formula |
---|---|
Формулы Excel набираются на панели формул в окне Excel. |
Формулы DAX вводятся в строке формул в окне Power Pivot. |
В формулах Excel вы можете ссылаться на отдельные ячейки или массивы данных. |
В формулах DAX вы можете ссылаться только на полные таблицы или столбцы данных, т.е. ссылки могут быть только на таблицы и поля в таблицах. Однако, если вам вообще необходимо выполнять вычисления только для части данных столбца, вы можете сделать это с помощью функций DAX, которые фильтруют и предоставляют необходимые уникальные значения данных для расчета. |
Формулы Excel поддерживают определенные типы данных. |
DAX предоставляет больше типов данных, чем Excel. Следовательно, формулы DAX также могут использовать дополнительные типы данных. |
Excel не поддерживает какие-либо неявные преобразования данных. |
DAX выполняет неявные преобразования типов данных во время вычислений. |
Формулы Excel набираются на панели формул в окне Excel.
Формулы DAX вводятся в строке формул в окне Power Pivot.
В формулах Excel вы можете ссылаться на отдельные ячейки или массивы данных.
В формулах DAX вы можете ссылаться только на полные таблицы или столбцы данных, т.е. ссылки могут быть только на таблицы и поля в таблицах.
Однако, если вам вообще необходимо выполнять вычисления только для части данных столбца, вы можете сделать это с помощью функций DAX, которые фильтруют и предоставляют необходимые уникальные значения данных для расчета.
Формулы Excel поддерживают определенные типы данных.
DAX предоставляет больше типов данных, чем Excel. Следовательно, формулы DAX также могут использовать дополнительные типы данных.
Excel не поддерживает какие-либо неявные преобразования данных.
DAX выполняет неявные преобразования типов данных во время вычислений.
Excel DAX – Операторы
DAX – это язык формул, состоящий из функций, операторов и значений, которые можно использовать в формуле или выражении для вычисления и возврата одного или нескольких значений.
Вы можете использовать операторы DAX для сравнения значений, выполнения арифметических вычислений и объединения строк. В этой главе вы узнаете об операторах DAX и о том, как их использовать.
Типы операторов 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, ее параметры могут отличаться, и результат функции также может быть другим.
Вы узнаете больше обо всем этом в следующих главах.
Excel DAX – стандартные параметры
У DAX есть стандартные имена параметров, чтобы облегчить использование и понимание функций DAX. Кроме того, вы можете использовать определенные префиксы для имен параметров. Если префикс достаточно ясен, вы можете использовать сам префикс в качестве имени параметра.
Стандартные имена параметров
Ниже приведены имена стандартных параметров DAX –
Sr.No. | Имя параметра и описание |
---|---|
1 |
выражение Любое выражение DAX, которое возвращает одно скалярное значение, где выражение должно оцениваться несколько раз (для каждой строки / контекста). |
2 |
значение Любое выражение DAX, которое возвращает единственное скалярное значение, где выражение должно оцениваться ровно один раз перед всеми другими операциями. |
3 |
Таблица Любое выражение DAX, которое возвращает таблицу данных. |
4 |
TABLENAME Имя существующей таблицы с использованием стандартного синтаксиса DAX. Это не может быть выражением. |
5 |
ColumnName Имя существующего столбца с использованием стандартного синтаксиса DAX, как правило, полностью уточнено. Это не может быть выражением. |
6 |
название Строковая константа, которая будет использоваться для предоставления имени нового объекта. |
7 |
порядок Перечисление, используемое для определения порядка сортировки. |
8 |
связи Перечисление, используемое для определения обработки значений связывания. |
9 |
тип Перечисление, используемое для определения типа данных для PathItem и PathItemReverse. |
выражение
Любое выражение DAX, которое возвращает одно скалярное значение, где выражение должно оцениваться несколько раз (для каждой строки / контекста).
значение
Любое выражение DAX, которое возвращает единственное скалярное значение, где выражение должно оцениваться ровно один раз перед всеми другими операциями.
Таблица
Любое выражение DAX, которое возвращает таблицу данных.
TABLENAME
Имя существующей таблицы с использованием стандартного синтаксиса DAX. Это не может быть выражением.
ColumnName
Имя существующего столбца с использованием стандартного синтаксиса DAX, как правило, полностью уточнено. Это не может быть выражением.
название
Строковая константа, которая будет использоваться для предоставления имени нового объекта.
порядок
Перечисление, используемое для определения порядка сортировки.
связи
Перечисление, используемое для определения обработки значений связывания.
тип
Перечисление, используемое для определения типа данных для PathItem и PathItemReverse.
Префикс имен параметров
Вы можете указать имя параметра с префиксом –
-
Префикс должен описывать, как используется аргумент.
-
Префикс должен быть таким, чтобы избежать неоднозначного чтения параметра.
Префикс должен описывать, как используется аргумент.
Префикс должен быть таким, чтобы избежать неоднозначного чтения параметра.
Например,
-
Result_ColumnName – указывает на существующий столбец, используемый для получения значений результата в функции DAX LOOKUPVALUE ().
-
Search_ColumnName – указывает на существующий столбец, используемый для поиска значения в функции DAX LOOKUPVALUE ().
Result_ColumnName – указывает на существующий столбец, используемый для получения значений результата в функции DAX LOOKUPVALUE ().
Search_ColumnName – указывает на существующий столбец, используемый для поиска значения в функции DAX LOOKUPVALUE ().
Использование только префикса в качестве параметра
Вы можете опустить имя параметра и использовать только префикс, если префикс достаточно ясен для описания параметра. Пропуск имени параметра и использование только префикса может иногда помочь избежать беспорядка в чтении.
Например, рассмотрим дату (год_значения, месяц_значения, день_значения). Вы можете опустить параметр имя – значение, которое повторяется трижды, и записать его как DATE (год, месяц, день). Как вы можете заметить, используя только префиксы, функция более читабельна.
Тем не менее, иногда имя параметра и префикс должны присутствовать для ясности.
Например, рассмотрим Year_columnName. Имя параметра – ColumnName, а префикс – Год. И то, и другое требуется, чтобы пользователь понял, что параметр требует ссылки на существующий столбец лет.
Excel DAX – Функции
Большинство функций DAX имеют те же имена и функциональность, что и функции Excel. Однако функции DAX были изменены, чтобы использовать типы данных DAX и работать с таблицами и столбцами.
У DAX есть некоторые дополнительные функции, которые вы не найдете в Excel. Эти функции DAX предоставляются для конкретных целей, таких как поиск на основе отношений, связанных с аспектами реляционной базы данных модели данных, возможность итерации по таблице для выполнения рекурсивных вычислений, для выполнения динамического агрегирования и для вычислений с использованием анализа времени.
В этой главе вы узнаете о функциях, поддерживаемых в языке DAX. Для получения дополнительной информации об использовании этих функций DAX обратитесь к учебнику – Функции DAX в этой библиотеке учебников.
Что такое функция DAX?
Функция DAX – это встроенная функция на языке DAX, позволяющая вам выполнять различные действия с данными в таблицах в вашей модели данных. Как обсуждалось ранее, DAX используется для анализа данных и целей бизнес-аналитики, которым требуется поддержка для извлечения, усвоения и получения данных из данных. Функции DAX, основанные на модели данных, предоставляют вам эти утилиты, которые упрощают вашу работу, как только вы овладеете языком DAX и использованием функций DAX.
Функции Excel и DAX
Есть определенные сходства между известными вам функциями Excel и функциями DAX. Однако есть и определенные различия. Вы должны получить ясность по этим вопросам, чтобы избежать ошибок при использовании функций DAX и при написании формул DAX, которые включают функции DAX.
Сходства между функциями Excel и DAX
-
Многие функции DAX имеют то же имя и такое же общее поведение, что и функции Excel.
-
DAX имеет функции поиска, которые аналогичны функциям поиска в массиве и векторе в Excel.
Многие функции DAX имеют то же имя и такое же общее поведение, что и функции Excel.
DAX имеет функции поиска, которые аналогичны функциям поиска в массиве и векторе в Excel.
Различия между функциями Excel и DAX
-
Функции DAX были изменены, чтобы принимать различные типы входов, и некоторые функции DAX могут возвращать другой тип данных. Следовательно, вы должны понимать использование этих функций отдельно, хотя они имеют одинаковые имена. В этом руководстве вы найдете все функции DAX с префиксом DAX, чтобы избежать путаницы с функциями Excel.
-
Вы не можете использовать функции DAX в формуле Excel или использовать формулы / функции Excel в DAX без необходимых изменений.
-
Функции Excel принимают ссылку на ячейку или диапазон ячеек в качестве ссылки. Функции DAX никогда не принимают ссылку на ячейку или диапазон ячеек в качестве ссылки, а вместо этого принимают столбец или таблицу в качестве ссылки.
-
Функции даты и времени в Excel возвращают целое число, представляющее дату в виде серийного номера. Функции даты и времени DAX возвращают тип данных datetime, который находится в DAX, но не в Excel.
-
В Excel нет функций, возвращающих таблицу, но некоторые функции могут работать с массивами. Многие из функций DAX могут легко ссылаться на полные таблицы и столбцы, чтобы выполнять вычисления и возвращать таблицу или столбец значений. Эта способность DAX добавляет мощность в Power Pivot, Power View и Power BI, где используется DAX.
-
Функции поиска DAX требуют, чтобы между таблицами была установлена связь.
-
Excel поддерживает вариантный тип данных в столбце данных, т.е. в столбце могут быть данные разных типов данных. Принимая во внимание, что DAX ожидает, что данные в столбце таблицы всегда будут одного типа данных. Если данные не относятся к одному и тому же типу данных, DAX изменяет весь столбец на тип данных, который наилучшим образом соответствует всем значениям в столбце. Однако, если данные импортированы и возникает эта проблема, DAX может пометить ошибку.
Функции DAX были изменены, чтобы принимать различные типы входов, и некоторые функции DAX могут возвращать другой тип данных. Следовательно, вы должны понимать использование этих функций отдельно, хотя они имеют одинаковые имена. В этом руководстве вы найдете все функции DAX с префиксом DAX, чтобы избежать путаницы с функциями Excel.
Вы не можете использовать функции DAX в формуле Excel или использовать формулы / функции Excel в DAX без необходимых изменений.
Функции Excel принимают ссылку на ячейку или диапазон ячеек в качестве ссылки. Функции DAX никогда не принимают ссылку на ячейку или диапазон ячеек в качестве ссылки, а вместо этого принимают столбец или таблицу в качестве ссылки.
Функции даты и времени в Excel возвращают целое число, представляющее дату в виде серийного номера. Функции даты и времени DAX возвращают тип данных datetime, который находится в DAX, но не в Excel.
В Excel нет функций, возвращающих таблицу, но некоторые функции могут работать с массивами. Многие из функций DAX могут легко ссылаться на полные таблицы и столбцы, чтобы выполнять вычисления и возвращать таблицу или столбец значений. Эта способность DAX добавляет мощность в Power Pivot, Power View и Power BI, где используется DAX.
Функции поиска DAX требуют, чтобы между таблицами была установлена связь.
Excel поддерживает вариантный тип данных в столбце данных, т.е. в столбце могут быть данные разных типов данных. Принимая во внимание, что DAX ожидает, что данные в столбце таблицы всегда будут одного типа данных. Если данные не относятся к одному и тому же типу данных, DAX изменяет весь столбец на тип данных, который наилучшим образом соответствует всем значениям в столбце. Однако, если данные импортированы и возникает эта проблема, DAX может пометить ошибку.
Чтобы узнать о типах данных DAX и приведении типов данных, обратитесь к главе – Справочник по синтаксису DAX.
Типы функций DAX
DAX поддерживает следующие типы функций.
- Табличные функции DAX
- Функции фильтра DAX
- Функции агрегации DAX
- DAX Time Intelligence Функции
- Функции даты и времени DAX
- Информационные функции DAX
- DAX логические функции
- DAX Math и Trig Функции
- DAX Другие функции
- DAX родительские и дочерние функции
- Статистические функции DAX
- Текстовые функции DAX
В этом разделе вы узнаете о функциях DAX на уровне категории функций. Для получения подробной информации о синтаксисе функции DAX и о том, что функция DAX возвращает и выполняет – см. Учебное руководство по функциям DAX в этой библиотеке учебных пособий.
Функции анализа времени DAX и функции фильтра DAX являются мощными и требуют особого упоминания. Обратитесь к главам – Общие сведения о функциях DAX Time Intelligence и DAX Filter.
Табличные функции DAX
Многие функции DAX принимают таблицы в качестве входных или выходных таблиц или выполняют обе функции. Эти функции DAX называются табличными функциями DAX. Поскольку таблица может иметь один столбец, функции таблицы DAX также принимают в качестве входных данных отдельные столбцы. У вас есть следующие типы табличных функций DAX –
- Функции агрегации DAX
- Функции фильтра DAX
- Интеллектуальные функции DAX Time
Понимание табличных функций DAX поможет вам эффективно писать формулы DAX.
Функции агрегации DAX
Функции агрегации DAX агрегируют любое выражение по строкам таблицы и полезны в вычислениях.
Ниже приведены некоторые функции агрегации DAX.
-
ADDCOLUMNS (<таблица>, <имя>, <выражение>, [<имя>, <выражение>]…)
-
СРЕДНИЙ (<столбец>)
-
AVERAGEA (<колонка>)
-
AVERAGEX (<таблица>, <выражение>)
-
COUNT (<столбец>)
-
COUNTA (<столбец>)
-
COUNTAX (<таблица>, <выражение>)
-
COUNTBLANK (<столбец>)
-
COUNTROWS (<таблица>)
-
COUNTX (<таблица>, <выражение>)
-
CROSSJOIN (<table1>, <table2>, [<table3>]…)
-
DISTINCTCOUNT (<столбец>)
-
GENERATE (<table1>, <table2>)
-
GENERATEALL (<table1>, <table2>)
-
MAX (<столбец>)
-
МАКСА (<столбец>)
-
MAXX (<таблица>, <выражение>)
-
MIN (<столбец>)
-
MINA (<столбец>)
-
MINX (<таблица>, <выражение>)
-
ПРОДУКТ (<колонка>)
-
PRODUCTX (<таблица>, <выражение>)
-
ROW (<имя>, <выражение>, [<имя>, <выражение>]…)
-
SELECTCOLUMNS (<таблица>, <имя>, <скалярное выражение>,
-
[<name>, <scalar_expression>]…)
-
СУММА (<столбец>)
-
SUMMARIZE (<таблица>, <groupBy_columnName>, [<groupBy_columnName>]…, [<имя>, <выражение>]…)
-
SUMX (<таблица>, <выражение>)
-
TOPN (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…)
ADDCOLUMNS (<таблица>, <имя>, <выражение>, [<имя>, <выражение>]…)
СРЕДНИЙ (<столбец>)
AVERAGEA (<колонка>)
AVERAGEX (<таблица>, <выражение>)
COUNT (<столбец>)
COUNTA (<столбец>)
COUNTAX (<таблица>, <выражение>)
COUNTBLANK (<столбец>)
COUNTROWS (<таблица>)
COUNTX (<таблица>, <выражение>)
CROSSJOIN (<table1>, <table2>, [<table3>]…)
DISTINCTCOUNT (<столбец>)
GENERATE (<table1>, <table2>)
GENERATEALL (<table1>, <table2>)
MAX (<столбец>)
МАКСА (<столбец>)
MAXX (<таблица>, <выражение>)
MIN (<столбец>)
MINA (<столбец>)
MINX (<таблица>, <выражение>)
ПРОДУКТ (<колонка>)
PRODUCTX (<таблица>, <выражение>)
ROW (<имя>, <выражение>, [<имя>, <выражение>]…)
SELECTCOLUMNS (<таблица>, <имя>, <скалярное выражение>,
[<name>, <scalar_expression>]…)
СУММА (<столбец>)
SUMMARIZE (<таблица>, <groupBy_columnName>, [<groupBy_columnName>]…, [<имя>, <выражение>]…)
SUMX (<таблица>, <выражение>)
TOPN (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…)
Функции фильтра DAX
Функции фильтра DAX возвращают столбец, таблицу или значения, относящиеся к текущей строке. Вы можете использовать функции DAX Filter для возврата определенных типов данных, поиска значений в связанных таблицах и фильтрации по связанным значениям. Функции DAX Lookup работают с использованием таблиц и связей между ними. Функции фильтра DAX позволяют вам управлять контекстом данных для создания динамических вычислений.
Ниже приведены некоторые функции фильтра DAX –
-
ADDMISSINGITEMS (<showAllColumn>, [<showAllColumn>]…, <таблица>, <groupingColumn>, [<groupingColumn>]… [filterTable]…)
-
ВСЕ ({<таблица> | <столбец>, [<столбец>], [<столбец>]…})
-
ALLEXCEPT (<таблица>, <столбец>, [<столбец>]…)
-
ALLNOBLANKROW (<таблица> | <столбец>)
-
ALLSELECTED ([<tableName> | <columnName>])
-
CALCULATE (<выражение>, <фильтр1>, <фильтр2>…)
-
CALCULATETABLE (<выражение>, <фильтр1>, <фильтр2>…)
-
CROSSFILTER (<columnName1>, <columnName2>, <direction>)
-
DISTINCT (<столбец>)
-
РАНЬШЕ (<колонка>, <число>)
-
EARLIEST (<столбец>)
-
ФИЛЬТР (<таблица>, <фильтр>)
-
ФИЛЬТРЫ (<ColumnName>)
-
HASONEFILTER (<ColumnName>)
-
HASONEVALUE (<ColumnName>)
-
ISCROSSFILTERED (<columnName>)
-
ISFILTERED (<columnName>)
-
KEEPFILTERS (<выражение>)
-
СВЯЗАННЫЕ С (<столбец>)
-
RELATEDTABLE (<TABLENAME>)
-
SUBSTITUTEWITHINDEX (<таблица>, <indexColumnName>, <indexColumnsTable>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…])
-
USERELATIONSHIP (<имя_столбца1>, <имя_столбца2>)
-
VALUES (<TableNameOrColumnName>)
ADDMISSINGITEMS (<showAllColumn>, [<showAllColumn>]…, <таблица>, <groupingColumn>, [<groupingColumn>]… [filterTable]…)
ВСЕ ({<таблица> | <столбец>, [<столбец>], [<столбец>]…})
ALLEXCEPT (<таблица>, <столбец>, [<столбец>]…)
ALLNOBLANKROW (<таблица> | <столбец>)
ALLSELECTED ([<tableName> | <columnName>])
CALCULATE (<выражение>, <фильтр1>, <фильтр2>…)
CALCULATETABLE (<выражение>, <фильтр1>, <фильтр2>…)
CROSSFILTER (<columnName1>, <columnName2>, <direction>)
DISTINCT (<столбец>)
РАНЬШЕ (<колонка>, <число>)
EARLIEST (<столбец>)
ФИЛЬТР (<таблица>, <фильтр>)
ФИЛЬТРЫ (<ColumnName>)
HASONEFILTER (<ColumnName>)
HASONEVALUE (<ColumnName>)
ISCROSSFILTERED (<columnName>)
ISFILTERED (<columnName>)
KEEPFILTERS (<выражение>)
СВЯЗАННЫЕ С (<столбец>)
RELATEDTABLE (<TABLENAME>)
SUBSTITUTEWITHINDEX (<таблица>, <indexColumnName>, <indexColumnsTable>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…])
USERELATIONSHIP (<имя_столбца1>, <имя_столбца2>)
VALUES (<TableNameOrColumnName>)
DAX Time Intelligence Функции
Функции DAX Time Intelligence возвращают таблицу дат или используют таблицу дат для расчета агрегации. Эти функции DAX помогают создавать расчеты, которые отвечают потребностям анализа бизнес-аналитики, позволяя вам манипулировать данными с использованием периодов времени, включая дни, месяцы, кварталы и годы.
Ниже приведены некоторые функции DAX Time Intelligence –
-
CLOSINGBALANCEMONTH (<выражение>, <даты> [, <фильтр>])
-
CLOSINGBALANCEQUARTER (<выражение>, <даты>, [<фильтр>])
-
CLOSINGBALANCEYEAR (<выражение>, <даты>, [<фильтр>], [<год_дата_]>))
-
DATEADD (<даты>, <number_of_intervals>, <интервал>)
-
DATESBETWEEN (<date>, <start_date>, <end_date>)
-
DATESINPERIOD (<date>, <start_date>, <number_of_intervals>, <interval>)
-
DATESMTD (<даты>)
-
DATESQTD (<даты>)
-
DATESYTD (<date>, [<year_end_date>])
-
ENDOFMONTH (<даты>)
-
ENDOFQUARTER (<даты>)
-
ENDOFYEAR (<даты>, [<year_end_date>])
-
FIRSTDATE (<даты>)
-
FIRSTNONBLANK (<столбец>, <выражение>)
-
ПОСЛЕДНЯЯ (<даты>)
-
LASTNONBLANK (<столбец>, <выражение>)
-
СЛЕДУЮЩИЙ (<даты>)
-
СЛЕДУЮЩИЙ (<даты>)
-
СЛЕДУЮЩИЙ (<даты>)
-
NEXTYEAR (<date>, [<year_end_date>])
-
OPENINGBALANCEMONTH (<выражение>, <даты>, [<фильтр>])
-
OPENINGBALANCEQUARTER (<выражение>, <даты>, [<фильтр>])
-
OPENINGBALANCEYEAR (<выражение>, <даты>, [<фильтр>], [<год_дата_]>))
-
PARALLELPERIOD (<даты>, <number_of_intervals>, <интервал>)
-
PREVIOUSDAY (<даты>)
-
PREVIOUSMONTH (<даты>)
-
PREVIOUSQUARTER (<даты>)
-
PREVIOUSYEAR (<date>, [<year_end_date>])
-
SAMEPERIODLASTYEAR (<даты>)
-
STARTOFMONTH (<даты>)
-
STARTOFQUARTER (<даты>)
-
STARTOFYEAR (<даты>)
-
TOTALMTD (<выражение>, <даты>, [<фильтр>])
-
TOTALQTD (<выражение>, <даты>, [<фильтр>])
-
TOTALYTD (<выражение>, <даты>, [<фильтр>], [<год_энд_дата>])
CLOSINGBALANCEMONTH (<выражение>, <даты> [, <фильтр>])
CLOSINGBALANCEQUARTER (<выражение>, <даты>, [<фильтр>])
CLOSINGBALANCEYEAR (<выражение>, <даты>, [<фильтр>], [<год_дата_]>))
DATEADD (<даты>, <number_of_intervals>, <интервал>)
DATESBETWEEN (<date>, <start_date>, <end_date>)
DATESINPERIOD (<date>, <start_date>, <number_of_intervals>, <interval>)
DATESMTD (<даты>)
DATESQTD (<даты>)
DATESYTD (<date>, [<year_end_date>])
ENDOFMONTH (<даты>)
ENDOFQUARTER (<даты>)
ENDOFYEAR (<даты>, [<year_end_date>])
FIRSTDATE (<даты>)
FIRSTNONBLANK (<столбец>, <выражение>)
ПОСЛЕДНЯЯ (<даты>)
LASTNONBLANK (<столбец>, <выражение>)
СЛЕДУЮЩИЙ (<даты>)
СЛЕДУЮЩИЙ (<даты>)
СЛЕДУЮЩИЙ (<даты>)
NEXTYEAR (<date>, [<year_end_date>])
OPENINGBALANCEMONTH (<выражение>, <даты>, [<фильтр>])
OPENINGBALANCEQUARTER (<выражение>, <даты>, [<фильтр>])
OPENINGBALANCEYEAR (<выражение>, <даты>, [<фильтр>], [<год_дата_]>))
PARALLELPERIOD (<даты>, <number_of_intervals>, <интервал>)
PREVIOUSDAY (<даты>)
PREVIOUSMONTH (<даты>)
PREVIOUSQUARTER (<даты>)
PREVIOUSYEAR (<date>, [<year_end_date>])
SAMEPERIODLASTYEAR (<даты>)
STARTOFMONTH (<даты>)
STARTOFQUARTER (<даты>)
STARTOFYEAR (<даты>)
TOTALMTD (<выражение>, <даты>, [<фильтр>])
TOTALQTD (<выражение>, <даты>, [<фильтр>])
TOTALYTD (<выражение>, <даты>, [<фильтр>], [<год_энд_дата>])
Функции даты и времени DAX
Функции даты и времени DAX аналогичны функциям даты и времени в Excel. Однако функции DAX Date и Time основаны на типе данных datetime DAX.
Ниже приведены функции даты и времени DAX.
- ДАТА (<год>, <месяц>, <день>)
- ДАТАЗНАЧ (дата_как_текст)
- ДЕНЬ (<дата>)
- EDATE (<start_date>, <months>)
- EOMONTH (<start_date>, <months>)
- ЧАС (<DateTime>)
- МИНУТЫ (<DateTime>)
- МЕСЯЦ (<DateTime>)
- СЕЙЧАС()
- ВТОРОЙ (<время>)
- ВРЕМЯ (час, минута, секунда)
- ВРЕМЗНАЧ (TIME_TEXT)
- СЕГОДНЯ()
- WEEKDAY (<date>, <return_type>)
- WEEKNUM (<дата>, <возвращаемый_тип>)
- YEAR (<дата>)
- YEARFRAC (<начальная_дата>, <конечная_дата>, <базовый>)
Информационные функции DAX
Информационные функции DAX просматривают ячейку или строку, предоставленные в качестве аргумента, и сообщают, соответствует ли значение ожидаемому типу.
Ниже приведены некоторые функции DAX Information.
-
СОДЕРЖИТ (<table>, <columnName>, <value>, [<columnName>, <value>]…)
-
CustomData ()
-
ЕПУСТО (<значение>)
-
ЕОШИБКА (<значение>)
-
ISEVEN (номер)
-
ISLOGICAL (<значение>)
-
ISNONTEXT (<значение>)
-
ЕЧИСЛО (<значение>)
-
ISONORAFTER (<scalar_expression>, <scalar_expression>, [sort_order], [<scalar_expression>, <scalar_expression>, [sort_order]]…)
-
ISTEXT (<значение>)
-
LOOKUPVALUE (<result_columnName>, <search_columnName>, <search_value>, [<search_columnName>, <search_value>]…)
-
ИМЯ_ПОЛЬЗОВАТЕЛЯ ()
СОДЕРЖИТ (<table>, <columnName>, <value>, [<columnName>, <value>]…)
CustomData ()
ЕПУСТО (<значение>)
ЕОШИБКА (<значение>)
ISEVEN (номер)
ISLOGICAL (<значение>)
ISNONTEXT (<значение>)
ЕЧИСЛО (<значение>)
ISONORAFTER (<scalar_expression>, <scalar_expression>, [sort_order], [<scalar_expression>, <scalar_expression>, [sort_order]]…)
ISTEXT (<значение>)
LOOKUPVALUE (<result_columnName>, <search_columnName>, <search_value>, [<search_columnName>, <search_value>]…)
ИМЯ_ПОЛЬЗОВАТЕЛЯ ()
DAX логические функции
Логические функции DAX возвращают информацию о значениях в выражении. Например, функция DAX TRUE позволяет узнать, возвращает ли вычисляемое выражение значение TRUE.
Ниже приведены DAX логические функции –
- И (<logical1>, <логическое_значение2>)
- ЛОЖНЫЙ()
- IF (логический_тест>, <value_if_true>, value_if_false)
- IFERROR (значение, значение_if_error)
- NOT (<логическое>)
- ИЛИ (<logical1>, <логическое_значение2>)
- SWITCH (<выражение>, <значение>, <результат>, [<значение>, <результат>]…, [<еще>])
- ПРАВДА()
DAX Math и Trig Функции
Математические и тригонометрические функции DAX очень похожи на математические и тригонометрические функции Excel.
Ниже приведены некоторые функции DAX Math и Trig –
- АБС (<число>)
- ACOS (номер)
- ACOSH (номер)
- ASIN (число)
- ASINH (номер)
- ATAN (номер)
- ATANH (номер)
- ПОТОЛОК (<число>, <значимость>)
- КОМБИНАТ (число, число, выбор)
- КОМБИНА (номер, номер_выбран)
- COS (число)
- COSH (номер)
- ВАЛЮТЫ (<значение>)
- ГРАДУСЫ (угол)
- РАЗДЕЛИТЬ (<числитель>, <знаменатель>, [<альтернативный результат>])
- Четное число)
- EXP (<число>)
- ФАКТ (<число>)
- ЭТАЖ (<число>, <значимость>)
- GCD (номер1, [номер2], …)
- INT (<номер>)
- ISO.CEILING (<число>, [<значимость>])
- LCM (номер1, [номер2], …)
- LN (<число>)
- LOG (<число>, <база>)
- Log10 (<число>)
- INT (<номер>)
- MROUND (<число>, <несколько>)
- Нечетное число)
- ЧИСЛО ПИ()
- МОЩНОСТЬ (<число>, <сила>)
- ИЗДЕЛИЯ (<столбец>)
- PRODUCTX (<таблица>, <выражение>)
- QUOTIENT (<числитель>, <знаменатель>)
- РАДИАНЫ (угол)
- RAND ()
- СЛУЧМЕЖДУ (<снизу>, <верх>)
- ROUND (<число>, <num_digits>)
- ROUNDDOWN (<число>, <num_digits>)
- ROUNDUP (<число>, <num_digits>)
- SIN (число)
- SINH (номер)
- ЗНАК (<число>)
- SQRT (<число>)
- СУММА (<столбец>)
- SUMX (<таблица>, <выражение>)
- TAN (число)
- TANH (номер)
- TRUNC (<номер>, <число_разрядов>)
DAX Другие функции
Эти функции DAX выполняют уникальные действия, которые не могут быть определены ни одной из категорий, к которым относится большинство других функций.
Ниже приведены некоторые другие функции DAX –
-
ИСКЛЮЧИТЬ (<table_expression1>, <table_expression2>
-
GROUPBY (<таблица>, [<groupBy_columnName1>], [<имя>, <выражение>]…)
-
INTERSECT (<table_expression1>, <table_expression2>)
-
IsEmpty (<table_expression>)
-
NATURALINNERJOIN (<leftJoinTable>, <rightJoinTable>)
-
NATURALLEFTOUTERJOIN (<leftJoinTable>, <rightJoinTable>)
-
SUMMARIZECOLUMNS (<groupBy_columnName>, [<groupBy_columnName>]…, [<filterTable>]…, [<name>, <expression>]……)
-
UNION (<table_expression1>, <table_expression2>, [<table_expression>]…)
-
VAR <имя> = <выражение>
ИСКЛЮЧИТЬ (<table_expression1>, <table_expression2>
GROUPBY (<таблица>, [<groupBy_columnName1>], [<имя>, <выражение>]…)
INTERSECT (<table_expression1>, <table_expression2>)
IsEmpty (<table_expression>)
NATURALINNERJOIN (<leftJoinTable>, <rightJoinTable>)
NATURALLEFTOUTERJOIN (<leftJoinTable>, <rightJoinTable>)
SUMMARIZECOLUMNS (<groupBy_columnName>, [<groupBy_columnName>]…, [<filterTable>]…, [<name>, <expression>]……)
UNION (<table_expression1>, <table_expression2>, [<table_expression>]…)
VAR <имя> = <выражение>
DAX родительские и дочерние функции
Родительские и дочерние функции DAX полезны для управления данными, которые представлены в иерархии «родитель / потомок» в модели данных.
Ниже приведены некоторые родительские и дочерние функции DAX.
- PATH (<ID_columnName>, <parent_columnName>)
- PATHCONTAINS (<путь>, <элемент>)
- PATHITEM (<путь>, <позиция>, [<тип>])
- PATHITEMREVERSE (<путь>, <позиция>, [<тип>])
- Длина пути (<путь>)
Статистические функции DAX
Статистические функции DAX очень похожи на статистические функции Excel.
Ниже приведены некоторые статистические функции DAX –
-
BETA.DIST (x, альфа, бета, накопительное, [A], [B])
-
BETA.INV (вероятность, альфа, бета, [A], [B])
-
CHISQ.INV (вероятность, град_свободы)
-
CHISQ.INV.RT (вероятность, градус свободы)
-
CONFIDENCE.NORM (альфа, стандарт_дев, размер)
-
CONFIDENCE.T (альфа, стандарт_дев, размер)
-
DATATABLE (ColumnName1, DataType1, ColumnName2, DataType2 …, {{Value1, Value2 …}, {ValueN, ValueN + 1 …} …})
-
EXPON.DIST (x, лямбда, накопительный)
-
GEOMEAN (<столбец>)
-
GEOMEANX (<таблица>, <выражение>)
-
Медиана (<столбец>)
-
MEDIANX (<таблица>, <выражение>)
-
PERCENTILE.EXC (<столбец>, <k>)
-
PERCENTILE.INC (<столбец>, <k>)
-
PERCENTILEX.EXC (<таблица>, <выражение>, k)
-
PERCENTILEX.EXC (<таблица>, <выражение>, k)
-
POISSON.DIST (x, среднее, кумулятивное)
-
RANK.EQ (<value>, <columnName> [, <order>])
-
RANKX (<таблица>, <выражение> [, <значение> [, <порядок> [, <связи>]]])
-
SAMPLE (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…)
-
STDEV.P (<ColumnName>)
-
STDEV.S (<ColumnName>)
-
STDEVX.P (<таблица>, <выражение>)
-
STDEVX.S (<таблица>, <выражение>)
-
SQRTPI (номер)
-
VAR.P (<ColumnName>)
-
VAR.S (<ColumnName>)
-
VARX.P (<таблица>, <выражение>)
-
VARX.S (<таблица>, <выражение>)
-
XIRR (<таблица>, <значения>, <даты>, [предположение])
-
XNPV (<таблица>, <значения>, <даты>, <ставка>)
BETA.DIST (x, альфа, бета, накопительное, [A], [B])
BETA.INV (вероятность, альфа, бета, [A], [B])
CHISQ.INV (вероятность, град_свободы)
CHISQ.INV.RT (вероятность, градус свободы)
CONFIDENCE.NORM (альфа, стандарт_дев, размер)
CONFIDENCE.T (альфа, стандарт_дев, размер)
DATATABLE (ColumnName1, DataType1, ColumnName2, DataType2 …, {{Value1, Value2 …}, {ValueN, ValueN + 1 …} …})
EXPON.DIST (x, лямбда, накопительный)
GEOMEAN (<столбец>)
GEOMEANX (<таблица>, <выражение>)
Медиана (<столбец>)
MEDIANX (<таблица>, <выражение>)
PERCENTILE.EXC (<столбец>, <k>)
PERCENTILE.INC (<столбец>, <k>)
PERCENTILEX.EXC (<таблица>, <выражение>, k)
PERCENTILEX.EXC (<таблица>, <выражение>, k)
POISSON.DIST (x, среднее, кумулятивное)
RANK.EQ (<value>, <columnName> [, <order>])
RANKX (<таблица>, <выражение> [, <значение> [, <порядок> [, <связи>]]])
SAMPLE (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…)
STDEV.P (<ColumnName>)
STDEV.S (<ColumnName>)
STDEVX.P (<таблица>, <выражение>)
STDEVX.S (<таблица>, <выражение>)
SQRTPI (номер)
VAR.P (<ColumnName>)
VAR.S (<ColumnName>)
VARX.P (<таблица>, <выражение>)
VARX.S (<таблица>, <выражение>)
XIRR (<таблица>, <значения>, <даты>, [предположение])
XNPV (<таблица>, <значения>, <даты>, <ставка>)
Текстовые функции DAX
Функции DAX Text работают с таблицами и столбцами. С помощью функций DAX Text вы можете возвращать часть строки, искать текст в строке или объединять значения строк. Вы также можете управлять форматами дат, времени и чисел.
Ниже приведены некоторые функции DAX Text –
- BLANK ()
- CODE (текст)
- CONCATENATE (<text1>, <text2>)
- CONCATENATEX (<таблица>, <выражение>, [разделитель])
- EXACT (<text1>, <text2>)
- НАЙТИ (<find_text>, <inside_text>, [<start_num>], [<NotFoundValue>])
- ИСПРАВЛЕНО (<число>, <десятичные числа>, <no_commas>)
- FORMAT (<value>, <format_string>)
- ВЛЕВО (<text>, <num_chars>)
- LEN (<текст>)
- LOWER (<текст>)
- MID (<text>, <start_num>, <num_chars>)
- REPLACE (<old_text>, <start_num>, <num_chars>, <new_text>)
- REPT (<text>, <num_times>)
- ВПРАВО (<text>, <num_chars>)
- ПОИСК (<find_text>, <inside_text>, [<start_num>], [<NotFoundValue>])
- ЗАМЕНА (<text>, <old_text>, <new_text>, <instance_num>)
- TRIM (<текст>)
- UPPER (<текст>)
- VALUE (<текст>)
Excel DAX – Понимание функций DAX
В Excel 2013 DAX имеет 246 функций. Вы уже узнали о различных типах функций DAX в главе «Функции DAX». Однако, если вам нужно использовать функцию DAX в формуле DAX, вам необходимо разобраться в этой функции подробно. Вы должны знать синтаксис функции, типы параметров, что возвращает функция и т. Д.
Если вы пишете формулу DAX, рекомендуется использовать функции DAX, где это применимо. Для этого вы можете обратиться к учебнику – Функции DAX в этой библиотеке учебников для глубокого понимания того, где и как использовать каждую из 246 функций DAX. Вы всегда можете переходить от одного учебника к другому и изучать функции DAX, чтобы овладеть DAX.
В этой главе вы поймете, как читать и интерпретировать функции DAX в руководстве по функциям DAX.
Функция DAX – объяснение структуры
В руководстве по функциям DAX каждая функция DAX описывается в стандартной структуре, состоящей из следующих разделов:
- Описание
- Синтаксис
- параметры
- Возвращаемое значение
- замечания
- пример
Вы узнаете о каждом из них в следующих разделах.
Описание
В разделе «Описание» вы узнаете, что такое функция DAX и где ее можно использовать.
Синтаксис
В разделе Синтаксис вы узнаете точное название функции и соответствующие параметры.
параметры
В разделе «Параметры» вы узнаете о каждом из параметров конкретной функции DAX, является ли параметр входом или выходом и есть ли какие-либо параметры. Как видно из главы «Стандартные параметры DAX», будут использоваться только имена стандартных параметров.
Возвращаемое значение
В разделе «Возвращаемое значение» вы узнаете, какое значение будет возвращать функция DAX, и ее тип данных.
замечания
В разделе «Примечания» вы узнаете о любой дополнительной информации, которая вам необходима для использования функции DAX.
пример
Описание функции DAX закончится примером использования функции.
Excel DAX – оценочный контекст
В DAX контекст – это важный термин, который вы должны знать при написании формул DAX. Также называется контекстом оценки, контекст DAX используется для определения оценки формулы DAX и соответствующего результата. Это означает, что результаты формулы DAX могут варьироваться в зависимости от контекста. Вы должны четко понимать, как используется конкретный контекст DAX и как могут отличаться результаты.
Контекст оценки позволяет выполнять динамический анализ, в котором результаты формулы DAX могут изменяться в зависимости от текущей строки или выбора ячейки, а также любых связанных данных. Понимание контекста и эффективное использование контекста очень важны для построения мощных формул DAX, выполнения динамического анализа данных и устранения проблем в формулах DAX. Контексты оценки являются основой всех расширенных функций DAX, которые необходимо освоить для создания сложных отчетов анализа данных.
Поскольку вы продолжаете ссылаться на функции DAX для соответствующего использования в формулах DAX, вам необходимо обратиться к этой главе по контексту DAX, чтобы получить ясность в результатах.
Типы контекста в DAX
DAX поддерживает следующие контексты оценки –
- Контекст строки
- Контекст фильтра
Когда формула DAX оценена, все контексты будут приняты во внимание и применены как соответствующие. Контексты существуют вместе, и результат формулы будет отличаться в зависимости от контекста, который используется при вычислении значения. Например, когда вы выбираете поля для строк, столбцов и фильтров в сводной таблице, промежуточные итоги рассчитываются динамически на основе того, с какой строкой и каким столбцом связан промежуточный итог / итог, а значения в строках и столбцах определяются фильтрами. используемый.
Контекст строки
Контекст строки означает, что формула DAX или функция DAX знает, на какую строку таблицы она ссылается в любой момент времени. Вы можете рассматривать контекст строки как текущую строку. Формула будет вычисляться построчно с контекстом строки.
Некоторые функции DAX (например, X-функции, FILTER ()) и все вычисляемые столбцы имеют контекст строки. Например, если вы создаете вычисляемый столбец Year с формулой DAX = YEAR ([Дата]), значения вычисляемого столбца получаются путем применения заданной формулы DAX к указанному столбцу в таблице, строка за строкой.
Это означает, что если вы создали вычисляемый столбец, контекст строки состоит из значений в каждой отдельной строке и значений в столбцах, которые относятся к текущей строке, как определено используемой формулой DAX. Хотя формула DAX не содержит ссылку на строку, DAX неявно понимает контекст строки при вычислении значений.
DAX автоматически создает контекст строки при определении вычисляемого столбца, и все вычисленные значения с использованием формулы DAX появятся в вычисляемом столбце.
Напротив, если у вас есть функция DAX, такая как SUMX, значения, вычисленные построчно, суммируются, и отображается только конечный результат. То есть промежуточные значения отбрасываются.
Если у вас есть связанные таблицы, контекст строки определяет, какие строки в связанной таблице связаны с текущей строкой. Однако контекст строки не распространяется через отношения автоматически. Для этого вы должны использовать функции DAX – RELATED и RELATEDTABLE.
Многострочный контекст
DAX имеет функции итератора, такие как SUMX. Вы можете использовать эти функции для вложения контекстов строк. При этом программно вы можете иметь рекурсию по внутреннему циклу и внешнему циклу, где вы можете иметь несколько текущих строк и текущих контекстов строк.
Например, вы можете использовать функцию DAX Earlier (), которая сохраняет контекст строки из операции, предшествующей текущей операции. Эта функция хранит два набора контекста в памяти: один набор контекста представляет текущую строку для внутреннего цикла формулы, а другой набор контекста представляет текущую строку для внешнего цикла формулы. DAX автоматически передает значения между двумя циклами, чтобы вы могли создавать сложные агрегаты.
Для примера обратитесь к сценарию – Создание формулы DAX, которая динамически оценивает значения в главе Сценарии – ранжирование и сравнение значений.
Контекст фильтра
Контекст фильтра относится к любой фильтрации, которая применяется к модели данных в DAX. Контекст фильтра создается сводной таблицей, а также функциями DAX.
Контекст фильтра, созданный с помощью сводной таблицы
Контекст фильтра, созданный с помощью сводной таблицы, – это естественная фильтрация, которая применяется при выборе полей в сводной таблице из следующих элементов:
- Ряды
- Колонны
- фильтры
- Срезы
Контекст фильтра, созданный сводной таблицей, фильтрует базовые таблицы в модели данных. Если таблицы связаны, то фильтры переходят от таблиц поиска к таблицам данных. Это означает, что вы можете фильтровать таблицы данных на основе результатов из таблиц поиска. Распространение фильтра не происходит наоборот. Однако вы можете использовать формулы DAX для фильтрации справочных таблиц на основе результатов таблиц данных.
Контекст фильтра, созданный функциями DAX
Вы можете использовать функции фильтра DAX для определения вычисляемых полей и вычисляемых столбцов, содержащих выражения фильтра, которые управляют значениями, используемыми формулой DAX. Эти вычисляемые поля и вычисляемые столбцы затем становятся частью списка полей сводной таблицы, и вы можете добавить их в сводную таблицу. Вы также можете выборочно очистить фильтры для определенных столбцов с помощью этих функций DAX Filter. Пример мощной функции фильтра DAX для создания контекста фильтра – CALCULATE (). Для примера, обратитесь к главе Сценарии – Выполнение сложных вычислений.
Фильтр контекста как дополнение к контексту строки
Контекст строки не создает автоматически контекст фильтра. Вы можете достичь того же с формулами DAX, содержащими функции фильтра DAX.
Excel DAX – формулы
DAX – это язык формул для создания пользовательских вычислений в Power PivotTables. Вы можете использовать функции DAX, которые предназначены для работы с реляционными данными и выполнения динамического агрегирования в формулах DAX.
Формулы DAX очень похожи на формулы Excel. Чтобы создать формулу DAX, вы вводите знак равенства, за которым следует имя или выражение функции и все необходимые значения или аргументы.
Функции DAX против формул DAX
Формулы DAX могут включать функции DAX и эффективно использовать их. Именно здесь формулы DAX имеют существенные отличия от функций DAX.
-
Функция DAX всегда ссылается на полный столбец или таблицу. Если вы хотите использовать только определенные значения из таблицы или столбца, вы можете добавить фильтры в формулу.
-
Если вы хотите настраивать вычисления построчно, Power Pivot предоставляет функции, которые позволяют использовать текущее значение строки или связанное значение для выполнения расчетов, которые зависят от контекста.
-
DAX включает в себя тип функции, которая возвращает таблицу в качестве результата, а не одно значение. Эти функции могут использоваться для ввода данных в другие функции, таким образом вычисляя значения для целых таблиц или столбцов.
-
Некоторые функции DAX обеспечивают анализ времени, что позволяет создавать вычисления с использованием значимых диапазонов дат и сравнивать результаты по параллельным периодам.
Функция DAX всегда ссылается на полный столбец или таблицу. Если вы хотите использовать только определенные значения из таблицы или столбца, вы можете добавить фильтры в формулу.
Если вы хотите настраивать вычисления построчно, Power Pivot предоставляет функции, которые позволяют использовать текущее значение строки или связанное значение для выполнения расчетов, которые зависят от контекста.
DAX включает в себя тип функции, которая возвращает таблицу в качестве результата, а не одно значение. Эти функции могут использоваться для ввода данных в другие функции, таким образом вычисляя значения для целых таблиц или столбцов.
Некоторые функции DAX обеспечивают анализ времени, что позволяет создавать вычисления с использованием значимых диапазонов дат и сравнивать результаты по параллельным периодам.
Понимание синтаксиса формул DAX
Каждая формула DAX имеет следующий синтаксис –
-
Каждая формула должна начинаться со знака равенства.
-
Справа от знака равенства вы можете либо ввести, либо выбрать имя функции, либо ввести выражение. Выражение может содержать имена таблиц и столбцов, связанные операторами DAX.
Каждая формула должна начинаться со знака равенства.
Справа от знака равенства вы можете либо ввести, либо выбрать имя функции, либо ввести выражение. Выражение может содержать имена таблиц и столбцов, связанные операторами DAX.
Ниже приведены некоторые действительные формулы DAX –
- [column_Cost] + [column_Tax]
- = Сегодня ()
Понимание функции IntelliSense
DAX предоставляет функцию IntelliSense, которая позволит вам быстро и правильно писать формулы DAX. С помощью этой функции вам не нужно вводить имена таблиц, столбцов и функций полностью, а выбирать соответствующие имена из выпадающего списка при написании формулы DAX.
-
Начните вводить первые несколько букв имени функции. Автозаполнение отображает список доступных функций с именами, начинающимися с этих букв.
-
Поместите указатель на любое из имен функций. Появится всплывающая подсказка IntelliSense, дающая вам возможность использовать эту функцию.
-
Нажмите на название функции. Имя функции отображается в строке формул и отображается синтаксис, который поможет вам при выборе аргументов.
-
Введите первую букву имени таблицы, которую вы хотите. Автозаполнение отображает список доступных таблиц и столбцов с именами, начинающимися с этой буквы.
-
Нажмите клавишу TAB или щелкните имя, чтобы добавить элемент из списка автозаполнения в формулу.
-
Нажмите кнопку Fx , чтобы отобразить список доступных функций. Чтобы выбрать функцию из раскрывающегося списка, используйте клавиши со стрелками, чтобы выделить элемент, и нажмите кнопку «ОК», чтобы добавить функцию в формулу.
-
Задайте аргументы функции, выбрав их из раскрывающегося списка возможных таблиц и столбцов или введя необходимые значения.
Начните вводить первые несколько букв имени функции. Автозаполнение отображает список доступных функций с именами, начинающимися с этих букв.
Поместите указатель на любое из имен функций. Появится всплывающая подсказка IntelliSense, дающая вам возможность использовать эту функцию.
Нажмите на название функции. Имя функции отображается в строке формул и отображается синтаксис, который поможет вам при выборе аргументов.
Введите первую букву имени таблицы, которую вы хотите. Автозаполнение отображает список доступных таблиц и столбцов с именами, начинающимися с этой буквы.
Нажмите клавишу TAB или щелкните имя, чтобы добавить элемент из списка автозаполнения в формулу.
Нажмите кнопку Fx , чтобы отобразить список доступных функций. Чтобы выбрать функцию из раскрывающегося списка, используйте клавиши со стрелками, чтобы выделить элемент, и нажмите кнопку «ОК», чтобы добавить функцию в формулу.
Задайте аргументы функции, выбрав их из раскрывающегося списка возможных таблиц и столбцов или введя необходимые значения.
Настоятельно рекомендуется использовать эту удобную функцию IntelliSense.
Где использовать формулы DAX?
Вы можете использовать формулы DAX при создании вычисляемых столбцов и вычисляемых полей.
-
Вы можете использовать формулы DAX в вычисляемых столбцах, добавив столбец, а затем напечатав выражение на панели формул. Вы создаете эти формулы в окне PowerPivot.
-
Вы можете использовать формулы DAX в вычисляемых полях. Вы создаете эти формулы –
-
В окне Excel в диалоговом окне «Вычисляемое поле» или
-
В окне Power Pivot в области расчета таблицы.
-
Вы можете использовать формулы DAX в вычисляемых столбцах, добавив столбец, а затем напечатав выражение на панели формул. Вы создаете эти формулы в окне PowerPivot.
Вы можете использовать формулы DAX в вычисляемых полях. Вы создаете эти формулы –
В окне Excel в диалоговом окне «Вычисляемое поле» или
В окне Power Pivot в области расчета таблицы.
Одна и та же формула может вести себя по-разному в зависимости от того, используется ли формула в вычисляемом столбце или вычисляемом поле.
-
В вычисляемом столбце формула всегда применяется к каждой строке в столбце всей таблицы. В зависимости от контекста строки значение может измениться.
-
Однако в вычисляемом поле расчет результатов сильно зависит от контекста. Таким образом, дизайн сводной таблицы и выбор заголовков строк и столбцов влияют на значения, используемые в вычислениях.
В вычисляемом столбце формула всегда применяется к каждой строке в столбце всей таблицы. В зависимости от контекста строки значение может измениться.
Однако в вычисляемом поле расчет результатов сильно зависит от контекста. Таким образом, дизайн сводной таблицы и выбор заголовков строк и столбцов влияют на значения, используемые в вычислениях.
При написании формул DAX важно понимать концепцию контекста в DAX. Это может быть немного сложным в начале вашего пути DAX, но как только вы его освоите, вы можете написать эффективные формулы DAX, которые необходимы для сложного и динамического анализа данных. Подробнее см. Главу «Контекст DAX».
Создание формулы DAX
Вы уже узнали о функции IntelliSense в предыдущем разделе. Не забудьте использовать его при создании любой формулы DAX.
Чтобы создать формулу DAX, выполните следующие действия:
-
Введите знак равенства.
-
Справа от знака равенства введите следующее –
-
Введите первую букву имени функции или таблицы и выберите полное имя в раскрывающемся списке.
-
Если вы выбрали имя функции, введите круглые скобки ‘(‘.
-
Если вы выбрали имя таблицы, введите скобку ‘[‘. Введите первую букву имени столбца и выберите полное имя в раскрывающемся списке.
-
Закройте имена столбцов с помощью ‘]’ и имена функций с помощью ‘)’.
-
Введите оператор DAX между выражениями или введите ‘,’ для разделения аргументов функции.
-
Повторите шаги 1 – 5 до завершения формулы DAX.
-
Введите знак равенства.
Справа от знака равенства введите следующее –
Введите первую букву имени функции или таблицы и выберите полное имя в раскрывающемся списке.
Если вы выбрали имя функции, введите круглые скобки ‘(‘.
Если вы выбрали имя таблицы, введите скобку ‘[‘. Введите первую букву имени столбца и выберите полное имя в раскрывающемся списке.
Закройте имена столбцов с помощью ‘]’ и имена функций с помощью ‘)’.
Введите оператор DAX между выражениями или введите ‘,’ для разделения аргументов функции.
Повторите шаги 1 – 5 до завершения формулы DAX.
Например, вы хотите найти общую сумму продаж в восточном регионе. Вы можете написать формулу DAX, как показано ниже. East_Sales – это имя таблицы. Сумма – это столбец в таблице.
SUM ([East_Sales[Amount])
Как уже обсуждалось в главе «Синтаксис DAX», рекомендуется использовать имя таблицы вместе с именем столбца в каждой ссылке на любое имя столбца. Это называется «полное имя».
Формула DAX может варьироваться в зависимости от того, используется ли она для вычисляемого поля или вычисляемого столбца. Обратитесь к разделам ниже для деталей.
Создание формулы DAX для вычисляемого столбца
Вы можете создать формулу DAX для вычисляемого столбца в окне Power Pivot.
- Нажмите на вкладку таблицы, в которую вы хотите добавить вычисляемый столбец.
- Перейдите на вкладку «Дизайн» на ленте.
- Нажмите Добавить.
- Введите формулу DAX для вычисляемого столбца в строке формул.
= DIVIDE (East_Sales[Amount], East_Sales[Units])
Эта формула DAX делает следующее для каждой строки в таблице East_Sales –
-
Делит значение в столбце Сумма строки на значение в столбце Единицы в той же строке.
-
Помещает результат в новый добавленный столбец в той же строке.
-
Повторите шаги 1 и 2 итеративно, пока он не завершит все строки в таблице.
Делит значение в столбце Сумма строки на значение в столбце Единицы в той же строке.
Помещает результат в новый добавленный столбец в той же строке.
Повторите шаги 1 и 2 итеративно, пока он не завершит все строки в таблице.
Вы добавили столбец для цены за единицу, по которому эти единицы продаются по приведенной выше формуле.
-
Как вы можете заметить, вычисляемые столбцы также требуют вычислений и места для хранения. Следовательно, используйте вычисляемые столбцы только при необходимости. Используйте рассчитанные поля, где это возможно и достаточно.
Как вы можете заметить, вычисляемые столбцы также требуют вычислений и места для хранения. Следовательно, используйте вычисляемые столбцы только при необходимости. Используйте рассчитанные поля, где это возможно и достаточно.
Обратитесь к главе – Рассчитанные столбцы за подробностями.
Создание формулы DAX для вычисляемого поля
Вы можете создать формулу DAX для вычисляемого поля либо в окне Excel, либо в окне Power Pivot. В случае вычисляемого поля вам необходимо заранее указать имя.
-
Чтобы создать формулу DAX для вычисляемого поля в окне Excel, используйте диалоговое окно «Вычисляемое поле».
-
Чтобы создать формулу DAX для вычисляемого поля в окне Power Pivot, щелкните ячейку в области вычислений в соответствующей таблице. Запустите формулу DAX с CalculatedFieldName: =.
Чтобы создать формулу DAX для вычисляемого поля в окне Excel, используйте диалоговое окно «Вычисляемое поле».
Чтобы создать формулу DAX для вычисляемого поля в окне Power Pivot, щелкните ячейку в области вычислений в соответствующей таблице. Запустите формулу DAX с CalculatedFieldName: =.
Например, общая восточная сумма продаж: = SUM ([East_Sales [Amount])
Если вы используете диалоговое окно «Вычисляемое поле» в окне Excel, вы можете проверить формулу перед ее сохранением и сделать ее обязательной привычкой, обеспечивающей использование правильных формул.
Подробнее об этих параметрах см. В главе «Вычисляемые поля».
Создание формул DAX с помощью панели формул
Окно Power Pivot также имеет панель формул, которая похожа на панель формул окна Excel. Панель формул облегчает создание и редактирование формул, используя функцию автозаполнения, чтобы минимизировать синтаксические ошибки.
-
Чтобы ввести имя таблицы, начните вводить имя таблицы. Формула автозаполнения предоставляет выпадающий список, содержащий допустимые имена таблиц, которые начинаются с этих букв. Вы можете начать с одной буквы и набирать больше букв, чтобы сузить список, если это необходимо.
-
Чтобы ввести имя столбца, вы можете выбрать его из списка имен столбцов в выбранной таблице. Введите скобку «[» справа от имени таблицы, а затем выберите столбец из списка столбцов в выбранной таблице.
Чтобы ввести имя таблицы, начните вводить имя таблицы. Формула автозаполнения предоставляет выпадающий список, содержащий допустимые имена таблиц, которые начинаются с этих букв. Вы можете начать с одной буквы и набирать больше букв, чтобы сузить список, если это необходимо.
Чтобы ввести имя столбца, вы можете выбрать его из списка имен столбцов в выбранной таблице. Введите скобку «[» справа от имени таблицы, а затем выберите столбец из списка столбцов в выбранной таблице.
Советы по использованию автозаполнения
Ниже приведены некоторые советы по использованию автозаполнения –
-
Вы можете вкладывать функции и формулы в формулу DAX. В таком случае вы можете использовать автозаполнение формул в середине существующей формулы с вложенными функциями. Текст непосредственно перед точкой вставки используется для отображения значений в раскрывающемся списке, и весь текст после точки вставки остается неизменным.
-
Определенные имена, которые вы создаете для констант, не отображаются в раскрывающемся списке автозаполнения, но вы все равно можете их ввести.
-
Закрывающая скобка функций не добавляется автоматически. Вы должны сделать это самостоятельно.
-
Вы должны убедиться, что каждая функция синтаксически верна.
Вы можете вкладывать функции и формулы в формулу DAX. В таком случае вы можете использовать автозаполнение формул в середине существующей формулы с вложенными функциями. Текст непосредственно перед точкой вставки используется для отображения значений в раскрывающемся списке, и весь текст после точки вставки остается неизменным.
Определенные имена, которые вы создаете для констант, не отображаются в раскрывающемся списке автозаполнения, но вы все равно можете их ввести.
Закрывающая скобка функций не добавляется автоматически. Вы должны сделать это самостоятельно.
Вы должны убедиться, что каждая функция синтаксически верна.
Понимание функции вставки
Вы можете найти кнопку Вставить функцию, помеченную как fx , как в окне Power Pivot, так и в окне Excel.
-
Кнопка «Вставить функцию» в окне «Power Pivot» находится слева от строки формул.
-
Кнопка «Вставить функцию» в окне Excel находится в диалоговом окне «Вычисляемое поле» справа от формулы.
Кнопка «Вставить функцию» в окне «Power Pivot» находится слева от строки формул.
Кнопка «Вставить функцию» в окне Excel находится в диалоговом окне «Вычисляемое поле» справа от формулы.
При нажатии на кнопку « fx» появляется диалоговое окно «Вставить функцию». Диалоговое окно «Вставить функцию» – это самый простой способ найти функцию DAX, которая соответствует вашей формуле DAX.
Диалоговое окно «Вставка функции» помогает выбрать функции по категориям и предоставляет краткое описание каждой функции.
Использование функции вставки в формуле DAX
Предположим, вы хотите создать следующее вычисляемое поле –
Medal Count: = COUNTA (]Medal])
Вы можете использовать диалоговое окно «Вставить функцию», выполнив следующие действия:
- Нажмите на область расчета таблицы результатов.
- Введите следующее в строке формул –
Medal Count: =
- Нажмите кнопку «Вставить функцию» ( fx ).
Откроется диалоговое окно «Вставить функцию».
-
Выберите «Статистика» в поле «Выбрать категорию», как показано на следующем снимке экрана.
-
Выберите COUNTA в поле Select a function, как показано на следующем снимке экрана.
Выберите «Статистика» в поле «Выбрать категорию», как показано на следующем снимке экрана.
Выберите COUNTA в поле Select a function, как показано на следующем снимке экрана.
Как вы можете видеть, отображается выбранный синтаксис функции DAX и описание функции. Это позволяет вам убедиться, что это та функция, которую вы хотите вставить.
-
Нажмите ОК. Medal Count: = COUNTA (появляется в строке формул, а также появляется всплывающая подсказка, отображающая синтаксис функции.
-
Тип [. Это означает, что вы собираетесь ввести имя столбца. Имена всех столбцов и вычисляемых полей в текущей таблице будут отображены в раскрывающемся списке. Вы можете использовать IntelliSense для завершения формулы.
-
Тип M. Отображаемые имена в раскрывающемся списке будут ограничены именами, начинающимися с буквы «M».
-
Нажмите Медаль.
Нажмите ОК. Medal Count: = COUNTA (появляется в строке формул, а также появляется всплывающая подсказка, отображающая синтаксис функции.
Тип [. Это означает, что вы собираетесь ввести имя столбца. Имена всех столбцов и вычисляемых полей в текущей таблице будут отображены в раскрывающемся списке. Вы можете использовать IntelliSense для завершения формулы.
Тип M. Отображаемые имена в раскрывающемся списке будут ограничены именами, начинающимися с буквы «M».
Нажмите Медаль.
-
Дважды щелкните Медаль. Число медалей: = COUNTA ([Медаль] будет отображаться на панели формул. Закройте скобки.
-
Нажмите Ввод. Вы сделали. Вы можете использовать ту же процедуру, чтобы создать вычисляемый столбец также. Вы также можете выполнить те же действия, чтобы вставить функцию в диалоговом окне «Вычисляемое поле» в окне Excel, используя функцию «Вставить функцию».
-
Нажмите кнопку «Вставить функцию» ( fx ) справа от формулы.
Дважды щелкните Медаль. Число медалей: = COUNTA ([Медаль] будет отображаться на панели формул. Закройте скобки.
Нажмите Ввод. Вы сделали. Вы можете использовать ту же процедуру, чтобы создать вычисляемый столбец также. Вы также можете выполнить те же действия, чтобы вставить функцию в диалоговом окне «Вычисляемое поле» в окне Excel, используя функцию «Вставить функцию».
Нажмите кнопку «Вставить функцию» ( fx ) справа от формулы.
Откроется диалоговое окно «Вставить функцию». Остальные шаги такие же, как указано выше.
Использование нескольких функций в формуле DAX
Формулы DAX могут содержать до 64 вложенных функций. Но вряд ли формула DAX содержит так много вложенных функций.
Если формула DAX имеет много вложенных функций, она имеет следующие недостатки:
- Формула будет очень сложно создать.
- Если в формуле есть ошибки, отладку будет очень сложно.
- Оценка формулы не будет очень быстрой.
В таких случаях вы можете разбить формулу на более мелкие управляемые формулы и постепенно построить большую формулу.
Создание формулы DAX с использованием стандартных агрегатов
Когда вы выполняете анализ данных, вы будете выполнять расчеты на агрегированных данных. Существует несколько функций агрегирования DAX, таких как SUM, COUNT, MIN, MAX, DISTINCTCOUNT и т. Д., Которые можно использовать в формулах DAX.
Вы можете автоматически создавать формулы, используя стандартные агрегации, используя функцию AutoSum в окне Power Pivot.
- Перейдите на вкладку «Результаты» в окне «Power Pivot». Таблица результатов будет отображаться.
- Нажмите на столбец медали. Весь столбец – медаль будет выбран.
- Перейдите на вкладку «Главная» на ленте.
- Нажмите стрелку вниз рядом с AutoSum в группе Расчеты.
- Нажмите COUNT в раскрывающемся списке.
Как вы можете заметить, вычисленное поле Count of Medal появляется в области вычисления под колонкой – Medal. Формула DAX также появляется в строке формул –
Count of Medal: = COUNTA([Medal])
Функция AutoSum сделала всю работу за вас – создала вычисляемое поле для агрегирования данных. Кроме того, AutoSum выбрал соответствующий вариант функции DAX COUNT, т.е. COUNTA (DAX имеет функции COUNT, COUNTA, COUNTAX).
Предупреждение: чтобы использовать функцию автосуммы, нужно нажать стрелку вниз рядом с автосумом на ленте. Если вы нажмете на саму AutoSum, вы получите –
Sum of Medal: = SUM([Medal])
И ошибка помечается, поскольку Медаль не является столбцом числовых данных, и текст в столбце не может быть преобразован в числа.
Вы можете обратиться к главе – Справочник по ошибкам DAX для получения подробной информации об ошибках DAX.
Формулы DAX и реляционная модель
Как вам известно, в модели данных Power Pivot вы можете работать с несколькими таблицами данных и соединять таблицы, определяя отношения. Это позволит вам создавать интересные формулы DAX, которые используют корреляции столбцов среди связанных таблиц для расчетов.
Когда вы создаете связь между двумя таблицами, вы должны убедиться, что два столбца, используемые в качестве ключей, имеют значения, которые соответствуют, по крайней мере, для большинства строк, если не полностью. В модели данных Power Pivot можно иметь несовпадающие значения в ключевом столбце и по-прежнему создавать отношения, поскольку Power Pivot не обеспечивает ссылочную целостность (подробности см. В следующем разделе). Однако наличие пустых или несоответствующих значений в ключевом столбце может повлиять на результаты формул DAX и появление сводных таблиц.
Ссылочная целостность
Установление ссылочной целостности включает создание набора правил для сохранения определенных отношений между таблицами при вводе или удалении данных. Если вы не гарантируете это исключительно, так как Power Pivot не применяет его, вы можете не получить правильные результаты с формулами DAX, созданными до внесения изменений в данные.
Если вы обеспечите ссылочную целостность, вы можете предотвратить следующие ловушки –
-
Добавление строк в связанную таблицу, когда в основной таблице нет связанной строки (т. Е. С совпадающими значениями в ключевых столбцах).
-
Изменение данных в первичной таблице, что приведет к появлению потерянных строк в связанной таблице (т. Е. Строк со значением данных в ключевом столбце, у которого нет совпадающего значения в ключевом столбце первичной таблицы).
-
Удаление строк из первичной таблицы при наличии совпадающих значений данных в строках связанной таблицы.
Добавление строк в связанную таблицу, когда в основной таблице нет связанной строки (т. Е. С совпадающими значениями в ключевых столбцах).
Изменение данных в первичной таблице, что приведет к появлению потерянных строк в связанной таблице (т. Е. Строк со значением данных в ключевом столбце, у которого нет совпадающего значения в ключевом столбце первичной таблицы).
Удаление строк из первичной таблицы при наличии совпадающих значений данных в строках связанной таблицы.
Обновление результатов формул DAX
Формулы DAX используются в расчетах с большими данными, включая данные из внешних источников данных. Время от времени данные могут подвергаться изменениям, так как расчеты DAX предназначены и для оперативных данных.
Результаты формул DAX необходимо обновлять в двух случаях –
-
Обновление данных – когда данные обновляются.
-
Пересчет – когда есть изменения в формуле DAX.
Обновление данных – когда данные обновляются.
Пересчет – когда есть изменения в формуле DAX.
Понимание обновления данных и пересчета
Обновление и пересчет данных – это две отдельные, но связанные операции.
-
Обновление данных – это процесс обновления данных в модели данных вашей рабочей книги с получением актуальных данных из внешних источников данных.
-
Пересчет – это процесс обновления всех столбцов, таблиц и сводных таблиц в рабочей книге, которые содержат формулы DAX, чтобы отразить изменения в базовых данных, которые являются результатом изменений в самих формулах DAX.
Обновление данных – это процесс обновления данных в модели данных вашей рабочей книги с получением актуальных данных из внешних источников данных.
Пересчет – это процесс обновления всех столбцов, таблиц и сводных таблиц в рабочей книге, которые содержат формулы DAX, чтобы отразить изменения в базовых данных, которые являются результатом изменений в самих формулах DAX.
Не следует сохранять или публиковать книгу до тех пор, пока формулы DAX в ней не будут пересчитаны.
Различные способы обновления данных в модели данных
Power Pivot не обнаруживает автоматически изменения во внешних источниках данных.
-
Вы можете обновить данные вручную из окна Power Pivot с указанными интервалами.
-
Вы можете запланировать автоматическое обновление данных из внешних источников, если вы опубликовали книгу на сайте SharePoint.
Вы можете обновить данные вручную из окна Power Pivot с указанными интервалами.
Вы можете запланировать автоматическое обновление данных из внешних источников, если вы опубликовали книгу на сайте SharePoint.
Подробнее об этом см. Главу « Обновление данных в модели данных» .
Пересчет формул DAX
Пересчет формулы DAX является важной задачей, потому что во время пересчета проверяются зависимости столбцов, и вы будете уведомлены, если столбец изменился, если данные недействительны или если в формуле DAX, которая использовалась, работала ошибка.
Пересчет может повлиять на производительность следующими способами –
-
Для вычисляемого столбца результат формулы DAX должен всегда пересчитываться для всего столбца при каждом изменении формулы DAX.
-
Для вычисляемого поля результат формулы DAX не вычисляется, пока вычисленное поле не будет помещено в контекст сводной таблицы или сводной диаграммы. Формула DAX будет пересчитана при изменении заголовка строки или столбца, который влияет на фильтры в данных, или при обновлении сводной таблицы вручную.
Для вычисляемого столбца результат формулы DAX должен всегда пересчитываться для всего столбца при каждом изменении формулы DAX.
Для вычисляемого поля результат формулы DAX не вычисляется, пока вычисленное поле не будет помещено в контекст сводной таблицы или сводной диаграммы. Формула DAX будет пересчитана при изменении заголовка строки или столбца, который влияет на фильтры в данных, или при обновлении сводной таблицы вручную.
В DAX пересчет формул может выполняться автоматически или вручную.
Чтобы узнать больше о пересчете, обратитесь к главе – Пересчет формул DAX .
Excel DAX – обновление данных в модели данных
DAX используется для расчетов данных в модели данных в Excel Power Pivot. DAX позволяет эффективно выполнять моделирование данных и отчетность. Однако для этого необходимо время от времени обновлять данные в модели данных, чтобы они отражали текущие данные.
Вы можете импортировать данные из внешнего источника данных в модель данных своей рабочей книги, установив соединение для передачи данных. Вы можете обновить данные из источника, когда вы выберете. Этот вариант удобен, если вы получаете данные из реляционных баз данных, которые содержат информацию о продажах в реальном времени или каналы данных, которые обновляются несколько раз в день.
Различные способы обновления данных в модели данных
Вы можете обновить данные в модели данных следующими способами:
- Время от времени обновляя данные в модели данных.
- Внесение изменений в источники данных, такие как свойства соединения.
- Обновление данных в модели данных после изменения исходных данных.
- Фильтрация данных для выборочной загрузки строк из таблицы в источнике данных.
Обновление данных в модели данных
Помимо получения обновленных данных из существующего источника, вам потребуется обновлять данные в своей рабочей книге всякий раз, когда вы вносите изменения в схему исходных данных. Эти изменения могут включать добавление столбцов или таблиц или изменение импортируемых строк.
Обратите внимание, что добавление данных, изменение данных или редактирование фильтров всегда вызывает пересчет формул DAX, которые зависят от этого источника данных. Подробнее см. Главу «Пересчет формул DAX».
У вас есть два типа обновления данных в модели данных –
Обновить вручную
Если вы выберете опцию ручного обновления, вы можете в любой момент обновить данные в модели данных вручную. Вы можете обновить все данные (по умолчанию) или вручную выбрать таблицы и столбцы для обновления для отдельных источников данных.
Автоматическое или запланированное обновление
Если вы опубликовали свою книгу в галерее PowerPivot или на сайте SharePoint, который поддерживает PowerPivot, вы или администратор SharePoint можете создать расписание для автоматического обновления данных в книге. В таком случае вы можете запланировать автоматическое обновление данных на сервере.
Обновление существующего источника данных вручную
Вы можете вручную обновить данные в любое время, если вам нужно обновить данные из существующего источника данных или получить последние данные для разработки новых формул DAX. Вы можете обновить одну таблицу, все таблицы, которые используют одно и то же подключение к данным, или все таблицы в модели данных.
Если вы импортировали данные из реляционного источника данных, такого как SQL Server и Oracle, вы можете обновить все связанные таблицы за одну операцию. Операция загрузки новых или обновленных данных в модель данных часто вызывает пересчет формул DAX, для выполнения которых может потребоваться некоторое время. Следовательно, вы должны знать о потенциальном воздействии, прежде чем менять источники данных или обновлять данные, полученные из источника данных.
Чтобы обновить данные для одной таблицы или всех таблиц в модели данных, выполните следующие действия:
- Перейдите на вкладку «Главная» на ленте в окне Power Pivot.
- Нажмите Обновить.
- Нажмите Обновить в раскрывающемся списке, чтобы обновить выбранную таблицу.
- Нажмите Обновить все в раскрывающемся списке, чтобы обновить все таблицы.
Чтобы обновить данные для всех таблиц, которые используют одно и то же соединение в модели данных, выполните следующие действия:
- Перейдите на вкладку «Главная» в окне «Лента в Power Pivot».
- Нажмите Существующие подключения в группе Получить внешние данные.
Откроется диалоговое окно существующих подключений.
- Выберите соединение.
- Нажмите кнопку Обновить.
Появляется диалоговое окно «Обновление данных», и информация о ходе обновления данных отображается, когда механизм PowerPivot перезагружает данные из выбранной таблицы или из всех таблиц из источника данных.
Есть три возможных результата –
-
Успех – отчеты о количестве строк, импортированных в каждую таблицу.
-
Ошибка – ошибка может возникнуть, если база данных находится в автономном режиме, у вас больше нет разрешений. Таблица или столбец удаляются или переименовываются в источнике.
-
Отменено – это означает, что Excel не выдавал запрос на обновление, возможно, потому что обновление отключено в соединении.
Успех – отчеты о количестве строк, импортированных в каждую таблицу.
Ошибка – ошибка может возникнуть, если база данных находится в автономном режиме, у вас больше нет разрешений. Таблица или столбец удаляются или переименовываются в источнике.
Отменено – это означает, что Excel не выдавал запрос на обновление, возможно, потому что обновление отключено в соединении.
Нажмите кнопку Закрыть.
Изменение источника данных
Чтобы изменить данные в вашей модели данных, вы можете отредактировать информацию о соединении или обновить определение таблиц и столбцов, используемых в вашей модели данных, в окне Power Pivot.
Вы можете внести следующие изменения в существующие источники данных –
связи
- Отредактируйте имя базы данных или имя сервера.
- Измените имя исходного текстового файла, электронной таблицы или канала данных.
- Изменить местоположение источника данных.
- Для реляционных источников данных измените каталог по умолчанию или исходный каталог.
- Измените метод аутентификации или учетные данные, используемые для доступа к данным.
- Редактировать расширенные свойства в источнике данных.
таблицы
- Добавить или удалить фильтр данных.
- Измените критерии фильтра.
- Добавить или удалить таблицы.
- Измените имена таблиц.
- Измените сопоставления между таблицами в источнике данных и таблицами в модели данных.
- Выберите разные столбцы из источника данных.
Колонны
- Измените имена столбцов.
- Добавить новые столбцы.
- Удалить столбцы из модели данных (не влияет на источник данных).
Вы можете редактировать свойства существующего источника данных следующими способами:
-
Вы можете изменить информацию о соединении, включая файл, фид или базу данных, используемую в качестве источника, его свойства или другие параметры соединения, специфичные для поставщика.
-
Вы можете изменить сопоставление таблицы и столбца и удалить ссылки на столбцы, которые больше не используются.
-
Вы можете изменить таблицы, представления или столбцы, полученные из внешнего источника данных.
Вы можете изменить информацию о соединении, включая файл, фид или базу данных, используемую в качестве источника, его свойства или другие параметры соединения, специфичные для поставщика.
Вы можете изменить сопоставление таблицы и столбца и удалить ссылки на столбцы, которые больше не используются.
Вы можете изменить таблицы, представления или столбцы, полученные из внешнего источника данных.
Изменение соединения с существующим источником данных
Вы можете изменить созданное вами соединение с внешним источником данных, изменив внешний источник данных, используемый текущим соединением. Однако процедура, которой необходимо следовать, зависит от типа источника данных.
- Перейдите на вкладку «Главная» на ленте в окне PowerPivot.
- Нажмите Существующие подключения в группе Получить внешние данные.
Откроется диалоговое окно существующих подключений. Выберите соединение, которое вы хотите изменить.
В зависимости от типа источника данных, который вы меняете, поставщик может отличаться. Также доступные свойства могут потребовать изменения. Рассмотрим простой пример подключения к книге Excel, содержащей данные.
-
Нажмите кнопку Изменить. Откроется диалоговое окно «Редактировать соединение».
-
Нажмите кнопку «Обзор», чтобы найти другую базу данных того же типа (в данном примере – книгу Excel), но с другим именем или местоположением.
-
Нажмите кнопку Открыть.
Нажмите кнопку Изменить. Откроется диалоговое окно «Редактировать соединение».
Нажмите кнопку «Обзор», чтобы найти другую базу данных того же типа (в данном примере – книгу Excel), но с другим именем или местоположением.
Нажмите кнопку Открыть.
Новый файл будет выбран. Появится сообщение о том, что вы изменили информацию о соединении, и вам необходимо сохранить и обновить таблицы для проверки соединения.
-
Нажмите кнопку Сохранить. Вы вернетесь в диалоговое окно «Существующие подключения».
-
Нажмите кнопку Обновить. Появится диалоговое окно «Обновление данных», отображающее ход обновления данных. Статус обновления данных будет отображаться. Подробнее см. В разделе « Обновление существующего источника данных вручную» .
-
Нажмите Закрыть, как только обновление данных будет успешным.
-
Нажмите Закрыть в диалоговом окне «Существующие подключения».
Нажмите кнопку Сохранить. Вы вернетесь в диалоговое окно «Существующие подключения».
Нажмите кнопку Обновить. Появится диалоговое окно «Обновление данных», отображающее ход обновления данных. Статус обновления данных будет отображаться. Подробнее см. В разделе « Обновление существующего источника данных вручную» .
Нажмите Закрыть, как только обновление данных будет успешным.
Нажмите Закрыть в диалоговом окне «Существующие подключения».
Редактирование таблиц и сопоставлений столбцов (привязок)
Чтобы изменить сопоставления столбцов при изменении источника данных, выполните следующие действия:
-
Выберите вкладку, содержащую таблицу, которую вы хотите изменить, в окне Power Pivot.
-
Перейдите на вкладку «Дизайн» на ленте.
-
Нажмите Свойства таблицы.
Выберите вкладку, содержащую таблицу, которую вы хотите изменить, в окне Power Pivot.
Перейдите на вкладку «Дизайн» на ленте.
Нажмите Свойства таблицы.
Откроется диалоговое окно «Редактировать свойства таблицы».
Вы можете наблюдать следующее –
-
Имя выбранной таблицы в модели данных отображается в поле «Имя таблицы».
-
Имя соответствующей таблицы во внешнем источнике данных отображается в поле «Имя источника».
-
Существует два варианта имен столбцов: «Исходный» и «Модальный».
-
Если столбцы имеют разные имена в источнике данных и в модели данных, вы можете переключаться между двумя наборами имен столбцов, выбирая эти параметры.
-
Предварительный просмотр выбранной таблицы появится в диалоговом окне.
Имя выбранной таблицы в модели данных отображается в поле «Имя таблицы».
Имя соответствующей таблицы во внешнем источнике данных отображается в поле «Имя источника».
Существует два варианта имен столбцов: «Исходный» и «Модальный».
Если столбцы имеют разные имена в источнике данных и в модели данных, вы можете переключаться между двумя наборами имен столбцов, выбирая эти параметры.
Предварительный просмотр выбранной таблицы появится в диалоговом окне.
Вы можете редактировать следующее –
-
Чтобы изменить таблицу, которая используется в качестве источника данных, выберите другую таблицу, отличную от выбранной, в раскрывающемся списке «Имя источника».
-
При необходимости измените сопоставления столбцов.
-
Чтобы добавить столбец, который присутствует в источнике, но отсутствует в модели данных, установите флажок рядом с именем столбца. Повторите для всех столбцов, которые должны быть добавлены. Фактические данные будут загружены в модель данных при следующем обновлении.
-
Если некоторые столбцы в модели данных больше не доступны в текущем источнике данных, в области уведомлений появится сообщение со списком недопустимых столбцов. Вам не нужно ничего делать.
-
-
Нажмите кнопку Сохранить.
Чтобы изменить таблицу, которая используется в качестве источника данных, выберите другую таблицу, отличную от выбранной, в раскрывающемся списке «Имя источника».
При необходимости измените сопоставления столбцов.
Чтобы добавить столбец, который присутствует в источнике, но отсутствует в модели данных, установите флажок рядом с именем столбца. Повторите для всех столбцов, которые должны быть добавлены. Фактические данные будут загружены в модель данных при следующем обновлении.
Если некоторые столбцы в модели данных больше не доступны в текущем источнике данных, в области уведомлений появится сообщение со списком недопустимых столбцов. Вам не нужно ничего делать.
Нажмите кнопку Сохранить.
При сохранении текущего набора свойств таблицы вы получите сообщение – Пожалуйста, подождите. Затем будет отображено количество найденных строк.
В таблице в модели данных все недопустимые столбцы автоматически удаляются и добавляются новые столбцы.
Изменение имени столбца и типа данных
Вы можете изменить имя столбца в таблице в модели данных следующим образом:
-
Дважды щелкните заголовок столбца. Имя столбца в заголовке будет выделено.
-
Введите имя нового столбца, перезаписав старое имя. Кроме того, вы можете изменить имя столбца в таблице в модели данных следующим образом:
-
Выберите столбец, нажав на его заголовок.
-
Щелкните правой кнопкой мыши столбец.
-
Нажмите Переименовать столбец в раскрывающемся списке.
Дважды щелкните заголовок столбца. Имя столбца в заголовке будет выделено.
Введите имя нового столбца, перезаписав старое имя. Кроме того, вы можете изменить имя столбца в таблице в модели данных следующим образом:
Выберите столбец, нажав на его заголовок.
Щелкните правой кнопкой мыши столбец.
Нажмите Переименовать столбец в раскрывающемся списке.
Имя столбца в заголовке будет выделено. Введите имя нового столбца, перезаписав старое имя.
Как вы узнали, все значения в столбце таблицы в модели данных должны быть одного типа данных.
Чтобы изменить тип данных столбца, выполните следующие действия:
-
Выберите столбец, который вы хотите изменить, щелкнув его заголовок.
-
Перейдите на вкладку «Главная» на ленте.
-
Щелкните элементы управления в группе «Форматирование», чтобы изменить тип и формат данных столбца.
Выберите столбец, который вы хотите изменить, щелкнув его заголовок.
Перейдите на вкладку «Главная» на ленте.
Щелкните элементы управления в группе «Форматирование», чтобы изменить тип и формат данных столбца.
Добавление / изменение фильтра к источнику данных
Вы можете добавить фильтр к источнику данных при импорте данных, чтобы ограничить количество строк в таблице в модели данных. Позже вы можете добавить больше строк или уменьшить количество строк в таблице в модели данных, изменив ранее определенный фильтр.
Добавление фильтра к источнику данных во время импорта
Чтобы добавить новый фильтр в источник данных во время импорта данных, выполните следующие действия:
- Перейдите на вкладку «Главная» в окне «Лента в Power Pivot».
- Щелкните один из источников данных в группе «Получить внешние данные».
Откроется диалоговое окно мастера импорта таблиц.
- Перейдите к шагу – выберите таблицы и представления.
- Выберите таблицу и нажмите «Просмотр и фильтр».
Появится диалоговое окно «Просмотр выбранной таблицы».
- Нажмите на столбец, к которому вы хотите применить фильтр.
- Нажмите стрелку вниз справа от заголовка столбца.
Чтобы добавить фильтр, выполните одно из следующих действий:
-
В списке значений столбцов выберите или очистите одно или несколько значений для фильтрации, а затем нажмите кнопку «ОК».
Однако, если количество значений очень велико, отдельные элементы могут не отображаться в списке. Вместо этого вы увидите сообщение – «Слишком много предметов для показа».
-
Нажмите Числовые фильтры или Текстовые фильтры (в зависимости от типа данных столбца).
-
Затем щелкните одну из команд оператора сравнения (например, «Равно») или нажмите «Пользовательский фильтр». В диалоговом окне «Пользовательский фильтр» создайте фильтр и нажмите «ОК».
-
В списке значений столбцов выберите или очистите одно или несколько значений для фильтрации, а затем нажмите кнопку «ОК».
Однако, если количество значений очень велико, отдельные элементы могут не отображаться в списке. Вместо этого вы увидите сообщение – «Слишком много предметов для показа».
Нажмите Числовые фильтры или Текстовые фильтры (в зависимости от типа данных столбца).
Затем щелкните одну из команд оператора сравнения (например, «Равно») или нажмите «Пользовательский фильтр». В диалоговом окне «Пользовательский фильтр» создайте фильтр и нажмите «ОК».
Примечание. Если вы допустили ошибку на каком-либо этапе, нажмите кнопку «Очистить фильтры строк» и начните все сначала.
- Нажмите ОК. Вы вернетесь на страницу выбора таблиц и представлений мастера импорта таблиц.
Как вы можете заметить, в столбце «Сведения о фильтре» появляется ссылка «Примененные фильтры» для столбца, для которого вы определили фильтр.
Вы можете щелкнуть ссылку для просмотра выражения фильтра, созданного мастером. Но синтаксис для каждого выражения фильтра зависит от поставщика, и вы не можете его редактировать.
- Нажмите Готово, чтобы импортировать данные с примененными фильтрами.
- Закройте Мастер импорта таблиц.
Изменение фильтра на существующий источник данных
После того, как вы импортировали данные, вам, возможно, придется обновлять их время от времени, либо добавляя больше строк, либо ограничивая существующие строки в таблице. В таком случае вы можете изменить существующие фильтры в таблице или добавить новые фильтры.
-
Перейдите на вкладку «Главная» в окне «Лента в Power Pivot».
-
Нажмите Существующие подключения в группе Получить внешние данные. Откроется диалоговое окно существующих подключений.
-
Нажмите на соединение, которое содержит таблицу, для которой вы должны изменить фильтр.
-
Нажмите кнопку Открыть.
Перейдите на вкладку «Главная» в окне «Лента в Power Pivot».
Нажмите Существующие подключения в группе Получить внешние данные. Откроется диалоговое окно существующих подключений.
Нажмите на соединение, которое содержит таблицу, для которой вы должны изменить фильтр.
Нажмите кнопку Открыть.
Вы попадете в диалоговое окно мастера импорта таблиц. Повторите шаги предыдущего раздела, чтобы отфильтровать столбцы.
Excel DAX – пересчет формул DAX
Пересчет формулы DAX необходим для отражения изменений в данных и изменений в самой формуле. Однако пересчет формулы DAX влечет за собой снижение производительности.
Даже тогда, чтобы получить точные результаты, пересчет необходим. Во время пересчета проверяются зависимости столбцов, и вы будете уведомлены, если столбец изменился, если данные недействительны или если в формуле DAX, которая использовалась, возникла ошибка.
Типы пересчета
У вас есть два варианта пересчета формул DAX –
- Режим автоматического пересчета (по умолчанию)
- Режим ручного пересчета
По умолчанию Power Pivot автоматически пересчитывает при необходимости, оптимизируя время, необходимое для обработки. Однако вы можете обновить вычисления вручную, если вы работаете со сложными формулами или с очень большими наборами данных и хотите контролировать время обновления.
Как автоматический, так и ручной режим пересчета формул DAX имеют свои преимущества. Тем не менее, рекомендуется использовать режим автоматического пересчета. Таким образом вы можете синхронизировать данные Power Pivot и предотвратить проблемы, вызванные удалением данных, изменениями в именах или типах данных или отсутствующими зависимостями.
Автоматический пересчет формул DAX
Если вы выберете режим перерасчета формул DAX по умолчанию, то есть автоматический пересчет, любые изменения в данных, которые приведут к изменению результата любой формулы DAX, приведут к пересчету всего столбца, который содержит формулу DAX.
Следующие изменения всегда требуют пересчета формул DAX –
-
Значения из внешнего источника данных были обновлены.
-
Сама формула DAX изменена.
-
Имена таблиц или столбцов, на которые есть ссылки в формуле DAX, были изменены.
-
Отношения между таблицами были добавлены, изменены или удалены.
-
Добавлены новые вычисляемые поля или вычисляемые столбцы.
-
В рабочую книгу были внесены изменения в другие формулы DAX, поэтому необходимо пересчитать столбцы или вычисления, которые зависят от этих формул DAX.
-
Строки были вставлены или удалены в таблице.
-
Вы применили фильтр, который требует выполнения запроса для обновления набора данных. Фильтр мог быть применен либо в формуле DAX, либо как часть сводной таблицы или сводной диаграммы.
Значения из внешнего источника данных были обновлены.
Сама формула DAX изменена.
Имена таблиц или столбцов, на которые есть ссылки в формуле DAX, были изменены.
Отношения между таблицами были добавлены, изменены или удалены.
Добавлены новые вычисляемые поля или вычисляемые столбцы.
В рабочую книгу были внесены изменения в другие формулы DAX, поэтому необходимо пересчитать столбцы или вычисления, которые зависят от этих формул DAX.
Строки были вставлены или удалены в таблице.
Вы применили фильтр, который требует выполнения запроса для обновления набора данных. Фильтр мог быть применен либо в формуле DAX, либо как часть сводной таблицы или сводной диаграммы.
Когда использовать режим ручного пересчета?
Вы можете использовать режим ручного пересчета, пока вы не будете готовы со всеми необходимыми формулами DAX в своей книге. Таким образом, вы можете избежать затрат на вычисление результатов формулы на книге, которая все еще находится в состоянии черновика.
Вы можете использовать ручной пересчет формул DAX в следующих условиях:
-
Вы разрабатываете формулу DAX с помощью шаблона и хотите изменить имена столбцов и таблиц, используемых в формуле DAX, перед ее проверкой.
-
Вы знаете, что некоторые данные в книге изменились, но вы работаете с другим столбцом, который не изменился, поэтому вы хотите отложить пересчет.
-
Вы работаете с рабочей книгой, которая имеет много зависимостей и хотите отложить пересчет, пока не убедитесь, что все необходимые изменения были внесены.
Вы разрабатываете формулу DAX с помощью шаблона и хотите изменить имена столбцов и таблиц, используемых в формуле DAX, перед ее проверкой.
Вы знаете, что некоторые данные в книге изменились, но вы работаете с другим столбцом, который не изменился, поэтому вы хотите отложить пересчет.
Вы работаете с рабочей книгой, которая имеет много зависимостей и хотите отложить пересчет, пока не убедитесь, что все необходимые изменения были внесены.
Но вы должны знать, что, пока рабочая книга настроена на режим ручного пересчета, никакая проверка или проверка формул не выполняется. Это приведет к следующему –
-
Любые новые формулы, добавленные в рабочую книгу, будут помечены как содержащие ошибку.
-
Результаты не будут отображаться в новых вычисляемых столбцах.
Любые новые формулы, добавленные в рабочую книгу, будут помечены как содержащие ошибку.
Результаты не будут отображаться в новых вычисляемых столбцах.
Настройка рабочей книги для ручного пересчета
Как вы узнали, автоматический пересчет является режимом по умолчанию в модели данных любой книги. Чтобы настроить рабочую книгу для ручного пересчета, выполните следующие действия:
- Перейдите на вкладку «Дизайн» на ленте в окне Power Pivot.
- Нажмите Параметры расчета в группе Расчеты.
- Выберите ручной режим расчета в раскрывающемся списке.
Пересчет формул DAX вручную
Чтобы пересчитать формулы DAX вручную, выполните следующие действия:
- Перейдите на вкладку «Дизайн» на ленте в окне Power Pivot.
- Щелкните поле «Параметры расчета» в группе «Расчеты».
- Щелкните поле «Рассчитать сейчас» в раскрывающемся списке.
Устранение неполадок пересчета формулы DAX
Всякий раз, когда происходят изменения в модели данных вашей рабочей книги, Power Pivot выполняет анализ существующих данных, чтобы определить, требуется ли пересчет, и выполняет обновление наиболее эффективным способом.
Power Pivot выполняет следующие действия при пересчете формул DAX:
- зависимости
- Последовательность пересчета для зависимых столбцов
- операции
- Пересчет энергозависимых функций
зависимости
Если столбец зависит от другого столбца, и содержимое этого другого столбца изменяется каким-либо образом, возможно, потребуется пересчитать все связанные столбцы.
Power Pivot всегда выполняет полный пересчет для таблицы, потому что полный пересчет более эффективен, чем проверка измененных значений. Изменения, которые вызывают пересчет, могут включать удаление столбца, изменение числового типа данных столбца или добавление нового столбца. Эти изменения считаются основными изменениями. Однако, казалось бы, тривиальные изменения, такие как изменение имени столбца, также могут вызвать пересчет. Это связано с тем, что имена столбцов используются в качестве идентификаторов в формулах DAX.
В некоторых случаях Power Pivot может определить, что столбцы могут быть исключены из пересчета.
Последовательность пересчета для зависимых столбцов
Зависимости рассчитываются до любого пересчета. Если есть несколько столбцов, которые зависят друг от друга, Power Pivot следует последовательности зависимостей. Это гарантирует, что столбцы обрабатываются в правильном порядке с максимальной скоростью.
операции
Операции, которые пересчитывают или обновляют данные, выполняются как транзакция. Это означает, что если какая-либо часть операции обновления завершится неудачно, остальные операции будут откатаны. Это делается для того, чтобы данные не оставались в частично обработанном состоянии. Однако вы не можете управлять транзакциями, как в реляционной базе данных или создавать контрольные точки.
Пересчет летучих функций
Функции DAX, такие как NOW, RAND или TODAY, не имеют фиксированных значений и называются энергозависимыми функциями. Если такие функции DAX используются в вычисляемом столбце, выполнение запроса или фильтрации обычно не приводит к их повторной оценке, чтобы избежать проблем с производительностью.
Результаты для этих функций DAX пересчитываются только при пересчете всего столбца. Эти ситуации включают обновление из внешнего источника данных или ручное редактирование данных, которое вызывает переоценку формул DAX, содержащих эти функции.
Однако такие функции всегда будут пересчитываться, если функции используются в определении вычисляемого поля.
Excel DAX – ошибки формулы
Вы можете получить ошибки, когда пишете формулы DAX с неправильным синтаксисом. Вычисляемые поля и вычисляемые столбцы могут содержать функции DAX, которые требуют определенного типа аргументов. Аргументами функций DAX могут быть таблицы, столбцы или другие функции DAX (вложенные функции DAX). Поскольку функции DAX могут возвращать таблицы и столбцы, необходимо следить за тем, чтобы аргументы правильного типа передавались в функции DAX.
Ошибки формулы DAX могут быть синтаксическими или семантическими ошибками. Ошибки могут возникать либо во время разработки, либо во время выполнения.
В этой главе вы узнаете о некоторых распространенных ошибках DAX, их причинах и о том, как их исправить.
Ошибка DAX: расчет прерван
Следующая ошибка может возникнуть при попытке создать (во время разработки) или использовать (во время выполнения) вычисляемое поле с функцией анализа времени DAX. В каждом случае несмежный диапазон дат передается функции анализа времени.
«Ошибка DAX: ВЫЧИСЛЕНО ВЫЧИСЛЕНИЕ: MdxScript (экземпляр) (00, 0) Функция« DATEADD »работает только с непрерывным выбором даты».
Причина во время выполнения
Эта ошибка может отображаться, когда вычисляемое поле с функцией анализа времени DAX помещается в область VALUES сводной таблицы и поля даты, такие как месяц или квартал, выбираются в качестве срезов или фильтров перед выбором года. Например, если у вас есть данные за три года – 2014, 2015 и 2016, и вы пытаетесь использовать только месяц Март без выбора поля Год, тогда эти значения не являются непрерывными значениями данных, и вы получите ошибку.
Как исправить ошибку во время выполнения?
В приведенном выше примере
-
Сначала добавьте год в качестве среза или фильтра и выберите год.
-
Затем добавьте месяц или квартал в качестве среза или фильтра.
-
Затем выберите один или несколько месяцев или кварталов для нарезки или фильтрации для выбранного года.
Сначала добавьте год в качестве среза или фильтра и выберите год.
Затем добавьте месяц или квартал в качестве среза или фильтра.
Затем выберите один или несколько месяцев или кварталов для нарезки или фильтрации для выбранного года.
Причина во время разработки
Для функций анализа времени DAX требуется столбец даты, указанный для аргумента даты. Столбец даты должен иметь непрерывный диапазон дат. Эта ошибка может быть возвращена, если в одной или нескольких строках столбца даты есть значение даты, которое не смежно со значениями данных в предыдущей и последующих строках.
Если вы импортировали свою таблицу, содержащую даты, из источника данных, помните, что во многих организациях запускаются специальные процессы, которые сканируют таблицы в базах данных на наличие недопустимых значений и заменяют их определенным значением. То есть, если найдена недопустимая дата, ей присваивается конкретное значение даты, которое может не совпадать с другими значениями данных в столбце.
Как исправить эту ошибку во время разработки?
Чтобы исправить ошибку во время разработки, сделайте следующее:
-
Если ваша таблица дат импортирована из источника данных, используйте «Обновить в окне Power Pivot», чтобы повторно импортировать любые изменения, найденные в источнике.
-
Проверьте значения в столбце даты, чтобы убедиться, что они находятся в непрерывном порядке. Если будет обнаружено, что какое-либо значение отсутствует, оно должно быть исправлено в источнике, а таблица дат должна быть обновлена.
-
Создайте отдельную таблицу дат и столбец дат в вашей модели данных. Укажите новый столбец даты в качестве аргумента даты в формуле, вызывающей ошибку. Таблицы дат легко создавать и добавлять в модель данных.
Если ваша таблица дат импортирована из источника данных, используйте «Обновить в окне Power Pivot», чтобы повторно импортировать любые изменения, найденные в источнике.
Проверьте значения в столбце даты, чтобы убедиться, что они находятся в непрерывном порядке. Если будет обнаружено, что какое-либо значение отсутствует, оно должно быть исправлено в источнике, а таблица дат должна быть обновлена.
Создайте отдельную таблицу дат и столбец дат в вашей модели данных. Укажите новый столбец даты в качестве аргумента даты в формуле, вызывающей ошибку. Таблицы дат легко создавать и добавлять в модель данных.
Семантическая ошибка DAX – пример
Следующая ошибка DAX является семантической ошибкой –
«Функция« CALCULATE »была использована в выражении« истина-ложь », которое используется в качестве выражения фильтра таблицы. Это запрещено ».
причина
Эта ошибка может появиться, когда одно или несколько выражений фильтра не могут использоваться в контексте вычисляемого поля или вычисляемого выражения столбца.
В большинстве случаев эта ошибка вызвана выражением фильтра, заданным в качестве аргумента функции DAX CALCULATE. Для функции CALCULATE требуются фильтры, определенные как логическое выражение или табличное выражение.
Как исправить такие ошибки?
Такие ошибки можно исправить, используя функцию DAX FILTER, чтобы определить фильтры как табличное выражение, которое затем можно использовать в качестве аргумента функции DAX CALCULATE.
Excel DAX – Time Intelligence
DAX обладает важной и мощной функцией, которая называется Time Intelligence . Интеллектуальное время позволяет вам писать формулы DAX, которые ссылаются на периоды времени для использования в сводных таблицах.
DAX имеет 35 функций анализа времени, специально предназначенных для агрегирования и сравнения данных во времени. Однако эти функции DAX имеют некоторые ограничения в отношении данных, которые необходимо понимать, и работайте с осторожностью, чтобы избежать ошибок.
Почему Time Intelligence делает DAX мощным?
Функции контроля времени работают с данными, которые постоянно меняются, в зависимости от контекста, выбранного в визуализациях сводных таблиц и Power View. Как вам известно, большая часть анализа данных включает в себя суммирование данных за периоды времени, сравнение значений данных за периоды времени, понимание тенденций и принятие решений на основе будущих прогнозов.
Например, вы можете суммировать суммы продаж за прошедший месяц по продуктам и сравнивать итоги с другими месяцами финансового года. Это означает, что вы должны использовать даты как способ группировки и агрегирования торговых операций за определенный период времени.
Здесь вы можете наблюдать силу DAX. Вы можете использовать функции анализа времени DAX для определения вычисляемых полей, которые помогут вам анализировать данные с течением времени, не изменяя выбор даты в сводных таблицах. Это облегчает вашу работу. Более того, вы можете создавать сводные таблицы, которые были бы невозможны другим способом.
Требования к функциям DAX Time Intelligence
Функции разведки времени DAX предъявляют определенные требования. Если эти требования не выполняются, вы можете получить ошибки или они могут работать неправильно. Следовательно, вы можете ссылаться на эти требования как на правила или ограничения. Ниже приведены определенные требования / правила / ограничения функций времени DAX –
-
Вам необходимо иметь таблицу дат в вашей модели данных.
-
Таблица дат должна включать столбец, который DAX считает столбцом «Дата». Вы можете назвать столбец так, как хотите, но он должен соответствовать следующим условиям: o Столбец даты должен содержать непрерывный набор дат, который охватывает каждый день в течение периода времени, когда вы анализируете данные.
-
Каждая дата должна существовать один раз и только один раз в столбце даты.
-
Вы не можете пропустить ни одной даты (например, вы не можете пропустить даты выходных).
-
-
Функции анализа времени DAX работают только по стандартному календарю и предполагают, что начало года – 1 января, а конец года – 31 декабря, а месяцы года и дни каждого месяца – календарного года.
Вам необходимо иметь таблицу дат в вашей модели данных.
Таблица дат должна включать столбец, который DAX считает столбцом «Дата». Вы можете назвать столбец так, как хотите, но он должен соответствовать следующим условиям: o Столбец даты должен содержать непрерывный набор дат, который охватывает каждый день в течение периода времени, когда вы анализируете данные.
Каждая дата должна существовать один раз и только один раз в столбце даты.
Вы не можете пропустить ни одной даты (например, вы не можете пропустить даты выходных).
Функции анализа времени DAX работают только по стандартному календарю и предполагают, что начало года – 1 января, а конец года – 31 декабря, а месяцы года и дни каждого месяца – календарного года.
Однако вы можете настроить стандартный календарь на разные финансовые годы. Хорошей практикой является проверка вышеуказанных требований перед использованием любой временной функции.
Для получения дополнительной информации о таблицах дат и их использовании в формулах DAX см. Учебник = Моделирование данных с DAX в этой библиотеке учебников.
Функции DAX Time Intelligence – Категории
Функции DAX Time Intelligence можно разделить на следующие категории:
- Функции DAX, которые возвращают одну дату.
- DAX-функции, которые возвращают таблицу дат.
- Функции DAX, которые оценивают выражения за период времени.
Функции DAX, которые возвращают одну дату
Функции DAX в этой категории возвращают одну дату.
В этой категории 10 функций DAX.
Sr.No. | Функция DAX и возвращаемое значение |
---|---|
1 |
FIRSTDATE (Date_Column) Возвращает первую дату в столбце Date_Column в текущем контексте. |
2 |
LASTDATE (Date_Column) Возвращает последнюю дату в столбце Date_Column в текущем контексте. |
3 |
FIRSTNONBLANK (Date_Column, Expression) Возвращает первую дату, когда выражение имеет непустое значение. |
4 |
LASTNONBLANK (Date_Column, Expression) Возвращает последнюю дату, когда выражение имеет непустое значение. |
5 |
STARTOFMONTH (Date_Column) Возвращает первую дату месяца в текущем контексте. |
6 |
ENDOFMONTH (Date_Column) Возвращает последнюю дату месяца в текущем контексте. |
7 |
STARTOFQUARTER (Date_Column) Возвращает первую дату квартала в текущем контексте. |
8 |
ENDOFQUARTER (Date_Column) Возвращает последнюю дату квартала в текущем контексте. |
9 |
STARTOFYEAR (Date_Column, [YE_Date]) Возвращает первую дату года в текущем контексте. |
10 |
ENDOFYEAR (Date_Column, [YE_Date]) Возвращает последнюю дату года в текущем контексте. |
FIRSTDATE (Date_Column)
Возвращает первую дату в столбце Date_Column в текущем контексте.
LASTDATE (Date_Column)
Возвращает последнюю дату в столбце Date_Column в текущем контексте.
FIRSTNONBLANK (Date_Column, Expression)
Возвращает первую дату, когда выражение имеет непустое значение.
LASTNONBLANK (Date_Column, Expression)
Возвращает последнюю дату, когда выражение имеет непустое значение.
STARTOFMONTH (Date_Column)
Возвращает первую дату месяца в текущем контексте.
ENDOFMONTH (Date_Column)
Возвращает последнюю дату месяца в текущем контексте.
STARTOFQUARTER (Date_Column)
Возвращает первую дату квартала в текущем контексте.
ENDOFQUARTER (Date_Column)
Возвращает последнюю дату квартала в текущем контексте.
STARTOFYEAR (Date_Column, [YE_Date])
Возвращает первую дату года в текущем контексте.
ENDOFYEAR (Date_Column, [YE_Date])
Возвращает последнюю дату года в текущем контексте.
Функции DAX, которые возвращают таблицу дат
Функции DAX в этой категории возвращают таблицу дат. Эти функции будут в основном использоваться в качестве аргумента SetFilter для функции DAX – CALCULATE.
В этой категории 16 функций DAX. Восемь (8) из этих функций DAX – это «предыдущая» и «следующая» функции.
-
Функции «предыдущая» и «следующая» начинаются со столбца даты в текущем контексте и вычисляют предыдущий или следующий день, месяц, квартал или год.
-
«Предыдущие» функции работают в обратном направлении от первой даты в текущем контексте, а «следующие» функции перемещаются вперед от последней даты в текущем контексте.
-
Функции «предыдущая» и «следующая» возвращают итоговые даты в виде таблицы из одного столбца.
Функции «предыдущая» и «следующая» начинаются со столбца даты в текущем контексте и вычисляют предыдущий или следующий день, месяц, квартал или год.
«Предыдущие» функции работают в обратном направлении от первой даты в текущем контексте, а «следующие» функции перемещаются вперед от последней даты в текущем контексте.
Функции «предыдущая» и «следующая» возвращают итоговые даты в виде таблицы из одного столбца.
Sr.No. | Функция DAX и возвращаемое значение |
---|---|
1 |
PREVIOUSDAY (Date_Column) Возвращает таблицу, которая содержит столбец всех дат, представляющих день, предшествующий первой дате в столбце Date_Column в текущем контексте. |
2 |
СЛЕДУЮЩИЙ (Date_Column) Возвращает таблицу, которая содержит столбец всех дат следующего дня, основываясь на первой дате, указанной в столбце Date_Column в текущем контексте. |
3 |
PREVIOUSMONTH (Date_Column) Возвращает таблицу, которая содержит столбец всех дат за предыдущий месяц, основываясь на первой дате в столбце Date_Column в текущем контексте. |
4 |
NEXTMONTH (Date_Column) Возвращает таблицу, которая содержит столбец всех дат следующего месяца на основе первой даты в столбце Date_Column в текущем контексте. |
5 |
PREVIOUSQUARTER (Date_Column) Возвращает таблицу, содержащую столбец всех дат предыдущего квартала, основываясь на первой дате в столбце Date_Column в текущем контексте. |
6 |
NEXTQUARTER (Date_Column) Возвращает таблицу, которая содержит столбец всех дат в следующем квартале, основываясь на первой дате, указанной в столбце Date_Column в текущем контексте. |
7 |
PREVIOUSYEAR (Date_Column, [YE_Date]) Возвращает таблицу, которая содержит столбец всех дат за предыдущий год, учитывая последнюю дату в столбце Date_Column в текущем контексте. |
8 |
NEXTYEAR (Date_Column, [YE_Date]) Возвращает таблицу, которая содержит столбец всех дат в следующем году, основываясь на первой дате в столбце Date_Column в текущем контексте. |
PREVIOUSDAY (Date_Column)
Возвращает таблицу, которая содержит столбец всех дат, представляющих день, предшествующий первой дате в столбце Date_Column в текущем контексте.
СЛЕДУЮЩИЙ (Date_Column)
Возвращает таблицу, которая содержит столбец всех дат следующего дня, основываясь на первой дате, указанной в столбце Date_Column в текущем контексте.
PREVIOUSMONTH (Date_Column)
Возвращает таблицу, которая содержит столбец всех дат за предыдущий месяц, основываясь на первой дате в столбце Date_Column в текущем контексте.
NEXTMONTH (Date_Column)
Возвращает таблицу, которая содержит столбец всех дат следующего месяца на основе первой даты в столбце Date_Column в текущем контексте.
PREVIOUSQUARTER (Date_Column)
Возвращает таблицу, содержащую столбец всех дат предыдущего квартала, основываясь на первой дате в столбце Date_Column в текущем контексте.
NEXTQUARTER (Date_Column)
Возвращает таблицу, которая содержит столбец всех дат в следующем квартале, основываясь на первой дате, указанной в столбце Date_Column в текущем контексте.
PREVIOUSYEAR (Date_Column, [YE_Date])
Возвращает таблицу, которая содержит столбец всех дат за предыдущий год, учитывая последнюю дату в столбце Date_Column в текущем контексте.
NEXTYEAR (Date_Column, [YE_Date])
Возвращает таблицу, которая содержит столбец всех дат в следующем году, основываясь на первой дате в столбце Date_Column в текущем контексте.
Четыре (4) функции DAX вычисляют набор дат в периоде. Эти функции выполняют вычисления, используя последнюю дату в текущем контексте.
Sr.No. | Функция DAX и возвращаемое значение |
---|---|
1 |
DATESMTD (Date_Column) Возвращает таблицу, которая содержит столбец дат за месяц до даты в текущем контексте. |
2 |
DATESQTD (Date_Column) Возвращает таблицу, которая содержит столбец дат за квартал до даты в текущем контексте. |
3 |
DATESYTD (Date_Column, [YE_Date]) Возвращает таблицу, которая содержит столбец дат за год до даты в текущем контексте. |
4 |
SAMEPERIODLASTYEAR (Date_Column) Возвращает таблицу, которая содержит столбец дат, смещенных на год назад от дат в указанном столбце Date_Column в текущем контексте. Примечание. SAMEPERIODLASTYEAR требует, чтобы текущий контекст содержал непрерывный набор дат. Если текущий контекст не является непрерывным набором дат, то SAMEPERIODLASTYEAR вернет ошибку. |
DATESMTD (Date_Column)
Возвращает таблицу, которая содержит столбец дат за месяц до даты в текущем контексте.
DATESQTD (Date_Column)
Возвращает таблицу, которая содержит столбец дат за квартал до даты в текущем контексте.
DATESYTD (Date_Column, [YE_Date])
Возвращает таблицу, которая содержит столбец дат за год до даты в текущем контексте.
SAMEPERIODLASTYEAR (Date_Column)
Возвращает таблицу, которая содержит столбец дат, смещенных на год назад от дат в указанном столбце Date_Column в текущем контексте.
Примечание. SAMEPERIODLASTYEAR требует, чтобы текущий контекст содержал непрерывный набор дат.
Если текущий контекст не является непрерывным набором дат, то SAMEPERIODLASTYEAR вернет ошибку.
-
Четыре (4) функции DAX используются для перехода от набора дат в текущем контексте к новому набору дат.
Эти функции DAX более мощные, чем предыдущие.
-
Функции DAX – DATEADD, DATESINPERIOD и PARALLELPERIOD смещают некоторое количество временных интервалов из текущего контекста. Интервал может быть днем, месяцем, кварталом или годом, представленным ключевыми словами – ДЕНЬ, МЕСЯЦ, КВАРТАЛ и ГОД соответственно.
Например:
-
-
Сдвиг назад на 2 дня.
-
Продвинуться на 5 месяцев.
-
Двигайтесь вперед на один месяц с сегодняшнего дня.
-
Вернуться в тот же квартал в прошлом году.
-
Функция DAX – DATESBETWEEN вычисляет набор дат между указанной датой начала и датой окончания.
Если аргумент функции – число интервалов (целочисленное значение) положителен, сдвиг вперед, а если он отрицателен, сдвиг назад.
-
Четыре (4) функции DAX используются для перехода от набора дат в текущем контексте к новому набору дат.
Эти функции DAX более мощные, чем предыдущие.
Функции DAX – DATEADD, DATESINPERIOD и PARALLELPERIOD смещают некоторое количество временных интервалов из текущего контекста. Интервал может быть днем, месяцем, кварталом или годом, представленным ключевыми словами – ДЕНЬ, МЕСЯЦ, КВАРТАЛ и ГОД соответственно.
Например:
Сдвиг назад на 2 дня.
Продвинуться на 5 месяцев.
Двигайтесь вперед на один месяц с сегодняшнего дня.
Вернуться в тот же квартал в прошлом году.
Если аргумент функции – число интервалов (целочисленное значение) положителен, сдвиг вперед, а если он отрицателен, сдвиг назад.
Функция DAX – DATESBETWEEN вычисляет набор дат между указанной датой начала и датой окончания.
Sr.No. | Функция DAX и возвращаемое значение |
---|---|
1 |
DATEADD (Date_Column, Number_of_Intervals, Interval) Возвращает таблицу, содержащую столбец дат, сдвинутый во времени вперед или назад на указанное количество интервалов от дат в текущем контексте. |
2 |
DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval) Возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается в течение указанного number_of_intervals. |
3 |
PARALLELPERIOD (Date_Column, Number_of_Intervals, Interval) Возвращает таблицу, которая содержит столбец дат, представляющий период, параллельный датам в указанном столбце Date_Column в текущем контексте, с датами, сдвинутыми на несколько интервалов вперед или назад во времени. |
4 |
DATESBETWEEN (Date_Column, Start_Date, End_Date) Возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается до end_date. |
DATEADD (Date_Column, Number_of_Intervals, Interval)
Возвращает таблицу, содержащую столбец дат, сдвинутый во времени вперед или назад на указанное количество интервалов от дат в текущем контексте.
DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval)
Возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается в течение указанного number_of_intervals.
PARALLELPERIOD (Date_Column, Number_of_Intervals, Interval)
Возвращает таблицу, которая содержит столбец дат, представляющий период, параллельный датам в указанном столбце Date_Column в текущем контексте, с датами, сдвинутыми на несколько интервалов вперед или назад во времени.
DATESBETWEEN (Date_Column, Start_Date, End_Date)
Возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается до end_date.
Функции DAX, которые оценивают выражения за период времени
Функции DAX в этой категории оценивают выражение в течение определенного периода времени.
В этой категории девять (9) функций DAX –
-
Три (3) функции DAX в этой категории могут использоваться для оценки любого данного выражения в течение определенного периода времени.
Три (3) функции DAX в этой категории могут использоваться для оценки любого данного выражения в течение определенного периода времени.
Sr.No. | Функция DAX и возвращаемое значение |
---|---|
1 |
TOTALMTD (выражение, дата_колонка, [SetFilter]) Оценивает значение выражения для дат в месяце до даты в текущем контексте. |
2 |
TOTALQTD (выражение, дата_колонка, [SetFilter]) Оценивает значение выражения для дат в квартале до даты в текущем контексте. |
3 |
TOTALYTD (Выражение, Date_Column, [SetFilter], [YE_Date]) Оценивает значение выражения для дат в году до даты в текущем контексте |
TOTALMTD (выражение, дата_колонка, [SetFilter])
Оценивает значение выражения для дат в месяце до даты в текущем контексте.
TOTALQTD (выражение, дата_колонка, [SetFilter])
Оценивает значение выражения для дат в квартале до даты в текущем контексте.
TOTALYTD (Выражение, Date_Column, [SetFilter], [YE_Date])
Оценивает значение выражения для дат в году до даты в текущем контексте
-
Шесть (6) функций DAX в этой категории могут использоваться для расчета начального и конечного сальдо.
-
Начальное сальдо за любой период совпадает с начальным сальдо за предыдущий период.
-
Конечное сальдо включает все данные до конца периода, в то время как начальное сальдо не включает никаких данных за текущий период.
-
Эти функции DAX всегда возвращают значение выражения, оцененное для определенного момента времени.
-
-
Момент времени, о котором мы заботимся, всегда является последним возможным значением даты в календарном периоде.
-
Начальное сальдо основывается на последней дате предыдущего периода, тогда как конечное сальдо основывается на последней дате в текущем периоде.
-
Текущий период всегда определяется последней датой в контексте текущей даты.
Шесть (6) функций DAX в этой категории могут использоваться для расчета начального и конечного сальдо.
Начальное сальдо за любой период совпадает с начальным сальдо за предыдущий период.
Конечное сальдо включает все данные до конца периода, в то время как начальное сальдо не включает никаких данных за текущий период.
Эти функции DAX всегда возвращают значение выражения, оцененное для определенного момента времени.
Момент времени, о котором мы заботимся, всегда является последним возможным значением даты в календарном периоде.
Начальное сальдо основывается на последней дате предыдущего периода, тогда как конечное сальдо основывается на последней дате в текущем периоде.
Текущий период всегда определяется последней датой в контексте текущей даты.
Sr.No. | Функция DAX и возвращаемое значение |
---|---|
1 |
OPENINGBALANCEMONTH (выражение, дата_колонка, [SetFilter]) Оценивает выражение по первой дате месяца в текущем контексте. |
2 |
CLOSINGBALANCEMONTH (выражение, дата_колонка, [SetFilter]) Оценивает выражение в последнюю дату месяца в текущем контексте. |
3 |
OPENINGBALANCEQUARTER (выражение, дата_колонка, [SetFilter]) Оценивает выражение на первую дату квартала в текущем контексте. |
4 |
CLOSINGBALANCEQUARTER (выражение, дата_колонка, [SetFilter]) Оценивает выражение на последнюю дату квартала в текущем контексте. |
5 |
OPENINGBALANCEYEAR (Выражение, Date_Column, [SetFilter], [YE_Date]) Оценивает выражение в первую дату года в текущем контексте. |
6 |
CLOSINGBALANCEYEAR (выражение, Date_Column, [SetFilter], [YE_Date]) Оценивает выражение в последнюю дату года в текущем контексте. |
OPENINGBALANCEMONTH (выражение, дата_колонка, [SetFilter])
Оценивает выражение по первой дате месяца в текущем контексте.
CLOSINGBALANCEMONTH (выражение, дата_колонка, [SetFilter])
Оценивает выражение в последнюю дату месяца в текущем контексте.
OPENINGBALANCEQUARTER (выражение, дата_колонка, [SetFilter])
Оценивает выражение на первую дату квартала в текущем контексте.
CLOSINGBALANCEQUARTER (выражение, дата_колонка, [SetFilter])
Оценивает выражение на последнюю дату квартала в текущем контексте.
OPENINGBALANCEYEAR (Выражение, Date_Column, [SetFilter], [YE_Date])
Оценивает выражение в первую дату года в текущем контексте.
CLOSINGBALANCEYEAR (выражение, Date_Column, [SetFilter], [YE_Date])
Оценивает выражение в последнюю дату года в текущем контексте.
Excel DAX – Функции фильтра
DAX имеет мощные функции фильтрации , которые сильно отличаются от функций Excel. Функции поиска работают с использованием таблиц и связей, таких как база данных. Функции фильтрации позволяют вам управлять контекстом данных для создания динамических вычислений.
Примечание. Функции фильтра DAX, которые возвращают таблицу, не добавляют таблицу в модель данных. Результирующая таблица используется в качестве аргумента в другой функции DAX. То есть такие функции DAX используются как вложенные функции с другими функциями DAX.
В следующем разделе вы узнаете, какие функции фильтра DAX вы можете использовать. Для получения более подробной информации об этих функциях обратитесь к учебнику – Функции DAX в этой библиотеке учебников.
Функции фильтра DAX
Ниже приведены функции фильтра DAX –
Sr.No. | Функция DAX и что делает функция? |
---|---|
1 |
ADDMISSINGITEMS (<showAllColumn>, [<showAllColumn>]…, <таблица>, <groupingColumn>, [<groupingColumn>]…, [filterTable]…) Добавляет комбинации элементов из нескольких столбцов в таблицу, если они еще не существуют. Определение того, какие комбинации элементов добавить, основано на ссылках на исходные столбцы, которые содержат все возможные значения для столбцов. Чтобы определить комбинации элементов из разных столбцов для оценки –
|
2 |
ВСЕ ({<таблица> | <столбец>, [<столбец>], [<столбец>],…}) Возвращает все строки в данной таблице или все значения в указанных столбцах таблицы, игнорируя все фильтры, которые могли быть применены. Эта функция полезна для очистки фильтров и создания вычислений для всех строк в таблице. |
3 |
ALLEXCEPT (<таблица>, <столбец>, [<столбец>],…) Удаляет все контекстные фильтры в таблице, кроме фильтров, которые были применены к столбцам, указанным в качестве аргументов. В отличие от ALL, вы можете использовать эту функцию, когда хотите удалить фильтры для многих, но не для всех столбцов в таблице. |
4 |
ALLNOBLANKROW (<таблица> | <столбец>) Из родительской таблицы отношений возвращает –
Функция игнорирует любые фильтры контекста, которые могут существовать. |
5 |
ALLSELECTED ([<tableName> | <columnName>]) Удаляет контекстные фильтры из столбцов и строк в текущем запросе, сохраняя при этом все остальные контекстные фильтры или явные фильтры. |
6 |
РАСЧЕТ (<выражение>, [<фильтр1>, <фильтр2>…)] Оценивает выражение в контексте, который изменяется указанными фильтрами. Возвращает значение, являющееся результатом выражения. |
7 |
CALCULATETABLE (<выражение>, <фильтр1>, <фильтр2>,…) Оценивает табличное выражение в контексте, измененном данными фильтрами. Возвращает таблицу значений. |
8 |
CROSSFILTER (<columnName1>, <columnName2>, <direction>) Определяет направление перекрестной фильтрации, которое будет использоваться в расчете для отношения, существующего между двумя столбцами. Не возвращает никакого значения. |
9 |
DISTINCT (<столбец>) Возвращает таблицу с одним столбцом, которая содержит значения, отличные от указанного столбца. Другими словами, повторяющиеся значения удаляются и возвращаются только уникальные значения. Результирующий столбец используется в качестве аргумента в другой функции DAX. |
10 |
РАНЬШЕ (<колонка>, <число>) Возвращает текущее значение указанного столбца во внешнем проходе оценки указанного столбца, указанного числом. |
11 |
РАННЕЕ (<колонка>) Возвращает текущее значение указанного столбца во внешнем проходе оценки указанного столбца. |
12 |
ФИЛЬТР (<таблица>, <фильтр>) Возвращает таблицу, которая содержит только отфильтрованные строки. FILTER используется только как функция, которая встроена в другие функции, для которых в качестве аргумента требуется таблица. |
13 |
ФИЛЬТРЫ (<columnName>) Возвращает значения, которые непосредственно применяются в качестве фильтров к columnName. FILTERS используется только как функция, которая встроена в другие функции, для которых в качестве аргумента требуется таблица. |
14 |
HASONEFILTER (<columnName>) Возвращает значение ИСТИНА, если число напрямую отфильтрованных значений для columnName равно единице. В противном случае возвращает FALSE. |
15 |
HASONEVALUE (<columnName>) Возвращает TRUE, когда контекст для columnName был отфильтрован только до одного отдельного значения. В противном случае возвращает FALSE. |
16 |
ISCROSSFILTERED (<columnName>) Возвращает TRUE, когда columnName или другой столбец в той же или связанной таблице фильтруется. |
17 |
ISFILTERED (<columnName>) Возвращает TRUE, когда columnName фильтруется напрямую. Если в столбце нет фильтра или если фильтрация происходит из-за того, что другой столбец в той же таблице или в связанной таблице фильтруется, то функция возвращает FALSE. |
18 |
KEEPFILTERS (<выражение>) Изменяет способ применения фильтров при оценке функции CALCULATE или CALCULATETABLE. |
19 |
СВЯЗАННЫЕ (<колонка>) Возвращает связанное значение из другой таблицы. |
20 |
RELATEDTABLE (<tableName>) Оценивает табличное выражение в контексте, измененном данными фильтрами. |
21 |
SUBSTITUTEWITHINDEX (<таблица>, <indexColumnName>, <indexColumnTable>, <orderBy_expression>, [<order>]) Возвращает таблицу, которая представляет левое полусоединение двух таблиц, представленных в качестве аргументов. Полусоединение выполняется с использованием общих столбцов, определяемых общими именами столбцов и общим типом данных. Столбцы, к которым присоединяются, заменяются одним столбцом в возвращаемой таблице, который имеет тип integer и содержит индекс. Индекс представляет собой ссылку на правую таблицу соединений с заданным порядком сортировки. |
22 |
USERELATIONSHIP (<columnName1>, <columnName2>) Указывает отношение, которое будет использоваться в конкретном вычислении, как существующее между columnName1 и columnName2. |
23 |
VALUES (<TableNameOrColumnName>) Возвращает таблицу с одним столбцом, которая содержит значения, отличные от указанной таблицы или столбца. Другими словами, повторяющиеся значения удаляются и возвращаются только уникальные значения. |
ADDMISSINGITEMS (<showAllColumn>, [<showAllColumn>]…, <таблица>, <groupingColumn>, [<groupingColumn>]…, [filterTable]…)
Добавляет комбинации элементов из нескольких столбцов в таблицу, если они еще не существуют. Определение того, какие комбинации элементов добавить, основано на ссылках на исходные столбцы, которые содержат все возможные значения для столбцов.
Чтобы определить комбинации элементов из разных столбцов для оценки –
ВСЕ ({<таблица> | <столбец>, [<столбец>], [<столбец>],…})
Возвращает все строки в данной таблице или все значения в указанных столбцах таблицы, игнорируя все фильтры, которые могли быть применены.
Эта функция полезна для очистки фильтров и создания вычислений для всех строк в таблице.
ALLEXCEPT (<таблица>, <столбец>, [<столбец>],…)
Удаляет все контекстные фильтры в таблице, кроме фильтров, которые были применены к столбцам, указанным в качестве аргументов.
В отличие от ALL, вы можете использовать эту функцию, когда хотите удалить фильтры для многих, но не для всех столбцов в таблице.
ALLNOBLANKROW (<таблица> | <столбец>)
Из родительской таблицы отношений возвращает –
Функция игнорирует любые фильтры контекста, которые могут существовать.
ALLSELECTED ([<tableName> | <columnName>])
Удаляет контекстные фильтры из столбцов и строк в текущем запросе, сохраняя при этом все остальные контекстные фильтры или явные фильтры.
РАСЧЕТ (<выражение>, [<фильтр1>, <фильтр2>…)]
Оценивает выражение в контексте, который изменяется указанными фильтрами.
Возвращает значение, являющееся результатом выражения.
CALCULATETABLE (<выражение>, <фильтр1>, <фильтр2>,…)
Оценивает табличное выражение в контексте, измененном данными фильтрами.
Возвращает таблицу значений.
CROSSFILTER (<columnName1>, <columnName2>, <direction>)
Определяет направление перекрестной фильтрации, которое будет использоваться в расчете для отношения, существующего между двумя столбцами. Не возвращает никакого значения.
DISTINCT (<столбец>)
Возвращает таблицу с одним столбцом, которая содержит значения, отличные от указанного столбца. Другими словами, повторяющиеся значения удаляются и возвращаются только уникальные значения.
Результирующий столбец используется в качестве аргумента в другой функции DAX.
РАНЬШЕ (<колонка>, <число>)
Возвращает текущее значение указанного столбца во внешнем проходе оценки указанного столбца, указанного числом.
РАННЕЕ (<колонка>)
Возвращает текущее значение указанного столбца во внешнем проходе оценки указанного столбца.
ФИЛЬТР (<таблица>, <фильтр>)
Возвращает таблицу, которая содержит только отфильтрованные строки.
FILTER используется только как функция, которая встроена в другие функции, для которых в качестве аргумента требуется таблица.
ФИЛЬТРЫ (<columnName>)
Возвращает значения, которые непосредственно применяются в качестве фильтров к columnName.
FILTERS используется только как функция, которая встроена в другие функции, для которых в качестве аргумента требуется таблица.
HASONEFILTER (<columnName>)
Возвращает значение ИСТИНА, если число напрямую отфильтрованных значений для columnName равно единице. В противном случае возвращает FALSE.
HASONEVALUE (<columnName>)
Возвращает TRUE, когда контекст для columnName был отфильтрован только до одного отдельного значения. В противном случае возвращает FALSE.
ISCROSSFILTERED (<columnName>)
Возвращает TRUE, когда columnName или другой столбец в той же или связанной таблице фильтруется.
ISFILTERED (<columnName>)
Возвращает TRUE, когда columnName фильтруется напрямую. Если в столбце нет фильтра или если фильтрация происходит из-за того, что другой столбец в той же таблице или в связанной таблице фильтруется, то функция возвращает FALSE.
KEEPFILTERS (<выражение>)
Изменяет способ применения фильтров при оценке функции CALCULATE или CALCULATETABLE.
СВЯЗАННЫЕ (<колонка>)
Возвращает связанное значение из другой таблицы.
RELATEDTABLE (<tableName>)
Оценивает табличное выражение в контексте, измененном данными фильтрами.
SUBSTITUTEWITHINDEX (<таблица>, <indexColumnName>, <indexColumnTable>, <orderBy_expression>, [<order>])
Возвращает таблицу, которая представляет левое полусоединение двух таблиц, представленных в качестве аргументов.
Полусоединение выполняется с использованием общих столбцов, определяемых общими именами столбцов и общим типом данных.
Столбцы, к которым присоединяются, заменяются одним столбцом в возвращаемой таблице, который имеет тип integer и содержит индекс.
Индекс представляет собой ссылку на правую таблицу соединений с заданным порядком сортировки.
USERELATIONSHIP (<columnName1>, <columnName2>)
Указывает отношение, которое будет использоваться в конкретном вычислении, как существующее между columnName1 и columnName2.
VALUES (<TableNameOrColumnName>)
Возвращает таблицу с одним столбцом, которая содержит значения, отличные от указанной таблицы или столбца.
Другими словами, повторяющиеся значения удаляются и возвращаются только уникальные значения.
Excel DAX – Сценарии
Вы изучили синтаксис DAX, использование операторов DAX и функций DAX в предыдущих главах. Как вам известно, DAX – это язык формул, используемый для моделирования и анализа данных.
DAX может использоваться в различных сценариях. Основываясь на сценариях DAX, DAX оптимизирует производительность и дает точные и эффективные результаты. В этой главе вы познакомитесь с некоторыми из сценариев DAX.
Выполнение сложных расчетов
Формулы DAX могут выполнять сложные вычисления, которые включают настраиваемые агрегации, фильтрацию и использование условных значений. Вы можете сделать следующее с DAX
- Создайте пользовательские расчеты для сводной таблицы.
- Примените фильтр к формуле.
- Удалить фильтры выборочно, чтобы создать динамическое соотношение.
- Используйте значение из внешнего цикла.
Подробнее см. Главу «Сценарии – выполнение сложных вычислений».
Работа с текстом и датами
DAX может использоваться в сценариях, включающих работу с текстом, извлечение и составление значений даты и времени или создание значений на основе условия. Вы можете сделать следующее с DAX –
- Создайте ключевой столбец путем объединения.
- Составьте дату на основе частей даты, извлеченных из текстовой даты.
- Определите пользовательскую дату.
- Изменить типы данных с помощью формулы.
- Преобразуйте действительные числа в целые числа.
- Преобразуйте действительные числа, целые числа или даты в строки.
- Преобразуйте строки в реальные числа или даты.
Подробнее см. Главу «Сценарии – работа с текстом и датами».
Условные значения и проверка на ошибки
Функции DAX позволяют проверять значения в данных и возвращать другое значение в зависимости от условия. Функции DAX, которые проверяют значения, также полезны для проверки диапазона или типа значений, чтобы предотвратить непредвиденные ошибки данных, которые могут нарушить вычисления. Вы можете сделать следующее с DAX –
- Создайте значение на основе условия.
- Проверка на ошибки в формуле.
Подробнее см. Главу «Сценарии – условные значения и проверка на ошибки».
Использование Time Intelligence
Вы узнали о функциях DAX Time Intelligence в главе – Понимание DAX Time Intelligence.
Функции DAX Time Intelligence включают функции, которые помогут вам извлечь даты или диапазоны дат из ваших данных. Затем вы можете использовать эти даты или диапазоны дат для расчета значений за аналогичные периоды. Функции анализа времени также включают функции, которые работают со стандартными интервалами дат, чтобы позволить вам сравнивать значения по месяцам, годам или кварталам. Вы также можете создать формулу DAX, которая сравнивает значения для первой и последней даты указанного периода.
Вы можете узнать больше о функциях разведки DAX и о том, что они могут сделать для следующих целей:
- Рассчитать совокупные продажи.
- Сравните значения с течением времени.
- Рассчитать значение за пользовательский диапазон дат.
Подробнее см. Главу «Сценарии – использование анализа времени».
Ранжирование и сравнение ценностей
Если вы хотите показать только верхнее число элементов в столбце или сводной таблице, у вас есть следующие варианты:
- Примените фильтр, чтобы показать только верхние или нижние несколько элементов.
- Создайте формулу DAX, которая динамически ранжирует значения и примените фильтр.
У каждого из этих вариантов есть свои плюсы и минусы.
Подробнее см. В разделе Сценарии – ранжирование и сравнение значений.
Excel DAX – выполнение сложных расчетов
Формулы DAX могут выполнять сложные вычисления, которые включают настраиваемые агрегации, фильтрацию и использование условных значений. Вы можете сделать следующее с DAX –
- Создайте пользовательские расчеты для сводной таблицы.
- Примените фильтр к формуле DAX.
- Удалить фильтры выборочно, чтобы создать динамическое соотношение.
- Используйте значение из внешнего цикла.
Создание пользовательских вычислений для сводной таблицы
Функции DAX CALCULATE и CALCULATETABLE являются мощными и гибкими. Они полезны для определения вычисляемых полей. Эти функции DAX позволяют вам изменить контекст, в котором будут выполняться вычисления. Вы также можете настроить тип агрегации или математической операции для выполнения.
РАСЧЕТ Функция
РАСЧЕТ (<выражение>, [<фильтр1>], [<фильтр2>]…)
Функция CALCULATE оценивает данное выражение в контексте, который изменен нулем или более указанными фильтрами.
Если ваши данные были отфильтрованы, функция CALCULATE изменяет контекст, в котором фильтруются данные, и оценивает выражение в новом контексте, который вы указываете фильтрами. Это означает, что все существующие фильтры в указанном столбце удаляются, и вместо них применяется фильтр, используемый в аргументе фильтра.
пример
Предположим, вы хотите отобразить процент медалей, отфильтрованных по названию страны. Ваш расчет должен получить процентное значение, перекрывающее фильтр, который вы применяете для страны в сводной таблице.
-
Определите вычисляемое поле – процент количества медалей, как показано на следующем снимке экрана.
Определите вычисляемое поле – процент количества медалей, как показано на следующем снимке экрана.
С помощью этой формулы DAX все строки в таблице Results учитываются в функции CALCULATE с фильтром, содержащим функцию ALL. Таким образом, у вас есть общее количество в знаменателе.
Ваша сводная таблица будет такой, как показано на следующем снимке экрана.
На приведенном выше снимке экрана «Страна» отфильтрована в США, и в сводной таблице отображаются 18 лучших значений. Далее вы можете динамически фильтровать значения в сводной таблице. Тем не менее, расчеты будут правильными по пользовательской формуле DAX, которую вы использовали.
Функция CALCULATETABLE принимает таблицу значений и выполняет то же действие, что и функция CALCULATE.
Фильтрация данных в формулах
Вы можете создавать фильтры в формулах DAX, чтобы выбирать значения из исходных данных для использования в вычислениях. Вы можете сделать это, определив выражение фильтра и используя его вместе с таблицей, которая является входной для формулы DAX.
Выражение фильтра позволяет получить подмножество исходных данных. Фильтр применяется динамически каждый раз, когда вы обновляете результаты формулы DAX, в зависимости от текущего контекста ваших данных, и вы можете быть уверены в точных и ожидаемых результатах.
Выражение фильтра обычно содержит функцию фильтра DAX, которая возвращает только выбранные строки таблицы, которые затем можно использовать в качестве аргумента для другой функции DAX, которую вы используете для агрегирования данных.
пример
На следующем снимке экрана показано определение вычисляемого поля, в котором указано количество медалей только для летних видов спорта.
С этим вычисленным полем сводная таблица выглядит так, как показано на следующем снимке экрана.
Как вы можете видеть, значения в сводной таблице справа с новым вычисляемым полем совпадают со значениями в сводной таблице слева с явным применением фильтра по полю сезона.
Примечание. Функции фильтра DAX и значений возвращают таблицу, но никогда не возвращают таблицу или строки непосредственно в модель данных и, следовательно, всегда встроены в другую функцию DAX.
Подробнее об этих функциях DAX см. Главу «Функции фильтра DAX».
Добавление и удаление фильтров динамически
На формулы DAX, которые вы используете в сводной таблице, может влиять контекст сводной таблицы. Однако вы можете выборочно изменять контекст, добавляя или удаляя фильтры. Вы можете использовать функции DAX ALL и ALLEXCEPT для динамического выбора строк независимо от контекста сводной таблицы.
Кроме того, вы можете использовать функции DAX DISTINCT и VALUES для возврата различных значений.
Использование значения из внешнего цикла
Вы можете использовать значение из предыдущего цикла при создании набора связанных вычислений с помощью функции DAX EARLIER. Эта функция DAX поддерживает до двух уровней вложенных циклов.
Excel DAX – Работа с текстом и датами
DAX может использоваться в сценариях, включающих работу с текстом, извлечение и составление значений даты и времени или создание значений на основе условия. Вы можете сделать следующее с DAX –
- Создайте ключевой столбец в таблице путем конкатенации.
- Составьте дату на основе частей даты, извлеченных из текстовой даты.
- Определите пользовательский формат даты.
- Изменить типы данных с помощью формулы.
- Преобразуйте действительные числа в целые числа.
- Преобразуйте действительные числа, целые числа или даты в строки.
- Преобразуйте строки в реальные числа или даты.
Создание ключевого столбца путем конкатенации
Модель данных в PowerPivot допускает только один ключевой столбец. Он не поддерживает составные ключи, которые вы можете найти во внешних источниках данных. Следовательно, если какие-либо составные ключи существуют в таблице в источнике данных, вам необходимо объединить их в один ключевой столбец для таблицы в модели данных.
Вы можете использовать функцию DAX CONCATENATE, чтобы объединить два столбца в один столбец таблицы в модели данных. DAX-функция CONCATENATE объединяет две текстовые строки в одну текстовую строку. Присоединяемые элементы могут быть текстом, числами или логическими значениями, представленными в виде текста или комбинации этих элементов. Вы также можете использовать ссылку на столбец, если столбец содержит соответствующие значения.
= CONCATENATE ([Column1], [Column2])
Функция DAX CONCATENATE принимает только два аргумента. Если какой-либо из аргументов не является текстовым типом данных, он будет преобразован в текстовый. Функция DAX CONCATENATE возвращает объединенную строку.
Дата, основанная на частях даты, извлеченных из текстовой даты
Модель данных в Power Pivot поддерживает тип данных datetime для значений даты и времени. Функции DAX, которые работают со значениями даты и / или времени, требуют тип данных datetime для аргументов.
Если ваш источник данных содержит даты другого формата, вам необходимо сначала извлечь части даты, используя формулу DAX, и объединить эти части, чтобы получить действительный тип данных DAX datetime.
Вы можете использовать следующие функции DAX для извлечения и составления дат –
ДАТА – возвращает указанную дату в формате datetime.
DATEVALUE – конвертирует дату в виде текста в дату в формате datetime.
TIMEVALUE – Преобразует время в текстовом формате в время в формате datetime.
Определение пользовательского формата даты
Предположим, что даты в вашем источнике данных не представлены в стандартном формате. Вы можете определить пользовательский формат даты, чтобы гарантировать, что значения обрабатываются правильно. Функция DAX FORMAT позволяет преобразовать значение в текст в соответствии с указанным форматом.
FORMAT (<value>, <format_string>)
Функция FORMAT возвращает строку, содержащую значение, отформатированное в соответствии с определением format_string.
Вы можете использовать предварительно определенные форматы даты и времени или создать пользовательские форматы даты и времени для аргумента format_string функции FORMAT.
Ниже приведены предварительно заданные имена форматов даты и времени. Если вы используете строки, отличные от этих предопределенных строк, они будут интерпретироваться как пользовательский формат даты и времени.
С. Нет. | Format_String & Description |
---|---|
1 |
«Общая дата» Отображает дату и / или время. Например, 10.02.2015, 10:10:32 |
2 |
«Длинная дата» или «Средняя дата» Отображает дату в соответствии с длинным форматом даты. Например, среда, 7 марта 2016 г. |
3 |
«Короткое свидание» Отображает дату, используя краткий формат даты. Например, 2/03/2016 |
4 |
“Много времени” Отображает время, используя длительный формат времени. Обычно включает часы, минуты и секунды. Например, 10:10:32 |
5 |
“Среднее время” Отображает время в 12-часовом формате. Например, 9:30 вечера |
6 |
“Короткое время” Отображает время в 24-часовом формате. Например, 14:15 |
«Общая дата»
Отображает дату и / или время. Например, 10.02.2015, 10:10:32
«Длинная дата» или «Средняя дата»
Отображает дату в соответствии с длинным форматом даты. Например, среда, 7 марта 2016 г.
«Короткое свидание»
Отображает дату, используя краткий формат даты. Например, 2/03/2016
“Много времени”
Отображает время, используя длительный формат времени.
Обычно включает часы, минуты и секунды.
Например, 10:10:32
“Среднее время”
Отображает время в 12-часовом формате.
Например, 9:30 вечера
“Короткое время”
Отображает время в 24-часовом формате.
Например, 14:15
Кроме того, вы можете использовать символы в следующей таблице для создания пользовательских форматов даты и времени.
С. Нет. | Характер и описание |
---|---|
1 |
: Разделитель времени Разделитель времени Разделяет часы, минуты и секунды при форматировании значений времени. |
2 |
/ Разделитель даты. Разделяет день, месяц и год форматирования значений даты. |
3 |
% Используется для обозначения того, что следующий символ должен читаться как однобуквенный формат безотносительно к последним буквам Также используется для указания того, что однобуквенный формат читается как определенный пользователем формат. |
:
Разделитель времени
Разделитель времени Разделяет часы, минуты и секунды при форматировании значений времени.
/
Разделитель даты.
Разделяет день, месяц и год форматирования значений даты.
%
Используется для обозначения того, что следующий символ должен читаться как однобуквенный формат безотносительно к последним буквам Также используется для указания того, что однобуквенный формат читается как определенный пользователем формат.
Ниже приведены данные различных персонажей.
-
% d – отображает день в виде числа без начального нуля (например, 5).
-
% dd – отображает день в виде числа с начальным нулем (например, 05).
-
% ddd – отображает день в виде сокращения (например, вс).
-
% dddd – отображает день как полное имя (например, воскресенье).
-
% M – отображает месяц в виде числа без начального нуля (например, январь представлен как 1).
-
% MM – отображает месяц в виде числа с начальным нулем (например, январь представлен как 01).
-
% MMM – отображает месяц как сокращение (например, январь представлен как январь).
-
% MMMM – отображает месяц как полное название месяца (например, январь).
-
% gg – отображает строку периода / эры (например, AD).
-
% h – Отображение часа в виде числа без начальных нулей с использованием 12-часовых часов (например, 1:15:15 PM). Используйте % h, если это единственный символ в вашем пользовательском числовом формате.
-
% чч – отображает час в виде числа с ведущими нулями, используя 12-часовые часы (например, 01:15:15 PM).
-
% H – Отображение часа в виде числа без начальных нулей с использованием 24-часовых часов (например, 13:15:15, 1:15:15). Используйте% H, если это единственный символ в вашем пользовательском числовом формате.
-
% ЧЧ – отображает часы в виде числа с ведущими нулями, используя 24-часовые часы (например, 13:15:15, 1:15:15).
-
% m – отображает минуты в виде числа без начальных нулей (например, 2: 1: 15). Используйте% m, если это единственный символ в вашем пользовательском числовом формате.
-
% mm – отображает минуты в виде числа с ведущими нулями (например, 2:01:15).
-
% s – отображает секунду как число без начальных нулей (например, 2: 15: 5). Используйте% s, если это единственный символ в вашем пользовательском числовом формате.
-
% ss – отображает секунду как число с ведущими нулями (например, 2:15:05).
-
% f – отображает доли секунд. Например, ff отображает сотые доли секунды, тогда как ffff отображает десятитысячные доли секунды. Вы можете использовать до семи символов f в своем пользовательском формате. Используйте % f, если это единственный символ в вашем пользовательском числовом формате.
-
% t – использует 12-часовые часы и отображает заглавную букву A в течение любого часа до полудня; отображает заглавную букву P в течение любого часа между полуднем и 23:59. Используйте% t, если это единственный символ в пользовательском числовом формате.
-
% tt – для регионов, в которых используются 12-часовые часы, отображается заглавная буква AM с любым часом до полудня; отображает верхний регистр PM с любым часом между полуднем и 23:59. Для локалей, в которых используются 24-часовые часы, ничего не отображается.
-
% y – отображает номер года (0-9) без начальных нулей. Используйте % y, если это единственный символ в пользовательском числовом формате.
-
% yy – отображает год в двузначном числовом формате с начальным нулем, если это применимо.
-
% yyy – отображает год в четырехзначном числовом формате.
-
% yyyy – отображает год в четырехзначном числовом формате.
-
% z – отображает смещение часового пояса без начального нуля (например, -8). Используйте % z, если это единственный символ в вашем пользовательском числовом формате.
-
% zz – отображает. смещение часового пояса с ведущим нулем (например, -08)
-
% zzz – отображает полное смещение часового пояса (например, -08: 00).
% d – отображает день в виде числа без начального нуля (например, 5).
% dd – отображает день в виде числа с начальным нулем (например, 05).
% ddd – отображает день в виде сокращения (например, вс).
% dddd – отображает день как полное имя (например, воскресенье).
% M – отображает месяц в виде числа без начального нуля (например, январь представлен как 1).
% MM – отображает месяц в виде числа с начальным нулем (например, январь представлен как 01).
% MMM – отображает месяц как сокращение (например, январь представлен как январь).
% MMMM – отображает месяц как полное название месяца (например, январь).
% gg – отображает строку периода / эры (например, AD).
% h – Отображение часа в виде числа без начальных нулей с использованием 12-часовых часов (например, 1:15:15 PM). Используйте % h, если это единственный символ в вашем пользовательском числовом формате.
% чч – отображает час в виде числа с ведущими нулями, используя 12-часовые часы (например, 01:15:15 PM).
% H – Отображение часа в виде числа без начальных нулей с использованием 24-часовых часов (например, 13:15:15, 1:15:15). Используйте% H, если это единственный символ в вашем пользовательском числовом формате.
% ЧЧ – отображает часы в виде числа с ведущими нулями, используя 24-часовые часы (например, 13:15:15, 1:15:15).
% m – отображает минуты в виде числа без начальных нулей (например, 2: 1: 15). Используйте% m, если это единственный символ в вашем пользовательском числовом формате.
% mm – отображает минуты в виде числа с ведущими нулями (например, 2:01:15).
% s – отображает секунду как число без начальных нулей (например, 2: 15: 5). Используйте% s, если это единственный символ в вашем пользовательском числовом формате.
% ss – отображает секунду как число с ведущими нулями (например, 2:15:05).
% f – отображает доли секунд. Например, ff отображает сотые доли секунды, тогда как ffff отображает десятитысячные доли секунды. Вы можете использовать до семи символов f в своем пользовательском формате. Используйте % f, если это единственный символ в вашем пользовательском числовом формате.
% t – использует 12-часовые часы и отображает заглавную букву A в течение любого часа до полудня; отображает заглавную букву P в течение любого часа между полуднем и 23:59. Используйте% t, если это единственный символ в пользовательском числовом формате.
% tt – для регионов, в которых используются 12-часовые часы, отображается заглавная буква AM с любым часом до полудня; отображает верхний регистр PM с любым часом между полуднем и 23:59. Для локалей, в которых используются 24-часовые часы, ничего не отображается.
% y – отображает номер года (0-9) без начальных нулей. Используйте % y, если это единственный символ в пользовательском числовом формате.
% yy – отображает год в двузначном числовом формате с начальным нулем, если это применимо.
% yyy – отображает год в четырехзначном числовом формате.
% yyyy – отображает год в четырехзначном числовом формате.
% z – отображает смещение часового пояса без начального нуля (например, -8). Используйте % z, если это единственный символ в вашем пользовательском числовом формате.
% zz – отображает. смещение часового пояса с ведущим нулем (например, -08)
% zzz – отображает полное смещение часового пояса (например, -08: 00).
Как вы можете заметить, строки форматирования чувствительны к регистру. Различное форматирование может быть получено с использованием другого регистра.
Изменение типов данных выходов формулы DAX
В формулах DAX тип данных для вывода определяется столбцами источника, и вы не можете явно указать тип данных результата. Это потому, что оптимальный тип данных определяется Power Pivot. Однако вы можете использовать неявные преобразования типов данных, выполняемые Power Pivot, для управления типом выходных данных. В противном случае вы можете использовать определенные функции DAX для преобразования типа выходных данных.
Использование неявных преобразований типов данных
-
Чтобы преобразовать дату или числовую строку в число, умножьте на 1,0. Например, = (СЕГОДНЯ () + 5) * 1.0. Эта формула вычисляет текущую дату плюс 5 дней и преобразует результат в целочисленное значение.
-
Чтобы преобразовать дату, число или значение валюты в строку, объедините значение с пустой строкой. Например, = Сегодня () & «»
-
Чтобы преобразовать дату или числовую строку в число, умножьте на 1,0. Например, = (СЕГОДНЯ () + 5) * 1.0. Эта формула вычисляет текущую дату плюс 5 дней и преобразует результат в целочисленное значение.
Чтобы преобразовать дату, число или значение валюты в строку, объедините значение с пустой строкой. Например, = Сегодня () & «»
Использование функций DAX для преобразования типов данных
Вы можете использовать функции DAX для следующих целей:
- Преобразование действительных чисел в целые числа.
- Преобразование действительных чисел, целых чисел или дат в строки.
- Преобразование строк в реальные числа или даты.
Вы узнаете это в следующих разделах.
Преобразование вещественных чисел в целые
Вы можете использовать следующие функции DAX для преобразования действительных чисел в целые числа –
ROUND (<число>, <num_digits>) – округляет число до указанного числа цифр и возвращает десятичное число.
CEILING (<число>, <значимость>) – округляет число до ближайшего целого или кратного значению и возвращает десятичное число.
FLOOR (<число>, <значимость>) – округляет число вниз до нуля, до ближайшего кратного значения и возвращает десятичное число.
Преобразование действительных чисел, целых чисел или дат в строки
Вы можете использовать следующие функции DAX для преобразования действительных чисел, целых чисел или дат в строки:
ИСПРАВЛЕНО (<number>, [<decimals>], [<no_comma>]) – округляет число и возвращает результат в виде текста. Количество цифр справа от десятичной точки равно 2 или указанному количеству десятичных знаков. Результат с запятыми или опционально без запятых.
FORMAT (<value>, <format_string>) – преобразует значение в текст в соответствии с указанным форматом.
Вы уже узнали об использовании функции Format для преобразования дат в строки.
Преобразование строк в реальные числа или даты
Вы можете использовать следующие функции DAX для преобразования строк в реальные числа или даты:
VALUE (<текст>) – преобразует текстовую строку, представляющую число, в число.
DATEVALUE (date_text) – преобразует дату в виде текста в дату в формате datetime.
TIMEVALUE (time_text) – преобразует время в текстовом формате во время в формате datetime.
Условные значения и проверка на ошибки
Вы можете использовать функции DAX для проверки значений в данных, которые приводят к различным значениям в зависимости от условия. Например, вы можете проверить годовой объем продаж и, основываясь на результате, пометить реселлеров как Предпочтительный или Ценный.
Вы также можете использовать функции DAX для проверки диапазона или типа значений, чтобы предотвратить непредвиденные ошибки в данных, которые могут нарушить вычисления.
Создание значения на основе условия
Вы можете использовать вложенные условия IF для проверки значений и условного создания новых значений. Следующие функции DAX полезны для условной обработки и условных значений –
IF (<логический_тест>, <value_if_true>, [<value_if_false>]) – проверяет, выполняется ли условие. Возвращает одно значение, если условие TRUE, и возвращает другое значение, если условие FALSE. Value_if_false является необязательным, и если оно опущено, а условие имеет значение FALSE, функция возвращает BLANK ().
ИЛИ (<логический1>, <логический2>) – проверяет, является ли один из аргументов ИСТИНА для возврата ИСТИНА. Функция возвращает FALSE, если оба аргумента являются FALSE.
CONCATENATE (<text1>, <text2>) – объединяет две текстовые строки в одну текстовую строку. Присоединяемые элементы могут быть текстом, числами или логическими значениями, представленными в виде текста или комбинации этих элементов. Вы также можете использовать ссылку на столбец, если столбец содержит соответствующие значения.
Тестирование на ошибки в формуле DAX
В DAX вы не можете иметь действительные значения в одной строке вычисляемого столбца и недопустимые значения в другой строке. То есть, если в какой-либо части вычисляемого столбца есть ошибка, весь столбец помечается ошибкой, и необходимо исправить формулу DAX, чтобы удалить ошибки, приводящие к недопустимым значениям.
Некоторые распространенные ошибки в формулах DAX:
- Деление на ноль.
- Аргумент функции является пустым, в то время как ожидаемый аргумент является числовым значением.
Вы можете использовать комбинацию логических и информационных функций для проверки на ошибки и всегда возвращать действительные значения, чтобы избежать возврата ошибок в вычисляемом столбце. Следующие функции DAX помогут вам в этом.
ISBLANK (<значение>) – проверяет, является ли значение пустым, и возвращает значение ИСТИНА или ЛОЖЬ.
IFERROR (value, value_if_error) – возвращает значение value_if_error, если выражение в первом аргументе приводит к ошибке. В противном случае возвращает значение самого выражения.
И возвращаемое значение выражения, и value_if_error должны иметь одинаковый тип данных. В противном случае вы получите ошибку.
Excel DAX – Использование Time Intelligence
Вы узнали о мощной функции DAX Time Intelligence в главе – Понимание Time Intelligence. В этой главе вы узнаете, как использовать функции анализа времени DAX в различных сценариях.
Функции разведки времени DAX включают в себя –
-
Функции, которые помогают вам получать даты или диапазоны дат из ваших данных, которые используются для вычисления значений за аналогичные периоды.
-
Функции, которые работают со стандартными интервалами дат, чтобы позволить вам сравнивать значения по месяцам, годам или кварталам.
-
Функции, которые получают первую и последнюю дату указанного периода.
-
Функции, которые помогут вам работать с начальным и конечным балансами.
Функции, которые помогают вам получать даты или диапазоны дат из ваших данных, которые используются для вычисления значений за аналогичные периоды.
Функции, которые работают со стандартными интервалами дат, чтобы позволить вам сравнивать значения по месяцам, годам или кварталам.
Функции, которые получают первую и последнюю дату указанного периода.
Функции, которые помогут вам работать с начальным и конечным балансами.
Расчет совокупных продаж
Вы можете использовать функции анализа времени DAX для создания формул для расчета совокупных продаж. Следующие функции DAX могут использоваться для расчета сальдо закрытия и открытия –
CLOSINGBALANCEMONTH (<выражение>, <даты>, [<фильтр>]) – оценивает выражение в последнюю дату месяца в текущем контексте.
OPENINGBALANCEMONTH (<выражение>, <даты>, [<фильтр>]) – оценивает выражение в первую дату месяца в текущем контексте.
CLOSINGBALANCEQUARTER (<выражение>, <даты>, [<фильтр>]) – оценивает выражение на последнюю дату квартала в текущем контексте.
OPENINGBALANCEQUARTER (<выражение>, <даты>, [<фильтр>]) – оценивает выражение на первую дату квартала в текущем контексте.
CLOSINGBALANCEYEAR (<expression>, <date>, [<filter>], [<year_end_date>]) – оценивает выражение в последнюю дату года в текущем контексте.
OPENINGBALANCEYEAR (<expression>, <date>, <filter>], [<year_end_date>]) – оценивает выражение в первую дату года в текущем контексте.
Вы можете создать следующие вычисляемые поля для товарного запаса в указанное время, используя следующие функции DAX –
Стоимость инвентаризации на начало месяца: = OPENINGBALANCEMONTH ( SUMX (ProductInventory, ProductInventory [UnitCost] * ProductInventory [UnitsBalance]), DateTime [DateKey] )
Стоимость запасов на конец месяца: = CLOSINGBALANCEMONTH ( SUMX (ProductInventory, ProductInventory [UnitCost] * ProductInventory [UnitsBalance]), DateTime [DateKey] )
Значение инвентаризации на начало квартала: = OPENINGBALANCEQUARTER ( SUMX ProductInventory, (ProductInventory [UnitCost] * ProductInventory [UnitsBalance]), DateTime [DateKey] )
Значение запаса на конец квартала: = CLOSINGBALANCEQUARTER ( SUMX (ProductInventory, ProductInventory [UnitCost] * ProductInventory [UnitsBalance]), DateTime [DateKey] )
Стоимость инвентаризации на начало года: = OPENINGBALANCEYEAR ( SUMX (ProductInventory, ProductInventory [UnitCost] * ProductInventory [UnitsBalance]), DateTime [DateKey] )
Стоимость запасов на конец года: = CLOSINGBALANCEYEAR ( SUMX (ProductInventory, ProductInventory [UnitCost] * ProductInventory [UnitsBalance]), DateTime [DateKey] )
Сравнение значений в разные периоды времени
Периоды по умолчанию, поддерживаемые DAX, – это месяцы, кварталы и годы.
Вы можете использовать следующие функции анализа времени DAX для сравнения сумм за разные периоды времени.
-
PREVIOUSMONTH (<даты>) – возвращает таблицу, которая содержит столбец всех дат предыдущего месяца на основе первой даты в столбце дат в текущем контексте.
-
PREVIOUSQUARTER (<даты>) – возвращает таблицу, которая содержит столбец всех дат предыдущего квартала на основе первой даты в столбце дат в текущем контексте.
-
PREVIOUSYEAR (<date>, <year_end_date>]) – возвращает таблицу, которая содержит столбец всех дат за предыдущий год с учетом последней даты в столбце дат в текущем контексте.
PREVIOUSMONTH (<даты>) – возвращает таблицу, которая содержит столбец всех дат предыдущего месяца на основе первой даты в столбце дат в текущем контексте.
PREVIOUSQUARTER (<даты>) – возвращает таблицу, которая содержит столбец всех дат предыдущего квартала на основе первой даты в столбце дат в текущем контексте.
PREVIOUSYEAR (<date>, <year_end_date>]) – возвращает таблицу, которая содержит столбец всех дат за предыдущий год с учетом последней даты в столбце дат в текущем контексте.
Вы можете создать следующие вычисляемые поля для расчета суммы продаж в западном регионе в указанные периоды времени для сравнения, используя функции DAX –
Продажи за предыдущий месяц: = РАСЧЕТ ( SUM (WestSales [SalesAmount]), PREVIOUSMONTH (DateTime [DateKey]) )
Продажи за предыдущий квартал: = РАСЧЕТ ( SUM (WestSales [SalesAmount]), PREVIOUSQUARTER (DateTime [DateKey]) )
Продажи за предыдущий год: = РАСЧЕТ ( SUM (WestSales [SalesAmount]), PREVIOUSYEAR (DateTime [DateKey]) )
Сравнение значений в параллельных периодах времени
Вы можете использовать функцию анализа времени DAX PARALLELPERIOD для сравнения сумм за период, параллельный указанному периоду времени.
PARALLELPERIOD (<даты>, <number_of_intervals>, <интервал>)
Эта функция DAX возвращает таблицу, которая содержит столбец дат, представляющий период, параллельный датам в указанном столбце дат, в текущем контексте, с датами, сдвинутыми на несколько интервалов вперед или назад во времени.
Вы можете создать следующее вычисляемое поле для расчета продаж за предыдущий год в Западном регионе –
Продажи за предыдущий год: = РАСЧЕТ ( SUM (West_Sales [SalesAmount]), PARALLELPERIOD (DateTime [DateKey], - 1, год) )
Расчет промежуточных итогов
Вы можете использовать следующие функции анализа времени DAX для вычисления промежуточных или текущих сумм.
-
TOTALMTD (<выражение>, <даты>, [<фильтр>]) – оценивает значение выражения для месяца к дате в текущем контексте.
-
TOTALQTD (<выражение>, <даты>, <фильтр>]) – оценивает значение выражения для дат в квартале от даты в текущем контексте.
-
TOTALYTD (<expression>, <date>, [<filter>], [<year_end_date>]) – оценивает текущее значение выражения в текущем контексте.
TOTALMTD (<выражение>, <даты>, [<фильтр>]) – оценивает значение выражения для месяца к дате в текущем контексте.
TOTALQTD (<выражение>, <даты>, <фильтр>]) – оценивает значение выражения для дат в квартале от даты в текущем контексте.
TOTALYTD (<expression>, <date>, [<filter>], [<year_end_date>]) – оценивает текущее значение выражения в текущем контексте.
Вы можете создать следующие вычисляемые поля для расчета текущей суммы продаж в западном регионе в указанные периоды времени, используя функции DAX –
Сумма за месяц: = TOTALMTD (SUM (West_Sales [SalesAmount]), DateTime [DateKey])
Сумма за квартал: = TOTALQTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])
Сумма за год: = TOTALYTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])
Расчет значения за пользовательский диапазон дат
Вы можете использовать функции анализа времени DAX для получения настраиваемого набора дат, который можно использовать в качестве входных данных для функции DAX, которая выполняет вычисления, для создания настраиваемых агрегатов за периоды времени.
DATESINPERIOD (<date>, <start_date>, <number_of_intervals>, <interval>) – возвращает таблицу, которая содержит столбец дат, который начинается с start_date и продолжается для указанного number_of_intervals.
DATESBETWEEN (<date>, <start_date>, ) – Возвращает таблицу, которая содержит столбец дат, который начинается с даты start_date и продолжается до даты end_date.
DATEADD (<даты>, <number_of_intervals>, <интервал>) – возвращает таблицу, содержащую столбец дат, сдвинутых во времени вперед или назад на указанное количество интервалов от дат в текущем контексте.
FIRSTDATE (<даты>) – возвращает первую дату в текущем контексте для указанного столбца дат.
LASTDATE (<даты>) – возвращает последнюю дату в текущем контексте для указанного столбца дат.
Вы можете создать следующие формулы DAX для расчета суммы продаж в западном регионе за указанный диапазон дат, используя функции DAX –
-
DAX Formula для расчета продаж за 15 дней до 17 июля 2016 года.
DAX Formula для расчета продаж за 15 дней до 17 июля 2016 года.
РАСЧЕТ ( SUM (WestSales [SalesAmount]), DATESINPERIOD (DateTime [DateKey], DATE (2016,17,14), -15, день) )
-
Формула DAX для создания вычисляемого поля, которое рассчитывает продажи в первом квартале 2016 года.
Формула DAX для создания вычисляемого поля, которое рассчитывает продажи в первом квартале 2016 года.
= РАСЧЕТ ( SUM (WestSales [SalesAmount]), DATESBETWEEN (DateTime [DateKey], DATE (2016,1,1), DATE (2016,3,31)) )
-
Формула DAX для создания вычисляемого поля, которое получает первую дату, когда была сделана продажа в западном регионе для текущего контекста.
Формула DAX для создания вычисляемого поля, которое получает первую дату, когда была сделана продажа в западном регионе для текущего контекста.
= FIRSTDATE (WestSales [SaleDateKey])
-
Формула DAX для создания вычисляемого поля, которое получает последнюю дату, когда была сделана продажа в западном регионе для текущего контекста.
Формула DAX для создания вычисляемого поля, которое получает последнюю дату, когда была сделана продажа в западном регионе для текущего контекста.
= LASTDATE (WestSales [SaleDateKey])
-
Формула DAX для расчета дат за один год до дат в текущем контексте.
Формула DAX для расчета дат за один год до дат в текущем контексте.
= DATEADD (DateTime [DateKey], - 1, год)
Excel DAX – ранжирование и сравнение ценностей
Если вы хотите отобразить только верхнее число элементов в столбце или сводной таблице, у вас есть следующие два варианта:
-
Вы можете выбрать количество верхних значений в сводной таблице.
-
Вы можете создать формулу DAX, которая динамически ранжирует значения, а затем использует значения ранжирования в слайсере.
Вы можете выбрать количество верхних значений в сводной таблице.
Вы можете создать формулу DAX, которая динамически ранжирует значения, а затем использует значения ранжирования в слайсере.
Применение фильтра для показа только самых верхних элементов
Чтобы выбрать количество верхних значений для отображения в сводной таблице, выполните следующие действия:
- Нажмите стрелку вниз в заголовке меток строк в сводной таблице.
- Нажмите «Фильтры значений» в раскрывающемся списке, а затем нажмите «Топ 10».
Откроется диалоговое окно Top 10 Filter (<имя столбца>).
- Под Показать выберите следующее в полях слева направо.
- верхний
- 18 (Количество верхних значений, которые вы хотите отобразить. По умолчанию – 10.)
- Предметы.
- В поле by выберите Medal Count.
-
Нажмите ОК. Лучшие 18 значений будут отображены в сводной таблице.
Нажмите ОК. Лучшие 18 значений будут отображены в сводной таблице.
Преимущества и недостатки применения фильтра
преимущества
- Это просто и удобно в использовании.
- Подходит для столов с большим количеством рядов.
Недостатки
-
Фильтр предназначен исключительно для отображения.
-
Если данные, лежащие в основе сводной таблицы, изменяются, необходимо вручную обновить сводную таблицу, чтобы увидеть изменения.
Фильтр предназначен исключительно для отображения.
Если данные, лежащие в основе сводной таблицы, изменяются, необходимо вручную обновить сводную таблицу, чтобы увидеть изменения.
Создание формулы DAX, которая динамически оценивает значения
Вы можете создать вычисляемый столбец, используя формулу DAX, которая содержит ранжированные значения. Затем можно использовать слайсер в результирующем вычисляемом столбце, чтобы выбрать значения для отображения.
Вы можете получить значение ранга для данного значения в строке, посчитав количество строк в одной и той же таблице, имеющих значение больше, чем сравниваемое. Этот метод возвращает следующее –
-
Нулевое значение для самого высокого значения в таблице.
-
Равные значения будут иметь одинаковое значение ранга. Если n значений равно, следующее значение после равных значений будет иметь непоследовательное значение ранга, складывающее число n .
Нулевое значение для самого высокого значения в таблице.
Равные значения будут иметь одинаковое значение ранга. Если n значений равно, следующее значение после равных значений будет иметь непоследовательное значение ранга, складывающее число n .
Например, если у вас есть таблица «Продажи» с данными о продажах, вы можете создать вычисляемый столбец с рядами значений суммы продаж следующим образом:
= COUNTROWS (FILTER (Sales, EARLIER (Sales [Sales Amount]) < Sales [Sales Amount]) ) + 1
Затем вы можете вставить слайсер в новый вычисляемый столбец и выборочно отображать значения по рангу.
Преимущества и недостатки динамических рангов
преимущества
-
Ранжирование производится в таблице, а не в сводной таблице. Следовательно, может использоваться любое количество сводных таблиц.
-
Формулы DAX рассчитываются динамически. Следовательно, вы всегда можете быть уверены в правильности ранжирования, даже если базовые данные изменились.
-
Поскольку формула DAX используется в вычисляемом столбце, вы можете использовать ранжирование в слайсере.
-
Подходит для столов с большим количеством рядов.
Ранжирование производится в таблице, а не в сводной таблице. Следовательно, может использоваться любое количество сводных таблиц.
Формулы DAX рассчитываются динамически. Следовательно, вы всегда можете быть уверены в правильности ранжирования, даже если базовые данные изменились.
Поскольку формула DAX используется в вычисляемом столбце, вы можете использовать ранжирование в слайсере.
Подходит для столов с большим количеством рядов.
Недостатки
Поскольку вычисления DAX требуют больших вычислительных ресурсов, этот метод может не подходить для таблиц с большим количеством строк.
Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
- Что такое язык DAX от Microsoft?
- Язык DAX и Excel (Powerpivot)
- Язык DAX и Power BI
- Описание миссии языка DAX
- Подробное ВИДЕО «Что такое язык DAX для Power BI и Power Pivot»
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. С этой статьи я начинаю большую рубрику на нашем блоге «BI — это просто», посвященную языку функций и формул DAX. В этой рубрике будем подробно разбирать все функции DAX, а также то, как на основе них писать необходимые для Ваших BI отчетов формулы.
Ну а в этой статье мы поговорим о самом языке DAX и что это вообще такое.
Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.
Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».
Да, и еще один момент, до 21 апреля 2023 г. у Вас имеется возможность приобрести большой, пошаговый видеокурс «DAX — это просто» со скидкой 60% (вместо 10000, всего за 4000 руб.)
В этом видеокурсе язык DAX преподнесен как простой конструктор, состоящий из нескольких блоков, которые имеют свое определенное, конкретное предназначение. Сочетая различными способами эти блоки, Вы, при помощи конструктора формул DAX, с легкостью сможете решать любые (простые или сложные) аналитические задачи.
Итак, пользуйтесь этой возможностью, заказывайте курс «DAX — это просто» со скидкой 60% (до 21 апреля 2023 г.): узнать подробнее
до конца распродажи осталось:
Что такое язык DAX от Microsoft?
DAX — это язык функций и формул, который входит в состав нескольких приложений от компании Microsoft, а если быть точнее, то в приложение Power BI, в надстройку Excel (Powerpivot) и в SSAS Tabular (SQL Server).
MS DAX — это функциональный язык запросов, который целиком и полностью состоит только из встроенных в него функций.
В DAX Вы не сможете создать какие-либо свои функции, циклы или что-то еще, что можно создавать в языках программирования. Ведь DAX — это не язык программирования, это именно функциональный язык от Microsoft, при помощи которого, у Вас имеется возможность на основе встроенных в него функций создавать свои формулы для расчета необходимых вычислений, обогащая Вашу исходную модель данных. И на основе всего этого, в итоге, создавать те самые интерактивные отчеты в Power BI и Excel (Powerpivot).
Если говорить кратко, то DAX позволяет обращаться (создавать запросы) к исходной модели данных, брать из нее необходимые отфильтрованные данные и производить с ними вычисления. А затем, уже на основе этих вычислений, у Вас появляется возможность создавать интерактивные BI отчеты.
Язык DAX и Excel (Powerpivot)
Тем из Вас, кто ранее пользовался обычным Экселем, а сейчас переходит к работе с языком DAX, то для Вас DAX может показаться достаточно знакомым и похожим на Excel.
И это действительно так. Дело в том, что язык DAX изначально зародился из под Excel, а конкретнее, в 2010 году его представили на свет в рамках языка функций и формул для надстройки Excel — Power Pivot. И создатели DAX сделали все возможное, чтобы пользователям стандартного Экселя было легко перейти к работе с DAX.
В DAX достаточно много функций, которые так или иначе похожи, или чем-то напоминают соответствующие функции в Excel.
И все же, DAX это не Эксель, иначе бы зачем его создавали… Большинство функций в DAX работают иначе, либо же они совершенно новые и их в стандартном Excel нет вообще.
Но, основное различие между ними даже не в тех или иных функциях, а в том, что Excel и DAX совершенно по-разному сконструированы.
В Excel вся работа основана на конкретных ячейках. К каждой ячейке Вы можете обратиться по конкретному адресу: A5, B2 и так далее.
Также, в рамках одного столбца, например, столбца A, Вы можете в каждой ячейке расположить разные формулы, разные форматы данных, и затем, объединить все эти ячейки в рамках одной какой-то формулы.
В MS DAX так сделать уже не получится! Потому что в DAX минимальным атомарным кирпичиком является столбец. И в рамках одного столбца Вы сможете указать только одну единственную формулу, которая будет вычисляться для всех ячеек этого столбца. Также, в рамках этого одного столбца возможно расположить только 1 конкретный тип данных.
То есть, в DAX в рамках одного столбца Вы не сможете на одной строчке написать одну формулу, на другой, другую формулу. На одной строчке один тип данных, на другой — другой тип данных. Это сделать невозможно. В DAX в одном столбце возможна лишь одна формула и один тип данных.
Исходя из всего выше описанного можно сделать вывод, что в DAX у Вас не получится добраться до какой-то конкретной ячейки в таблице или столбце, указав конкретный адрес этой ячейки.
Но, все же, значение этой одной конкретной ячейки получить можно…
Для этого нужно указать конкретный адрес столбца и его таблицы, затем наложить на столбец очень мощный фильтр таким образом, чтобы от всех его строчек осталась только одна единственная строка, тогда, соответственно, в столбце останется одна ячейка и этим самым, мы сможем получить значение этой ячейки. Но при этом, опять же, мы не будем знать что за это ячейка и какой у нее адрес.
Язык DAX и Power BI
Также, есть небольшое различие в языках DAX используемых в разных приложениях, например таких, как Power BI и Excel (Powerpivot).
А конкретно, в DAX в Power BI имеется возможность создавать физически и сохранять в модели данных вычисляемые таблицы, чего в Excel (Powerpivot) по крайней мере, сейчас, пока сделать не получится. В Экселе можно создавать некие виртуальные таблицы в составе самих формул DAX, но создать физически вычисляемые таблицы и потом сохранить их в модели данных пока нельзя.
Поэтому, если Вы только начинаете изучать язык DAX, то лучше всего, по моему мнению, это делать в приложении Power BI:
- во-первых, как я уже написал выше, в Power BI в DAX можно легко создавать в модели данных вычисляемые таблицы;
- а во-вторых, само удобство использования DAX в Power BI намного лучше, ведь Power BI — это следующий технологический уровень в BI аналитике, после Экселя, и именно поэтому, там процесс работы намного удобнее.
Если Вы еще не знаете что такое Power BI, то на нашем блоге Вы можете найти много статей на эту тему. И если нужно скачать приложение Power BI Desktop, то сделать это Вы можете по данной ссылке.
Описание миссии языка DAX
Итак, подводя итог всей статьи про краткое описание и знакомство с DAX, можно описать его некое предназначение:
- данный язык функций и формул является неким мостом между Вашей исходной моделью данных и тем интерактивным отчетом, который Вы в итоге хотите видеть и анализировать;
- этот функциональный язык запросов дает возможность обогатить исходную модель данных, создавая в ней новые вычисляемые таблицы, столбцы и разные меры (вычисления, на основе которых Вы и будете изучать и анализировать всю информацию).
На этом, с первым знакомством с языком DAX, все. Переходите к следующей статье, где мы продолжим изучать этот язык, а если быть точнее, то поговорим про функции DAX.
Подробное ВИДЕО «Что такое язык DAX для Power BI и Power Pivot»
Ссылки из видео:
1) [Регистрируйтесь в бесплатной группе обучения] Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot: зарегистрироваться
2) [Скачивайте PDF] Справочник DAX функций для Power BI и Power Pivot на русском языке: скачать
Также, напоминаю Вам, что до 21 апреля 2023 г. у Вас имеется шикарная возможность приобрести большой, пошаговый видеокурс «DAX — это просто» со скидкой 60% (вместо 10000, всего за 4000 руб.)
В этом видеокурсе язык DAX преподнесен как простой конструктор, состоящий из нескольких блоков, которые имеют свое определенное, конкретное предназначение. Сочетая различными способами эти блоки, Вы, при помощи конструктора формул DAX, с легкостью сможете решать любые (простые или сложные) аналитические задачи.
Итак, пользуйтесь этой возможностью, заказывайте курс «DAX — это просто» со скидкой 60% (до 21 апреля 2023 г.): узнать подробнее
До конца распродажи осталось:
Пожалуйста, оцените статью:
- 5
- 4
- 3
- 2
- 1
(14 голосов, в среднем: 4.2 из 5 баллов)
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
до конца распродажи осталось:
Еще одна важная тема, которую мы обсудим – это DAX в Power BI. Это очень важная тема в Power BI, поэтому мы постарались предоставить вам подробную статью о концепциях и использовании DAX-формул при работе над Power BI Desktop для анализа данных.
Итак, давайте перейдем к руководству.
DAX в Power BI
DAX — это выражения для анализа данных, то есть такие выражения или формулы, которые используются для анализа и вычислений данных. Эти выражения представляют собой набор и комбинацию функций, операторов и констант, которые оцениваются как одна формула для получения результатов (значения или значений). Формулы DAX очень полезны в инструментах бизнес-аналитики, таких как Power BI, поскольку они помогают аналитикам данных максимально использовать имеющиеся у них наборы данных.
С помощью языка DAX аналитики могут открывать новые способы вычисления имеющихся у них значений данных и делать свежие выводы.
Взгляните на некоторые ключевые моменты DAX, которые помогут вам лучше понять концепцию.
- DAX – это функциональный язык, т.е. его полный код всегда является функцией. Исполняемое выражение DAX может содержать условные операторы, вложенные функции, ссылки на значения и т. д.
- Формулы DAX имеют два основных типа данных; числовые и нечисловые или другие. Числовой тип данных включает целые числа, десятичные дроби, валюту и т. д. Нечисловой тип данных состоит из строк и двоичных объектов.
- Выражения DAX оцениваются от самой внутренней функции до самой внешней функции. Это делает разработку DAX-формулы важной задачей.
Вы можете использовать значения смешанных типов данных в качестве входных данных в DAX-формуле, и преобразование будет выполняться автоматически во время выполнения формулы. Выходные значения будут преобразованы в тип данных, который вы указали для формулы DAX.
Важности DAX в Power BI
Естественно можно задуматься, почему же так важно изучить DAX для эффективной работы с Power BI. Что ж, как мы видели в наших предыдущих руководствах, создание отчетов с использованием функций импорта, преобразования и визуализации данных в Power BI — это удобный для пользователя вариант. Для этого пользователь должен иметь базовые знания Power BI Desktop, чтобы создать действительно хороший отчет со всеми доступными данными. Но если вы хотите рассчитать показатели и использовать расширенные вычисления в отчетах Power BI, вам понадобится DAX.
Допустим, вы хотите создать визуализацию для анализа процента роста в разных штатах страны или вам нужно сравнить годовой рост/продажи. Полей данных, которые вы импортируете, обычно недостаточно для использования в таких целях.
Для этого вам нужно создать новые меры, используя язык DAX. Таким образом, вы можете создавать новые меры, использовать их для создания эксклюзивных визуализаций и получать уникальное представление о данных. Обладая таким уникальным пониманием данных, вы можете найти подходящие решения для бизнес-проблем, которые вы могли бы пропустить при обычном анализе. Таким образом, DAX выполняет анализ данных с помощью Power BI – разумного и интеллектуального подхода.
Формулы DAX – синтаксис
Первым и самым важным шагом в изучении любого языка является разбиение его на определенные элементы и разбор этих элементов. И поэтому мы изучаем синтаксис языка. Ниже представлен пример формулы DAX. Мы разберемся с этой формулой и элементами ее синтаксиса с помощью этого примера.
Мы объясняем каждый элемент синтаксиса, помеченный на изображении, в следующих пунктах:
- Название нового показателя (Прогнозируемые продажи на 2019 год).
- Знак равенства (=), который является оператором, указывающим начало формулы DAX и приравнивающим друг другу две стороны.
- Функция DAX, используемая для добавления значений заданного поля (Total Sales 2018) из таблицы (Sales). Здесь используется функция SUM.
- Круглые скобки ( ) используются для заключения и определения аргументов в выражении. У каждой функции должен быть хотя бы один аргумент.
- Имя таблицы, из которой берется поле или столбец в формуле (Продажи).
- Имя поля, из которого формула будет использовать значения. Например, функция SUM будет применяться к значениям столбца или поля [Total Sales 2018] таблицы Sales.
- Еще один оператор, используемый для умножения. Хотя элементы синтаксиса от A до F составляют основной синтаксис DAX.
Таким образом, проще говоря, эта формула DAX дает системе команду вычислить произведение суммы значений в Total Sales 2018 и 1,08 (увеличение на 8%) и сохранить значение в новом поле или столбце, известном как Projected Sales 2019.
Хотите знать, как создавать показатели в Power BI Desktop?
Типы вычислений DAX
Итак, очевидно, что формулы DAX также можно назвать вычислениями, поскольку они вычисляют входное значение и возвращают результирующее значение. Вы можете создавать два типа выражений или вычислений с помощью DAX в Power BI; вычисляемые столбцы и вычисляемые меры.
- Вычисляемые столбцы: вычисляемые столбцы создают новый столбец в существующей таблице. Единственная разница между обычным столбцом и вычисляемым состоит в том, что в вычисляемом столбце должна быть хотя бы одна функция. Они используются, когда вы хотите создать столбец с отфильтрованной или отсортированной информацией.
Чтобы создать вычисляемый столбец:
- Перейдите на вкладку «Моделирование» в Power BI Desktop.
- Затем выберите опцию «Новый столбец». Откроется панель формул с надписью: «Столбец =». Вы можете заменить слово «Столбец» на нужное имя столбца.
- После этого введите выражение для вычисляемого столбца справа от знака равенства.
- Вычисляемые меры: вычисляемая мера создает поле, содержащее агрегированные значения, такие как сумма, отношения, проценты, средние значения и т. д.
Чтобы создать вычисляемую меру:
- Перейдите на вкладку «Моделирование» в Power BI Desktop.
- Затем выберите опцию «Новая мера». Откроется панель формул с надписью: «Мера =». Вы можете заменить слово «Мера» желаемым названием меры.
- После этого введите выражение для вычисляемой меры справа от знака равенства.
- После создания меры вы можете изменить имя меры, добавив рядом с ней значок калькулятора под именем таблицы, в которой вы создали меру.
Функции DAX
Функция DAX – это предопределенная формула, которая выполняет вычисления для значений, предоставленных ей в аргументах. Аргументы в функции должны быть в определенном порядке и могут быть ссылкой на столбец, числами, текстом, константами, другой формулой или функцией, или логическим значением, таким как ИСТИНА или ЛОЖЬ. Каждая функция выполняет определенную операцию со значениями, заключенными в аргумент. В формуле DAX можно использовать несколько аргументов.
Ключевые моменты о функциях DAX
Вот некоторые уникальные факты о функциях DAX, которые вы должны знать, чтобы лучше их понимать:
- Любая функция DAX всегда относится к полному столбцу/полю или таблице. Он никогда не будет относиться к отдельным значениям. Если вы хотите использовать функции для отдельных значений в столбце, вам необходимо применить фильтры в формуле DAX.
- Функции DAX обеспечивают гибкость для создания формулы, которая применяется построчно. Расчеты или формулы применяются в соответствии с контекстом значений в каждой строке.
- В некоторых случаях функции DAX возвращают полную таблицу, которую можно использовать в других формулах DAX, которым требуется полный набор значений. Однако вы не можете отобразить содержимое этой таблицы.
- Функции DAX имеют категорию, известную как функции логики времени. Такие функции используются для расчета диапазонов времени/дат и периодов.
Типы функций DAX
1. Функции даты и времени
Функции даты и времени выполняют вычисления значений даты и времени. Тип данных этих значений всегда является типом данных.
- CALENDAR
- CALENDARAUTO
- DATE
- DATEDIFF
- DATEVALUE
- DAY
- EOMONTH
- HOUR
- MINUTE
- MONTH
- NOW
- SECOND
- TIME
- TIMEVALUE
- TODAY
- WEEKDAY
- WEEKNUM
- YEAR
- YEARFRAC
2. Функции логики операций со временем
Функции логики времени используются для оценки значений за фиксированный период, например, дни, недели, месяцы, кварталы, годы и т. д. С помощью этих функций можно указать период времени и сравнить два сценария в своем отчете.
- CLOSINGBALANCEMONTH
- CLOSINGBALANCEQUARTER
- CLOSINGBALANCEYEAR
- DATEADD
- DATESBETWEEN
- DATESINPERIOD
- DATESMTD
- DATESQTD
- DATESYTD
- ENDOFMONTH
- ENDOFQUARTER
- ENDOFYEAR
- FIRSTDATE
- FIRSTNONBLANK
- LASTDATE
- NEXTQUARTER
- LASTNONBLANK
- NEXTDAY
- NEXTMONTH
3. Информационные функции
Информационные функции используются для предоставления определенной информации о значениях данных, содержащихся в строках и столбцах. Они оценивают данное условие в функции для заданного значения и возвращают ИСТИНУ или ЛОЖЬ. Например, функция ISERROR вернет ИСТИНУ, если вычисленное значение содержит ошибку.
- CONTAINS
- CUSTOMDATA
- IN оператор/CONTAINSROW функция
- ISBLANK
- ISERROR
- ISEVEN
- ISINSCOPE
- ISLOGICAL
- ISNONTEXT
- ISNUMBER
- ISODD
- ISONORAFTER
- ISTEXT
- LOOKUPVALUE
- USERNAME
4. Логические функции
Логические функции используются для логической оценки выражения или аргумента и возврата ИСТИНА или ЛОЖЬ, если условие выполняется или нет.
- AND
- FALSE
- IF
- IFERROR
- IN
- NOT
- OR
- SWITCH
- TRUE
5. Математические и тригонометрические функции.
Математические и триггерные функции используются для выполнения всевозможных математических функций с указанными значениями. Ниже приведен список всех доступных математических и триггерных функций DAX в Power BI.
- ABS
- ACOS
- ACOSH
- ASIN
- ASINH
- ATAN
- ATANH
- CEILING
- COMBIN
- COMBINA
- COS
- COSH
- CURRENCY
- DEGREES
- DIVIDE
- EVEN
- EXP
- FACT
- FLOOR
6. Статистические функции
Эти функции выполняют статистические функции и функции агрегирования значений данных в выражении DAX в Power BI. Список доступных статистических функций приведен ниже.
- ADDCOLUMNS
- APPROXIMATEDISTINCTCOUNT
- AVERAGE
- AVERAGEA
- AVERAGEX
- BETA.DIST
- BETA.INV
- CHISQ.INV
- CHISQ.INV.RT
- CONFIDENCE.NORM
- CONFIDENCE.T
- COUNT
- COUNTA
- COUNTAX
- COUNTBLANK
- COUNTROWS
- COUNTX
- CROSSJOIN
- DISTINCTCOUNT
- EXPON.DIST
- GENERATE
- GENERATEALL
- GEOMEAN
- GEOMEANX
- MAX
- MAXA
- MAXX
- MEDIAN
- MEDIANX
- MIN
- MINA
- MINX
7. Текстовые функции
Текстовые функции в Power BI очень похожи на строковые функции в Excel. Эти функции оценивают строковые значения.
- BLANK
- CODE
- COMBINEVALUES
- CONCATENATE
- CONCATENATEX
- EXACT
- FIND
- FIXED
- FORMAT
- LEFT
- LEN
- LOWER
- MID
- REPLACE
- REPT
- RIGHT
- SEARCH
- SUBSTITUTE
- TRIM
- UNICHAR
- UPPER
- VALUE
8. Родительско-дочерние функции
Родительские и дочерние функции используются для значений данных, которые являются частью родительско-дочерней иерархии.
- PATH
- PATHCONTAINS
- PATHITEM
- PATHITEMREVERSE
- PATHLENGTH
9. Прочие функции
Там есть куча функций, не подходящих ни к одной конкретной категории. Это тоже очень полезные функции.
- DATATABLE
- ERROR
- EXCEPT
- GENERATESERIES
- GROUPBY
- INTERSECT
- ISEMPTY
- ISSELECTEDMEASURE
- NATURALINNERJOIN
- NATURALLEFTOUTERJOIN
- SELECTEDSMEASURE
- SELECTEDMEASUREFORMATSTRING
- SELECTEDSMEASURENAME
- SUMMARIZECOLUMNS
- Table Constructor
- TREATAS
- UNION
- VAR
Табличные функции в формулах DAX для Power BI используются для применения операций и условий ко всем таблицам. Выходные данные табличных функций используются в качестве входных данных в других выражениях или аргументах в формуле DAX. Результаты этих функций сохраняют отношения между столбцами данной таблицы.
- FILTER
- ALL
- VALUES
- DISTINCT
- RELATEDTABLE
Давайте посмотрим как создать информационную панель Power BI.
Контекст DAX
Концепция контекста DAX необходима для полного понимания языка DAX и того, как он работает в Power BI. Есть два типа контекстов DAX; Контекст строки и контекст фильтра.
- Контекст строки: контекст строки означает учет определенной строки, которая была отфильтрована в выражении DAX. Контекст строки фокусируется на работе формулы с текущей строкой. Этот тип контекста чаще всего применяется к строкам мер.
- Контекст фильтра: контекст фильтра фокусируется на значениях на шаг впереди. В контексте строки мы отфильтровывали и применяли операции к определенным строкам. Но в контексте фильтра выражение применяет фильтр, чтобы сосредоточиться на определенных значениях в строке. Таким образом, контекст фильтра применяется в дополнение к контексту строки, чтобы сузить область вычислений до определенных значений. Контекст фильтра применяется, когда мы используем такие функции, как CALCULATE, FILTER, RELATED, ALL и т. д.
Создание формулы меры с использованием DAX
Шаг 1. Чтобы создать меру с использованием формулы DAX, откройте приложение Power BI Desktop. В Power BI Desktop вы можете создать новую меру двумя способами. Во-первых, щелкните правой кнопкой мыши имя таблицы, в которую вы хотите добавить поле меры, и выберите «Новую меру».
Или вы можете перейти на вкладку «Моделирование» и нажать «Новая мера».
Шаг 2. В строке формул начните с ввода имени новой меры. В предполагаемом сценарии мы используем имя ProjectedSales2019.
Шаг 3: Затем введите имя функции, которую вы хотите использовать. Начните вводить название функции, и в списке появятся предложения. Также появится небольшой раздел с описанием выбранной вами функции. Обратите внимание на изображение ниже, где мы выбрали функцию SUM.
Шаг 4: Затем поставьте круглые скобки «( )» и напишите имя таблицы или столбца, на которые вы ссылаетесь.
Шаг 5: Вы также можете указать столбец в этой таблице. Функция будет применяться к значениям в выбранном столбце. Закройте круглую скобку.
Шаг 6: Кроме того, вы можете добавить больше операторов, других функций, констант, чтобы увеличить сложность формулы.
Созданная нами формула DAX создаст новую меру с именем «ProjectedSales2019».
ProjectedSales2019 = SUM(Sales[TotalSales2018])* 1.08
Здесь мы умножили сумму продаж за предыдущий (2018 год) на 1,08, поскольку в 2019 году ожидается увеличение продаж на 8%. Это даст нам прогнозируемые продажи на 2019 год.
Шаг 7. Сохраните результат, и ваша вновь созданная мера появится в столбце «Поля» под таблицей «Продажи». Рядом с каждым созданным таким полем меры есть значок калькулятора.
Резюме
На этом мы завершаем наш пост о DAX в Power BI. Мы надеемся, что представленная здесь информация была достаточно полезной, и дала вам базовые знания о формулах DAX. Вы можете создать любую логически обоснованную формулу DAX, используя существующие столбцы и таблицы в Power BI, чтобы создавать более подробные и расширенные отчеты.