Главная страница
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
qrcode

Методичка - Формулы и функции DAX. Павел Гришенковфункции и формулыпавел Гришенковфункции и формулы


НазваниеПавел Гришенковфункции и формулыпавел Гришенковфункции и формулы
АнкорМетодичка - Формулы и функции DAX.pdf
Дата02.02.2017
Размер4.47 Mb.
Формат файлаpdf
Имя файлаMetodichka_-_Formuly_i_funktsii_DAX.pdf
оригинальный pdf просмотр
ТипДокументы
#8111
КаталогОбразовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей

Павел Гришенков
ФУНКЦИИ И ФОРМУЛЫ
Павел Гришенков
ФУНКЦИИ И ФОРМУЛЫ
DAX
ФУНКЦИИ И ФОРМУЛЫ

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Год, квартал, месяц – группировка данных в сводной таблице
В сводных таблицах, построенных на основе модели данных, отсутствует прямая возможность группировки данных по датам. Чтобы обойти данный запрет нужно добавить несколько расчетных столбцов в Power Pivot.
Год :=
YEAR
([Дата]) - возвращает для заданной даты год в виде четырехзначного числа от 1900 до 9999.
Номер квартала =
QUOTIENT
((
MONTH
([Дата])+2);3) - функция MONTH возвращает месяц в виде числа от 1
(январь) до 12 (декабрь).Функция QUOTIENT выполняет деление и возвращает только целочисленную часть результата. Эта функция используется, если не нужно учитывать остаток от деления.
Месяц :=
FORMAT
([Дата];
"MMMM"
) - преобразует значение в текст в указанном формате. Подробнее о пользовательском формате даты и времени для функции FORMAT (DAX) можно прочитать по ссылке
(
https://support.office.com/ru-ru/article/Пользовательские-форматы-даты-и-времени-для-функции-FORMAT-DAX-- dc60287d-5123-4521-840c-05b3c301e09f?ui=ru-RU&rs=ru-RU&ad=RU
)
Альтернативный вариант
=
SWITCH
(
MONTH
([Дата]);1;
"Январь"
;2;
"Февраль"
;3;
"Март"
;4;
"Апрель"
;5;
"Май"
;6;
"Июнь"
;7;
"Июль"
;8;
"Август"
;
9;
"Сентябрь"
;10;
"Октябрь"
;11;
"Ноябрь"
;12;
"Декабрь"
) - Функция SWITCH вычисляет выражение на основе списка значений и возвращает одно из нескольких возможных результирующих выражений; похожа на функцию
ВЫБОР.
Номер недели = “нд.”&
WEEKNUM
([Дата]) - функция WEEKNUM возвращает номер недели для заданных даты и года в соответствии со значением тип_возврата. Номер недели указывает порядковый номер недели в течение года.Тип возвращаемых данных: 1 - неделя начинается в Воскресенье, дни недели нумеруются с 1 по 7; 2 - неделя начинается в понедельник: lни недели нумеруются с 1 по 7.
День : =
FORMAT
([Дата];
"DDD"
)
Справочник по другим функциям даты и времени (DAX) по ссылке (
https://support.office.com/ru- ru/article/Функции-даты-и-времени-DAX--052a31ec-10b5-4481-b3a3-66ff9144e1c1?ui=ru-RU&rs=ru-RU&ad=RU
)
Если выработаете в Excel 2016 Preview можно избежать затрат времени по созданию дополнительных
столбцов с годом, кварталом, месяцем, их сортировкой и созданием доп. таблицы «Календарь». Достаточно
начать работать с полем «Дата» в сводной таблице. Программа автоматически достроит данные в таблице
Power Pivot.
Год :=
FORMAT
([Дата];
"yyyy"
)
Квартал :=
CONCATENATE
(
"Квартал"
;
INT
((
MONTH
([Дата]) + 2) / 3))
Индекс месяца :=
MONTH
([Дата])

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Месяц :=
FORMAT
([Дата];
"MMM"
)
Месяца будут отсортированы по номеру, поэтому их можно сразу использовать в фильтрах.
Но этот способ работает, если в столбце «Дата» присутствуют значения за ряд лет.
Ручная сортировка месяцев и дней в сводной таблице
По умолчанию месяцы и дни, созданные пользователем в доп. столбцах, в сводной таблице упорядочены не
будут. Это же справедливо и для срезов. Чтобы привести их к виду январь, февраль, март и т.д. или понедельник, вторник, среда и т.д. потребуется немного усилий.
Способ 1. Подходит для сводных таблиц и срезов
В Power Pivot создаем два новых столбца
Номер дня :=
WEEKDAY
([Дата];2) - возвращает число от 1 до 7, указывающее день недели для даты. По умолчанию дни недели считаются от воскресенья (1) до субботы (7).Число, определяющее возвращаемое значение: 1- неделя начинается в воскресенье (1) и заканчивается в субботу (7); 2 - неделя начинается в понедельник (1) и заканчивается в воскресенье (7); 3 - неделя начинается в понедельник (0) и заканчивается в воскресенье (6).
Номер месяца :=
MONTH
([Дата])
Далее на панели инструментов Power Pivot находим кнопку «Сортировать по другому столбцу или отменить существующую сортировку»
В появившемся диалоговом окне указываем сначала столбец, который требует сортировки (месяц и день), потом выбираем столбец, по которому будет идти сортировка (номер месяца или номер дня).

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Способ 2. Подходит только для сводных таблиц (работает в Excel 2016 Preview).
В сводной таблице кликнуть на месяц и появившемся окне выбрать «Сортировка от А до Я». Месяца (дни недели) автоматически встанут в привычный порядок.
Способ 3. Подходит только для сводных таблиц
В сводной таблице кликнуть на месяц и в появившемся окне выбрать «Дополнительные параметры сортировки», далее кнопку «Дополнительно», в новом окне снимаем галочку с пункта «Автосортировка» и выбираем сортировка по первому ключу «Январь, Февраль и т.д.», жмем ОК.
Добавление месяц и дней, созданных пользователем, во временную шкалу
Предположим, что вам необходимо добавить временную шкалу к уже имеющейся сводной таблице и разместить на ней названия месяцев или дней. Сделать это без дополнительных преобразований не представляется возможным, т.к. временная шкала работает с данными типа data, а месяцы и дни, полученные ранее в
расчетных столбцах Power Pivot–текст. Что делать?
В окне Power Pivot находим кнопку «Таблица дат» и нажимаем создать

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Автоматически получаем новую таблицу
Чтобы данная конструкция заработала необходимо связать две таблицы через поле «Дата». Выбираем - «Режим представления диаграмм» и устанавливаем связь как показано на рисунке.
Теперь переходим в Excel. Выбираем закладку «Анализ», пункт «Вставить временную шкалу». Отмечаем поле
«Date» из созданной таблицы. В результате получаем искомую шкалу, связанную с нашей сводной таблицей.
В Excel 2016 Preview присутствует прямая возможность добавления поля «Дата» во временную шкалу. При
этом происходит автоматическая фильтрация данных по годам, кварталам, месяцам.
Несбалансированная иерархия
Чтобы иметь возможность произвольно выбирать месяцы, кварталы в годах, необходимо создать несбалансированную иерархию. В окне Power Pivot переходим «Представление диаграммы» и окне необходимой таблицы создаем новую иерархию. Переименовываем ее и добавляем в нее необходимые элементы путем простого переноса мышкой (в примере это Год, Квартал, Месяц). Если таблицы связаны между
собой и необходимый элемент находится в таблице-доноре, его необходимо предварительно экспортировать
в родительскую таблицу функцией RELATED.

Гришенков Павел
При построении сводной выбирайте поля иерархии, а не таблицы!
Скрыть из набора клиентских средств
Если требуется, чтобы один из столбцов (или группа) не отображались в полях сводной таблицы, достаточно в окне Power Pivot выбрать заголовок столбца средств»
grishenkov_p@mail.ru
сводной выбирайте поля иерархии, а не таблицы!
Скрыть из набора клиентских средств
Если требуется, чтобы один из столбцов (или группа) не отображались в полях сводной таблицы, достаточно в выбрать заголовок столбца и в контекстном меню указать пункт «Скрыть из набора клиентских
vk.com/pavelgrishenkov
Если требуется, чтобы один из столбцов (или группа) не отображались в полях сводной таблицы, достаточно в и в контекстном меню указать пункт «Скрыть из набора клиентских

Гришенков Павел
Простейшие меры
Простейшие меры вводятся в область вычислений. Проще всего использовать для этого пиктограмму на панели инструментов в Power Pivot.
Сумма :=
SUM
([Сумма])
Среднее :=
AVERAGE
([Сумма])
Число элементов :=
COUNTA
([Сумма])
Число различных элементов :=
DISTINCTCOUNT
Максимум :=
MAX
([Сумма])
Минимум :=
MIN
([Сумма])
Данные меры аналогичны показателям, которые могут быть получены непосредственно в самой сводной
таблице.
Справочник по другим статистическим функциям располагается по ссылке ( ru/article/Статистические-функции-DAX--
grishenkov_p@mail.ru
вводятся в область вычислений. Проще всего использовать для этого пиктограмму на панели
DISTINCTCOUNT
([Сумма])
Данные меры аналогичны показателям, которые могут быть получены непосредственно в самой сводной
Справочник по другим статистическим функциям располагается по ссылке ( https://support.office.com/ru
--68df5baa-b6f5-4064-befb-d5d8c6c0a7be?ui=ru
vk.com/pavelgrishenkov
вводятся в область вычислений. Проще всего использовать для этого пиктограмму на панели
Данные меры аналогичны показателям, которые могут быть получены непосредственно в самой сводной
https://support.office.com/ru- d5d8c6c0a7be?ui=ru-RU&rs=ru-RU&ad=RU
)

Гришенков Павел
Суммирование с игнорированием
Найдем с помощью меры сумму всех продаж вне зависимости от фильтров (менеджер, результат в сводную. Функция SUM (DAX)
строки в таблице или все значения в столбце, не учитывая применяемые фильтры. Эта функция полезна для очистки фильтров и создания вычислений по всем строкам таблицы.
выражение в контексте, изменяемом ук
(
https://support.office.com/ru-ru/article/Функции
RU&rs=ru-RU&ad=RU
)
Мера 1:=
CALCULATE
(
SUM
([Сумма]);
ALL
('Демо'))
Максимальная единичная сделка :=
CALCULATE
Суммирование с учетом всех фильтров таблицы
Попробуем учесть все фильтры. Для этого нам потребуется новая функция из разряда фильтров
ALLEXCEPT (DAX), она удаляет все фильтры контекста в таблице, кроме фильтров, примененных к указанным
столбцам.
Мера 2:=
CALCULATE
(
SUM
([Сумма]);
ALLEXCEPT
grishenkov_p@mail.ru
Суммирование с игнорированием всех фильтров таблицы
с помощью меры сумму всех продаж вне зависимости от фильтров (менеджер,
Функция SUM (DAX) суммирует все числа в столбце. Функция ALL (
строки в таблице или все значения в столбце, не учитывая применяемые фильтры. Эта функция полезна для очистки фильтров и создания вычислений по всем строкам таблицы. Функция CALCULATE (DAX) вычисляет
выражение в контексте, изменяемом указанными фильтрами. Более подробно о данных функциях ru/article/Функции-фильтров-DAX--9beae5b1-7a2f-495e-a205
('Демо'))
CALCULATE
(
MAX
([Сумма]);
All
('Демо'))
Суммирование с учетом всех фильтров таблицы
Для этого нам потребуется новая функция из разряда фильтров
ALLEXCEPT (DAX), она удаляет все фильтры контекста в таблице, кроме фильтров, примененных к указанным
ALLEXCEPT
('Демо';'Демо'[Категория];'Демо'[Менеджер]))
vk.com/pavelgrishenkov
таблицы
с помощью меры сумму всех продаж вне зависимости от фильтров (менеджер, категория) и поместим
Функция ALL (DAX) возвращает все строки в таблице или все значения в столбце, не учитывая применяемые фильтры. Эта функция полезна для
Функция CALCULATE (DAX) вычисляет
Более подробно о данных функциях a205-c3b8f3724362?ui=ru-
Для этого нам потребуется новая функция из разряда фильтров - Функция
ALLEXCEPT (DAX), она удаляет все фильтры контекста в таблице, кроме фильтров, примененных к указанным
('Демо';'Демо'[Категория];'Демо'[Менеджер]))

Гришенков Павел
Подсчет количества операций
Посчитаем количество операций, которое совершил каждый менеджер, результат должен также дифференцироваться по категориям товаров.
указанной таблице или в таблице, определяемой выражением.
Мера 3:=
CALCULATE
(
COUNTROWS
('Демо');
Подсчет количества менеджеров
Подсчитаем количество менеджеров двумя вариантами. разных ячеек в столбце, содержащих числа, но сработала и на тексте.
таблицу из одного столбца, содержащую уникальные значения
повторяющиеся значения удаляются, и возвращаются только уникальные значения.
Мера 4:=
COUNTROWS
(
DISTINCT
('Демо'[
Мера 5:=
DISTINCTCOUNT
('Демо'[Менеджер])
grishenkov_p@mail.ru
Подсчет количества операций в разрезе фильтров
Посчитаем количество операций, которое совершил каждый менеджер, результат должен также дифференцироваться по категориям товаров. Функция COUNTROWS (DAX)подсчитывает число строк в
указанной таблице или в таблице, определяемой выражением.
('Демо');
ALLEXCEPT
('Демо';'Демо'[Категория];'Демо'[Менеджер]))
Подсчет количества менеджеров
Подсчитаем количество менеджеров двумя вариантами. Функция DISTINCTCOUNT подсчитывает количество еек в столбце, содержащих числа, но сработала и на тексте. Функция DISTINCT (DAX) возвращает
таблицу из одного столбца, содержащую уникальные значения из указанного столбца.
повторяющиеся значения удаляются, и возвращаются только уникальные значения.
'[Менеджер]))
('Демо'[Менеджер])
vk.com/pavelgrishenkov
Посчитаем количество операций, которое совершил каждый менеджер, результат должен также
)подсчитывает число строк в
('Демо';'Демо'[Категория];'Демо'[Менеджер]))
Функция DISTINCTCOUNT подсчитывает количество
Функция DISTINCT (DAX) возвращает
из указанного столбца. Другими словами,

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Три формулы для подсчета показателей менеджера
Нам необходимо найти суммарный показатель по менеджеру Тарасову. Для этого можно применить три варианта формул.
Мера 6:=
SUMX
(
FILTER
('Демо';'Демо'[Менеджер]=
"Тарасов"
);[Сумма])
Функция SUMX (DAX) возвращает сумму результатов выражения, вычисляемого для каждой строки в таблице.
Синтаксис данной формулы SUMX(, ) - Таблица, содержащая строки, для которых будет вычисляться выражение.Выражение, которое будет вычисляться для каждой строки таблицы. Данная функция относится к разряду математических и тригонометрических функции (DAX) (
https://support.office.com/ru- ru/article/Математические-и-тригонометрические-функции-DAX--c780a73e-944e-46c4-a367-b50bff1767e2?ui=ru-
RU&rs=ru-RU&ad=RU
) Она работает в связке с функцией FILTER, которая возвращает таблицу, представляющую
подмножество другой таблицы или выражения. Синтаксис FILTER(
,)Таблица для фильтрации.
Аргумент table также может быть выражением, результатом которого является таблица.Логическое выражение, вычисляемое для каждой строки таблицы. Например, [Количество] > 0 или [Регион ] = "France". Более подробно здесь ( https://msdn.microsoft.com/ru-ru/library/ee634966(v=sql.110).aspx
)
Мера 7:=
CALCULATE
(
SUM
([Сумма]);'Демо'[Менеджер]=
"Тарасов"
)
Синтаксисфункции CALCULATE(,,…) Вычисляемое выражение. Список логических выражений или табличных выражений, определяющих фильтр, с разделителями-запятыми. Данная функция
является подобием СУММЕСЛИМН, СЧЁТЕСЛИМН, СРЗНАЧЕСЛИМН, т.к. вместо SUMмогут быть другие
выражения (
https://support.office.com/ru-ru/article/Функция-CALCULATE-DAX--19654bc2-aa88-4f6c-a0b9-
6fa7a59c4432?ui=ru-RU&rs=ru-RU&ad=RU
)
Мера 8:=
CALCULATE
(
SUM
('Демо'[Сумма]);
FILTER
('Демо';'Демо'[Менеджер]=
"Тарасов"
))
Последняя формула является гибридом ранее рассмотренных вариантов.

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Проценты
Сравним показатели Тарасова с показателями других менеджеров (найдем долю менеджера). При этом, чтобы
не загромождать подсчеты, будем использовать в формуле ранее полученную меру.
Мера 9:=
SUM
('Демо'[Сумма])/[Мера 7]
Две дополнительные формулы:
Отличие менеджера Тарасова от других менеджеров :=
SUM
('Демо'[Сумма])-[Мера 7]
Приведенное отличие :=(
SUM
('Демо'[Сумма])-[Мера 7])/[Мера 7]
Теперь найдем процентную долю каждого менеджера в общем объеме. Данный показатель можно также получить с помощью дополнительных вычислений в сводной таблице без добавления меры.
Мера 10:=
SUM
([Сумма])/
SUMX
(
ALL
('Демо');[Сумма])
Работа с датами
Создадим меру, которая будет учитывать только данные за 2014 год
Мера 11: =
SUMX
(
FILTER
('Демо';
YEAR
('Демо'[Дата])=2014);[Сумма])

Гришенков Павел
Следующая мера будет учитывать только даты, которые попали в 1 или 2 квартал. является ли один из аргументов TRUE, и если да, то возвращает значение TRUE. Функция возвращает значение
FALSE, если оба аргумента имеют значение FALSE.
(
https://support.office.com/ru-ru/article/Логические
RU&rs=ru-RU&ad=RU
)
Мера 12: =
CALCULATE
(
SUM
([Сумма]);
FILTER
(Квартал)]=
"Квартал2"
)))
Накопительный итог
Посчитаем накопительный итог по дням. Для этого перейдем в раздел
(DAX) по ссылке (
https://support.office.com/ru e4e8-42a8-b205-e1f0f9301b26?ui=ru-RU&rs=ru
DATESBETWEEN (DAX) возвращает таблицу, содержащую ст
заканчивая значением end_date.
Вариант 1.
Мера 13:
=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
grishenkov_p@mail.ru
будет учитывать только даты, которые попали в 1 или 2 квартал. Функция OR (DAX) п является ли один из аргументов TRUE, и если да, то возвращает значение TRUE. Функция возвращает значение оба аргумента имеют значение FALSE. Другие логические функции (DAX) по ссылке le/Логические-функции-DAX-3e6f6898-8d50-4d0f-
FILTER
('Демо';
Or
('Демо'[Дата (Квартал)]=
"Квартал1"
Посчитаем накопительный итог по дням. Для этого перейдем в раздел - Функции логики операций со временем https://support.office.com/ru-ru/article/Функции-логики-операций-со
RU&rs=ru-RU&ad=RU
) и выберем подходящую функцию.
DATESBETWEEN (DAX) возвращает таблицу, содержащую столбец с датами, начиная со значения start_date и
('Демо';'Демо'[Сумма]);
DATESBETWEEN
('Демо'[Дата];
"06.01.2014"
vk.com/pavelgrishenkov
Функция OR (DAX) проверяет, является ли один из аргументов TRUE, и если да, то возвращает значение TRUE. Функция возвращает значение по ссылке
-9e2c-99bb2aa1a8bc?ui=ru-
"Квартал1"
;'Демо'[Дата
Функции логики операций со временем со-временем-DAX-0571dcda- и выберем подходящую функцию. Функция
олбец с датами, начиная со значения start_date и
"06.01.2014"
;
LASTDATE
('Демо'[Дата])))

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Данная формула будет работать без добавления среза.
Вариант 2.
Требует добавления таблицы «Calendar». Данная таблица формируется автоматически при клике по кнопке –
«Таблица дат».
Мера 14:
=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
DATESBETWEEN
('Calendar'[Date];
"06.01.2014"
;
LASTDATE
('Calendar'[Da
te])))

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
После этого следует связать столбец «Дата» таблицы «Демо» и столбец «Date»таблицы «Calendar».
Далее переходим в Excel и подключаем срез, выбирая поле «Date».

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Вариант 3.
Данный вариант реализуется аналогично предыдущему, за одним исключением - подключаемая таблица
«Календарь» формируется вручную (столбец «Дата» фильтруется на дубликаты в Excel, далее загружается в модель данных как отдельная таблица, после чего связывается с таблицей «Демо»).
Мера 15:
=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
DATESBETWEEN
('Календарь'[Календарь];
"06.01.2014"
;
LASTDATE
('Кал
ендарь'[Календарь])))
Дата начала отсчета во всех трех формулах (06.01.2014) проставляется вручную. Чтобы полностью автоматизировать расчеты, немного меняем формулы:
Мера 13:
=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
DATESBETWEEN
('Демо'[Дата];
MINX
(
ALL
('Демо');'Демо'[Дата]);
LASTDA
TE
('Демо'[Дата])))
Мера 14:
=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
DATESBETWEEN
('Calendar'[Date];
MINX
(
ALL
('Демо');'Демо'[Дата]);
LAST
DATE
('Calendar'[Date])))
Мера 15:
=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
DATESBETWEEN
('Календарь'[Календарь];
MINX
(
ALL
('Демо');'Демо'[Да
та]);
LASTDATE
('Календарь'[Календарь])))
Функция MINX (DAX) возвращает наименьшее числовое значение, полученное в результате вычисления
выражения в каждой строке таблицы.

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Сумма последней сделки в месяце, квартале
Работа строится на основе двух новых функций: функция ENDOFMONTH (DAX) возвращает последний день
месяца в текущем контексте для указанного столбца дат; функция ENDOFQUARTER (DAX) возвращает
последний день квартала в текущем контексте для указанного столбца дат. Другие функции логики операций со временем (DAX) (
https://support.office.com/ru-ru/article/Функции-логики-операций-со-временем-DAX-
0571dcda-e4e8-42a8-b205-e1f0f9301b26?ui=ru-RU&rs=ru-RU&ad=RU
)
Мера 16:=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
ENDOFMONTH
('Демо'[Дата]))
Мера 17:
=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
ENDOFQUARTER
('Демо'[Дата]);
ALLEXCEPT
('Демо';'Демо'[Дата
(Год)];'Демо'[Дата (Квартал)]))
Или
Мера 17:=
CALCULATE
(
SUMX
('Демо';'Демо'[Сумма]);
ENDOFQUARTER
('Демо'[Дата]);
ALL
('Демо'))

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Накопительный итог по месяцу, кварталу
Работа строится на основе двух новых функций: функция DATESMTD (DAX) возвращает таблицу, содержащую
столбец дат за месяц до текущей даты, в текущем контексте; функция DATESQTD (DAX) возвращает таблицу,
содержащую столбец дат за текущий квартал в текущем контексте.
Мера 18:=
CALCULATE
(
SUM
('Демо'[Сумма]);
DATESMTD
('Демо'[Дата]);
ALL
('Демо'))
Мера 19:=
CALCULATE
(
SUM
('Демо'[Сумма]);
DATESQTD
('Демо'[Дата]);
ALL
('Демо'))

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Установка «финансового» года
Предположим, что по условиям демонстрационного примера наш фин. год длится с 1.11.2014 по 31.10.2015. Как получить накопительный итог за указанный промежуток времени? Функция DATESYTD (DAX) возвращает
таблицу, содержащую столбец дат за текущий год в текущем контексте. Синтаксис DATESYTD(<даты>
[,<дата_окончания_года>])Столбец, содержащий даты. Строковый литерал, определяющий дату окончания года.
Значение по умолчанию — 31 декабря.
Мера 20:
=
CALCULATE
(
SUM
('Демо'[Сумма]);
DATESYTD
('Демо'[Дата];
"31.10.2014"
);
ALLEXCEPT
('Демо';'Демо'[Дата]))

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Округление
Посчитаем сумму сделок без НДС. Для этого добавим новый столбец с формулой = [Сумма с НДС]/118*100;0).
Полученный результат округлим с помощью встроенной функции DAX – ROUND (округляет число до указанного
количества разрядов).
=
ROUND
([Сумма с НДС]/118*100;0)
Еще несколько полезных функций для округления
Функция CEILING (DAX) округляет число в большую сторону до ближайшего целого или до ближайшего числа, кратного заданной значимости.
Функция DIVIDE (DAX) выполняет деление и возвращает только целую часть результата деления. Эта функция используется, когда нужно отбросить остаток от деления.
Функция FLOOR (DAX) округляет число в меньшую сторону (к нулю) до ближайшего числа, кратного заданной значимости.
Функция INT (DAX) округляет число в меньшую сторону до ближайшего целого.
Функция ISO.CEILING (DAX) округляет число в большую сторону до ближайшего целого или до ближайшего числа, кратного заданной значимости.
Функция MROUND (DAX) возвращает число, округленное до кратного заданной значимости.
Функция ROUNDDOWN (DAX) округляет число вниз, к нулю.
Функция ROUNDUP (DAX) округляет число в большую сторону, от 0 (нуля).
Функция TRUNC (DAX) усекает число до целого, удаляя дробную часть.

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Переименование столбцов Power Pivot
Всегда переименовывайте столбцы в таблицах Excel, а не в модели данных. При обновлении сводной
таблицы, внесенные вами изменения будут потеряны.
Операторы DAX
Существует четыре разных типа операторов вычисления: арифметические операторы, операторы сравнения,
операторы объединения текста и логические операторы (
https://support.office.com/ru-ru/article/Справочник-по- операторам-DAX-для-Power-Pivot-DAX-96f07a52-021c-435e-9249-9d3b6e90d9c9?ui=ru-RU&rs=ru-RU&ad=RU
).
Арифметические операторы
Используются для выполнения основных математических операций, таких как сложение, вычитание, умножение, объединение чисел и получения числовых результатов. Пример =[Сумма с НДС]-[Сумма без НДС]
Полностью соответствуют операторам Excel.
Операторы сравнения
Используются для сравнения двух значений. При сравнении двух значений с использованием этих операторов результат представляет собой логическое значение: TRUE или FALSE. Значения: больше, меньше, равно, больше или равно, меньше или равно, не равно.
Оператор объединения текста
Амперсанд (&) используется, чтобы объединить (сцепить) две или более текстовые строки для формирования единого фрагмента текста.
Логические операторы
Для объединения выражений и получения единого результата используются логические операторы (&&) и (||).
&& (двойной амперсанд) - создает между двумя выражениями, каждое из которых дает логический результат, условие логического И. Если оба выражения возвращают значение TRUE, то их сочетание также возвращает значение TRUE. В противном случае возвращается значение FALSE.

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
|| (двойная вертикальная черта) - создает между двумя логическими выражениями условие логического ИЛИ.
Если какое-либо из выражений возвращает значение TRUE, результат будет TRUE. Только когда оба выражения имеют значение FALSE, результат будет FALSE.
Вытягивание значений
Добавим в модель данных новую таблицу с количеством сделок
Рассчитаем сумму одной сделки по каждой записи (т.е. сумма с НДС/количество сделок). Сделать напрямую это не удастся, поэтому необходимо связать таблицы в Power Pivot. Связывание двух таблиц будет проходить по новому столбцу – ключу. Его формула:
=[Дата]&[Менеджер]&[Категория]&[Контрагент]
Значения, полученные с помощью этой формулы, будут уникальны в пределах своих таблиц

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Связываем таблицы
Вытягиваем значения с количеством сделок по каждой записи с помощью функции RELATED. Функция RELATED
(DAX) возвращает связанное значение из другой таблицы. Функция RELATED требует наличия связи между текущей таблицей и таблицей со связанными данными. Пользователь задает столбец, содержащий нужные данные, и функция проходит по существующей связи «многие к одному», чтобы получить значение из указанного столбца в связанной таблице. Когда функция RELATED выполняет подстановку, она проверяет все значения в указанной таблице независимо от фильтров, которые могли быть применены (
https://support.office.com/ru- ru/article/Функция-RELATED-DAX-5d0eee69-8acd-4c3e-a0af-ff23ba01a7bf?ui=ru-RU&rs=ru-RU&ad=RU
).
=
RELATED
('Демо_Сделки'[Количество сделок])

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Теперь можно использовать полученный столбец «Число сделок» для расчетов.
Внимание! Не пытайтесь использовать формулы типа =[Сумма без НДС]/'Демо_Сделки'[Количество сделок].
Они будут выдавать ошибки.
Чтобы исправить результат, модернизируем предыдущую формулу
=
ROUND
([Сумма без НДС]/
RELATED
('Демо_Сделки'[Количество сделок]);2)

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Текстовые функции. Фамилия, имя, отчество
Имеется таблица Excel, как на рисунке представленном ниже. Задача в Power Pivot получить столбец с данными типа – Фамилия И.О.
Для извлечения Фамилии нам потребуется формула
=
LEFT
([Менеджер];
FIND
(
" "
;[Менеджер])-1)
Функция LEFT (DAX) возвращает указанное количество символов с начала текстовой строки. Функция FIND (DAX)
возвращает начальную позицию одной текстовой строки в другой текстовой строке. Функция FIND учитывает регистр.

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Находим позицию первого пробела в строке, задаем количество символов на 1 меньше и извлекаем значение.
Теперь получим вспомогательный столбец, который будет содержать Имя и Отчество менеджера
=
MID
([Менеджер];
FIND
(
" "
;[Менеджер])+1;100)
Функция MID (DAX) возвращает строку символов из середины текстовой строки с учетом начальной позиции и длины.
Находим позицию первого пробела в строке, переходим к позиции первой буквы имени и извлекаем имя и отчество, задав заведомо большее количество символов чем надо – цифра 100.
Получаем Имя менеджера, формула работает аналогично формуле Фамилия, только применяется она к тех. столбцу «Имя Отчество»
=
LEFT
([Имя Отчество];
FIND
(
" "
;[Имя Отчество])-1)

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Извлекаем оставшееся значение – Отчество
=
RIGHT
([Имя Отчество];
LEN
([Имя Отчество])-
LEN
([Имя])-1)
Функция LEN (DAX) возвращает число символов в текстовой строке.
Функция RIGHT (DAX) возвращает последний символ или последние символы текстовой строки в зависимости от указанного количества символов.
Находим длину строки в столбце «Имя Отчество», далее из полученного значения отнимаем количество символов Имени, убираем пробел (-1), извлекаем справа Отчество. Альтернативный вариант формулы
=
MID
([Имя Отчество];
FIND
(
" "
;[Имя Отчество])+1;100)

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Завершаем построение искомого столбца «Фамилия И.О.» формулой
=[Фамилия]&
" "
&
CONCATENATE
(
Left
([Имя];1);
"."
)&
CONCATENATE
(
LEFT
([Отчество];1);
"."
)
Функция CONCATENATE соединяет две текстовые строки в одну. Соединяемые элементы могут быть текстом, числами, логическими значениями, представленными в виде текста, или сочетанием таких элементов. Также можно использовать ссылку на столбец, если столбец содержит подходящие значения. Функция CONCATENATE в
DAX принимает только два аргумента, в то время как функция CONCATENATE в Excel — до 255 аргументов. Чтобы объединить несколько столбцов, можно создать последовательность вычислений, но предпочтительнее использовать оператор объединения (&) для их соединения с помощью более простого выражения. Чтобы непосредственно использовать текстовые строки, а не ссылки на столбец, необходимо заключить каждую строку в двойные кавычки.
Текстовые функции. «Разбор строки»
Приступим у разбору столбца «Документ»

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Извлекаем Дату
=
VALUE
(
RIGHT
([Документ];10))
Полученное значение будет текстом, поэтому трансформируем его в число - функция VALUE (DAX)
Теперь в отдельный столбец выводим Наименование документа. Нам очень повезло: все записи содержат одно название «Накладная» (9 символов, зацепимся за это).
=
LEFT
([Документ];9)
Последний штрих – Номер документа
=
CONCATENATE
(
"



"
;
MID
([Документ];
LEN
([Наим. документа])+1;
SEARCH
(
" "
;[Документ])-
LEN
([Наим.
документа])-1))
Формула содержит уже знакомые функции за исключением одной - функция SEARCH (DAX) возвращает номер позиции, начиная с которой обнаружен указанный символ или текстовая строка, если считать слева направо. При поиске не учитывается регистр.

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
О других полезных текстовых функциях DAX читайте по ссылке (
https://support.office.com/ru-ru/article/Текстовые- функции-DAX-4dcc8e50-c6a0-45c5-890b-b81c8af67a53?ui=ru-RU&rs=ru-RU&ad=RU
)
Функция FIXED (DAX) округляет число до указанного количества десятичных знаков и возвращает результат в виде текста. Можно задать, чтобы результат возвращался с пробелами или без них.
Функция FORMAT (DAX) преобразует значение в текст в указанном формате.
Функция LOWER (DAX) преобразует все буквы в текстовой строке в нижний регистр.
Функция REPLACE (DAX) функция REPLACE на основе указанного числа символов заменяет часть текстовой строки другой строкой.
Функция REPT (DAX) повторяет текст заданное количество раз. Используйте функцию REPT для заполнения ячейки определенным количеством экземпляров текстовой строки.
Функция SUBSTITUTE (DAX) заменяет существующий текст новым в текстовой строке.
Функция TRIM (DAX) удаляет все пробелы из текста, за исключением единичных пробелов между словами.
Функция UPPER (DAX) переводит все буквы текстовой строки в верхний регистр.

Гришенков Павел
grishenkov_p@mail.ru
vk.com/pavelgrishenkov
Полезные адреса
Справочник по функциям DAX (DAX)
В этом разделе приводится подробный синтаксис функций и операторов, используемых в формулах языка выражений анализа данных (DAX), и примеры. Общие сведения о языке DAX см. в разделе Справочник по выражениям анализа данных (DAX).
Текстовые функции (DAX)
Выражения анализа данных (DAX) включают набор текстовых функций, основанных на библиотеке строковых функций в Excel, которые были изменены для работы с таблицами и столбцами.
Функции даты и времени (DAX)
Многие функции даты и времени в DAX весьма схожи с функциями даты и времени Excel. Однако в функциях DAX используется тип данных datetime, и они могут принимать в качестве аргумента значения из столбца.
Функции фильтров (DAX)
Функции фильтра и значений DAX относятся к самым мощным и сложным, значительно отличаясь от функций
Excel. Функции поиска работают с использованием таблиц и связей, как в базе данных.
Краткое руководство. Обучение основам DAX за 30 минут
Данное краткое руководство предназначено для пользователей, начинающих работать с Power Pivot в Excel или с проектами табличной модели, созданными в SQL Server Data Tools.
Информационные функции (DAX)
Информационная функция проверяет ячейку или строку, указанные в качестве аргумента, и сообщает, соответствует ли значение ожидаемому типу. Например, функция ISERROR возвращает значение TRUE, если упоминаемое значение содержит ошибку.
Логические функции (DAX)
Логические функции обрабатывают выражение и возвращают сведения о значениях или наборах в выражении.
Например, с помощью функции IF можно проверить результат выражения и создать условные результаты.
Математические и тригонометрические функции (DAX)
Математические функции в выражениях анализа данных (DAX) весьма схожи с математическими и тригонометрическими функциями Excel. В этом разделе перечислены математические функции, поддерживаемые языком DAX.
Статистические функции (DAX)
Язык выражения анализа данных предоставляет множество функций для создания агрегатов, таких как суммы, количества и средние значения. Эти функции весьма схожи со статистическими функциями, используемыми в
Microsoft Excel.

перейти в каталог файлов

Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей

Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей