какая dax функция используется для того чтобы произвести группировку пдз по периодам
PARALLELPERIOD
Возвращает таблицу, содержащую столбец дат, который представляет период, параллельный датам в указанном столбце dates, в текущем контексте, с датами, сдвинутыми на указанное число интервалов вперед или назад во времени.
Синтаксис
Параметры
Возвращаемое значение
Таблица, содержащая один столбец значений даты.
Remarks
Эта функция принимает текущий набор дат в столбце, указанном параметром dates, сдвигает первую и последнюю дату на указанное число интервалов, а затем возвращает все смежные даты между двумя сдвинутыми датами. Если интервал является частичным диапазоном месяца, квартала или года, то все неполные месяцы в результатах также заполняются для завершения всего интервала.
Аргумент dates может принимать любое из следующих значений:
Ограничения логических выражений описаны в разделе Функция CALCULATE.
Если число, указанное для number_of_intervals, положительное, даты в dates перемещаются вперед во времени. Если число отрицательное, даты в dates сдвигаются назад во времени.
Таблица результатов содержит только даты, которые отображаются в значениях столбца базовой таблицы.
Функция PARALLELPERIOD похожа на функцию DATEADD, за исключением того, что PARALLELPERIOD всегда возвращает полные периоды на заданном уровне детализации вместо частичных периодов, возвращаемых функцией DATEADD. Например, если у вас есть набор дат, которые начинаются 10 июня и заканчиваются 21 июня того же года, и вы хотите сместить этот интервал вперед на один месяц, функция PARALLELPERIOD возвратит все даты следующего месяца (с 1 июля по 31 июля). Однако если вместо этого используется DATEADD, результат будет включать только даты с 10 июля по 21 июля.
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Пример
В следующем примере формулы создается мера, которая вычисляет продажи через Интернет за предыдущий год.
GROUPBY
Функция GROUPBY аналогична функции SUMMARIZE. Однако GROUPBY не выполняет неявную операцию CALCULATE ни для каких добавляемых ею столбцов расширения. GROUPBY позволяет использовать новую функцию CURRENTGROUP внутри агрегатных функций в добавляемых столбцах расширения. GROUPBY используется для выполнения нескольких агрегатов в одном сканировании таблицы.
Синтаксис
Параметры
Термин | Определение |
---|---|
table | Любое выражение DAX, возвращающее таблицу данных. |
groupBy_columnName | Имя существующего столбца в таблице (или связанной таблице), по которому группируются данные. Этот параметр не может быть выражением. |
name | Имя, присвоенное новому столбцу, который добавляется в список столбцов GroupBy, заключенное в двойные кавычки. |
expression | Одна из статистических функций X с первым аргументом — CURRENTGROUP(). Полный список поддерживаемых статистических функций X см. в разделе «С функцией CURRENTGROUP» ниже. |
Возвращаемое значение
Таблица с выбранными столбцами для аргументов groupBy_columnName и столбцов расширения, назначенных с помощью аргументов имени.
Remarks
Функция GROUPBY выполняет следующие действия.
Начинает с указанной таблицы (и всех связанных таблиц в направлении «к одному»).
Создает группирование, используя все столбцы GroupBy (которые должны существовать в таблице из шага 1).
Каждая группа является одной строкой в результате, однако представляет набор строк в исходной таблице.
Для каждой группы оценивает добавляемые столбцы расширения. В отличие от функции SUMMARIZE, подразумеваемая операция CALCULATE не выполняется, а группа не помещается в контекст фильтра.
Каждый столбец, для которого определяется имя, должен иметь соответствующее выражение; в противном случае возвращается ошибка. Первый аргумент name определяет имя столбца в результатах. Второй аргумент expression определяет вычисление, выполняемое для получения значения каждой строки в этом столбце.
Значение groupBy_columnName должно находиться в таблице или связанной таблице.
Каждое имя должно быть заключено в двойные кавычки.
Функция группирует выбранный набор строк в набор сводных строк по значениям одного столбца groupBy_columnName или нескольких. Для каждой группы возвращается одна строка.
GROUPBY в основном используется для выполнения агрегатов по промежуточным результатам из выражений таблиц DAX. Для эффективных агрегатов по физическим таблицам в модели рассмотрите возможность использования функции SUMMARIZECOLUMNS или SUMMARIZE.
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
С функцией CURRENTGROUP
CURRENTGROUP можно использовать только в выражении, определяющем столбец расширения внутри функции GROUPBY. В результате CURRENTGROUP возвращает набор строк из аргумента «table» функции GROUPBY, относящихся к текущей строке результата GROUPBY. Функция CURRENTGROUP не принимает никакие аргументы и поддерживается только в качестве первого аргумента для одной из следующих статистических функций: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.
Пример
В следующем примере сначала вычисляется общий объем продаж, сгруппированный по странам и категориям продуктов, по физическим таблицам с помощью функции SUMMARIZECOLUMNS. Затем функция GROUPBY используется для проверки промежуточного результата первого шага, чтобы найти максимальный объем продаж в каждой стране по категориям продуктов.
Объединение (группировка) значений при помощи функций DAX
Что делать, если для анализа необходимо объединить простые значения в диапазоны. Решить эту проблему поможет объединение (группировка) значений при помощи функций DAX.
Что хотим сделать
Скажем, я хотел проанализировать производительность запросов в моей базе данных SQL Server. У меня есть журнал, в котором содержатся сведения о времени выполнения запроса и количестве строк, которые запрос вернул. Я хочу понять, как количество возвращаемых строк влияет на производительность. Для этого загружаю данные в PowerPivot и создаю новую сводную таблицу, в которую поместил строками значение «Возвращено строк» (Rows Returned), и значениями «Средняя продолжительность» (Average Duration). У меня получилась такая таблица:
Результаты показывают мне уникальное количество строк, которые возвращали запросы и их среднюю продолжительность. Значение поля «Возвращено строк» находится в диапазоне от 0 до 172 028 053. Я добавил меру показывающую количество выполненных запросов для каждого результата.
Как это сделать
Для каждого отдельного результата по значению «Возвращено строк» среднее время выполнения запроса не настолько полезно. Я хочу объединить (сгруппировать), значения «Возвращено строк» в группы и проанализировать средние значения для группы. Что бы это сделать необходимо:
2. Добавить таблицу к модели данных и назвать ее «Блоки» (Buckets)
3. Добавить вычисляемый столбец с именем «Диапазон строки» (Row Range) к таблице QueryLog и вставить в него следующую формулу
“=CALCULATE(VALUES(‘Buckets'[Bucket Name]),filter(‘Buckets’, ‘Buckets'[start] =[Rows Returned]))”
Рассмотрим расчет формулы на примере
— VALUES(‘Buckets'[Bucket Name]) возвращает все имена блоков
— CALCULATE(…) так как нам необходимо только одно значение имени блока, а не полный список, изменяем контекст фильтра.
— filter(‘Buckets’,… && …) мы хотим фильтровать список по двум полям таблицы «Блоки», поэтому мы используем функцию фильтра внутри вычисления, а так же используем && для определения условия фильтрации.
— ‘Buckets'[start] =[Rows Returned] и где последнее значение диапазона больше или равно количеству строк, которые вернул запрос
Теперь в сводной таблице я смогу использовать сгруппированные по диапазону значения в строках, и в результате получу:
Какая dax функция используется для того чтобы произвести группировку пдз по периодам
Возвращает все строки в таблице или все значения в столбце, не учитывая применяемые фильтры. Эта функция удобна для очистки фильтров и создания вычислений по всем строкам в таблице.
Синтаксис
Параметры
Термин | Определение |
---|---|
таблица | Таблица, в которой нужно очистить фильтры. |
гистограмма | Столбец, в котором нужно очистить фильтры. |
Аргумент функции ALL должен быть либо ссылкой на базовую таблицу, либо ссылкой на базовый столбец. Функция ALL не поддерживает табличные выражения или выражения столбцов.
Возвращаемое значение
Таблица или столбец с удаленными фильтрами.
Примечания
Эта функция не используется сама по себе, а служит в качестве промежуточной функции, которую можно использовать для изменения набора результатов, по которым выполняется какое-либо другое вычисление.
Нормальным поведением выражений DAX, содержащих функцию ALL(), является то, что все применяемые фильтры будут игнорироваться. Однако существуют ситуации, в которых это не так, поскольку существует технология DAX Auto-Exist, которая оптимизирует фильтрацию, чтобы уменьшить объем обработки, необходимый для определенных запросов DAX. Приведем пример, в котором Auto-Exist и ALL() предоставляют непредвиденные результаты: при фильтрации двух или более столбцов одной таблицы (например, в случае использования срезов); при этом существует мера в той же таблице, в которой используется ALL(). В этом случае Auto-Exist выполнит слияние нескольких фильтров в один и будет фильтровать только существующие сочетания значений. Из-за этого слияния мера будет рассчитываться на основе существующих сочетаний значений, а результат будет основываться на отфильтрованных значениях, а не на всех значениях, как ожидалось. Дополнительные сведения о технологии Auto-Exist и ее влиянии на вычисления см. в статье Microsoft MVP Альберто Феррари Общие сведения о DAX Auto-Exist по адресу sql.bi.com.
В следующей таблице описано, как можно применять функции ALL и ALLEXCEPT в различных сценариях.
Функция и назначение | Описание |
---|---|
ALL() | Удаляет все фильтры везде. ALL() можно использовать только для очистки фильтров, но не для возвращения таблицы. |
ALL(Таблица) | Удаляет все фильтры из указанной таблицы. Фактически ALL(Таблица) возвращает все значения в таблице, удаляя все фильтры из контекста, которые могли быть применены. Эта функция полезна в случае, когда вы работаете со множеством уровней группирования и требуется создать вычисление, которое создает отношение агрегированного значения к общему значению. Этот сценарий демонстрируется в первом примере. |
ALL (Column[, Column[, …]]) | Удаляет все фильтры из указанных столбцов в таблице. Все остальные фильтры в других столбцах таблицы по-прежнему применяются. Все аргументы столбца должны поступать из одной и той же таблицы. Вариант ALL(Column) полезен, если требуется удалить фильтры контекста для одного или нескольких конкретных столбцов и для сохранения всех остальных фильтров контекста. Этот сценарий демонстрируется во втором и третьем примерах. |
ALLEXCEPT(Table, Column1 [,Column2]. ) | Удаляет все фильтры контекста в таблице, за исключением фильтров, примененных к указанным столбцам. Это удобно в ситуациях, когда необходимо удалить фильтры для многих, но не всех столбцов в таблице. |
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Пример 1
Вычисление отношения продаж по категории к общему объему продаж
Предположим, что требуется определить объем продаж для текущей ячейки в сводной таблице, деленный на общий объем продаж для всех торговых посредников. Чтобы обеспечить неизменность знаменателя независимо от того, как пользователь сводной таблицы может фильтровать или группировать данные, вы определяете формулу, использующую ALL для создания правильного общего итога.
В следующей таблице показаны результаты создания меры All Reseller Sales Ratio (Соотношение продаж всех торговых посредников) с использованием формулы, приведенной в разделе кода. Чтобы увидеть, как это работает, добавьте поле CalendarYear в область Метки строк сводной таблицы и поле ProductCategoryNameв область Метки столбцов. Затем перетащите меру All Reseller Sales Ratio (Соотношение продаж всех торговых посредников) в область Значения сводной таблицы. Для просмотра результатов в виде процентных отношений используйте функции форматирования Excel, чтобы применить форматирование значений в процентах к ячейкам, содержащим данную меру.
Метки строк | Accessories | Bikes | Экипировка | Запчасти | Общий итог |
---|---|---|---|---|---|
2005 | 0,02 % | 9,10 % | 0,04 % | 0,75 % | 9,91 % |
2006 | 0,11 % | 24,71 % | 0,60 % | 4,48 % | 29,90 % |
2007 г. | 0,36 % | 31,71 % | 1,07 % | 6,79 % | 39,93 % |
2008 | 0,20 % | 16,95 % | 0,48 % | 2,63 % | 20,26 % |
Общий итог | 0,70 % | 82,47 % | 2,18 % | 14,65 % | 100,00 % |
Формула
Формула создается следующим образом:
Числитель SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) является суммой значений в ResellerSales_USD[SalesAmount_USD] для текущей ячейки сводной таблицы с фильтрами контекста, применяемыми к CalendarYear и ProductCategoryName.
Для знаменателя сначала нужно указать таблицу, ResellerSales_USD, и использовать функцию ALL для удаления всех фильтров контекста в таблице.
Затем можно использовать функцию SUMX для суммирования значений в столбце ResellerSales_USD[SalesAmount_USD]. Иными словами, вы получаете сумму ResellerSales_USD[SalesAmount_USD] для продаж всех торговых посредников.
Пример 2
Вычисление отношения продаж продуктов к общему объему продаж за текущий год
Предположим, что нужно создать таблицу, показывающую процент продаж со сравнением по годам для каждой категории продуктов (ProductCategoryName). Чтобы получить процент для каждого года по каждому значению ProductCategoryName, нужно разделить сумму продаж для этого конкретного года и категории продуктов на сумму продаж для той же категории продуктов за все годы. Иными словами, нужно сохранить фильтр по ProductCategoryName и удалить фильтр по году при вычислении знаменателя процентного отношения.
В следующей таблице показаны результаты создания меры Продажи торгового посредника за год с использованием формулы, приведенной в разделе кода. Чтобы увидеть, как это работает, добавьте поле CalendarYear в область Метки строк сводной таблицы и поле ProductCategoryName в область Метки столбцов. Для просмотра результатов в виде процентных отношений используйте функции форматирования Excel, чтобы применить форматирование значений в процентах к ячейкам, содержащим данную меру Продажи торгового посредника за год.
Метки строк | Принадлежности | Bikes | Экипировка | Запчасти | Общий итог |
---|---|---|---|---|---|
2005 | 3,48 % | 11,03 % | 1,91 % | 5,12 % | 9,91 % |
2006 | 16,21 % | 29,96 % | 27,29 % | 30,59 % | 29,90 % |
2007 г. | 51,62 % | 38,45 % | 48,86 % | 46,36 % | 39,93 % |
2008 | 28,69 % | 20,56 % | 21,95 % | 17,92 % | 20,26 % |
Общий итог | 100,00 % | 100,00 % | 100,00 % | 100,00 % | 100,00 % |
Формула
Формула создается следующим образом:
Числитель SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) является суммой значений в ResellerSales_USD[SalesAmount_USD] для текущей ячейки сводной таблицы с фильтрами контекста, применяемыми к столбцам CalendarYear и ProductCategoryName.
Для знаменателя вы удаляете существующий фильтр по CalendarYear с помощью функции ALL(Column). При этом вычисляется сумма по оставшимся строкам в таблице ResellerSales_USD после применения существующих фильтров контекста из меток столбцов. Результатом является то, что сумма для знаменателя вычисляется по выбранной ProductCategoryName (неявный фильтр контекста) и для всех значений в году.
Пример 3
Вычисление вклада категорий продуктов в общий объем продаж за год
Предположим, что нужно создать таблицу, показывающую процент продаж для каждой категории продуктов по годам. Чтобы получить процент для каждой категории продуктов за определенный год, нужно вычислить сумму продаж для конкретной категории продуктов (ProductCategoryName) за год n, а затем разделить полученное значение на сумму продаж за год n по всем категориям продуктов. Иными словами, нужно сохранить фильтр по году и удалить фильтр по ProductCategoryName при вычислении знаменателя процентного отношения.
В следующей таблице показаны результаты создания меры Продажи торгового посредника по категории продуктов с использованием формулы, приведенной в разделе кода. Чтобы увидеть, как это работает, добавьте поле CalendarYear в область Метки строк сводной таблицы и поле ProductCategoryNameв область Метки столбцов. Затем добавьте новую меру в область Значения сводной таблицы. Для просмотра результатов в виде процентных отношений используйте функции форматирования Excel, чтобы применить форматирование значений в процентах к ячейкам, содержащим новую меру Продажи торгового посредника по категории продуктов.
Метки строк | Accessories | Bikes | Экипировка | Запчасти | Общий итог |
---|---|---|---|---|---|
2005 | 0,25 % | 91,76 % | 0,42 % | 7,57 % | 100,00 % |
2006 | 0,38 % | 82,64 % | 1,99 % | 14,99 % | 100,00 % |
2007 г. | 0,90 % | 79,42 % | 2,67 % | 17,01 % | 100,00 % |
2008 | 0,99 % | 83,69 % | 2,37 % | 12,96 % | 100,00 % |
Общий итог | 0,70 % | 82,47 % | 2,18 % | 14,65 % | 100,00 % |
Формула
Формула создается следующим образом:
Числитель SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) является суммой значений в ResellerSales_USD[SalesAmount_USD] для текущей ячейки сводной таблицы с фильтрами контекста, применяемыми к полям CalendarYear и ProductCategoryName.
Для знаменателя вы используете функцию ALL(Column), чтобы удалить фильтр по ProductCategoryName и вычислить сумму по оставшимся строкам в таблице ResellerSales_USD после применения существующих фильтров контекста из меток строк. Результатом является то, что сумма для знаменателя вычисляется за выбранный год (неявный фильтр контекста) и для всех значений ProductCategoryName.
Справочник по функциям DAX
В этом справочнике по функциям DAX представлены подробные сведения, включая синтаксис, параметры, возвращаемые значения и примеры, для каждой из более чем 250 функций, используемых в формулах DAX.
Не все функции DAX поддерживаются или имеются в более ранних версиях Power BI Desktop, Analysis Services и Power Pivot в Excel.
Содержимое раздела
Новые функции DAX — это новые или существенно переработанные функции.
Статистические функции — эти функции вычисляют (скалярное) значение, например число, сумму, среднее, минимальное или максимальное значение для всех строк в столбце или таблице в соответствии с заданным выражением.
Функции даты и времени — эти функции в DAX похожи на функции даты и времени в Microsoft Excel. Однако функции DAX основаны на типах данных datetime, используемых в Microsoft SQL Server.
Функции фильтрации — эти функции возвращают определенные типы данных, ищут значения в связанных таблицах и выполняют фильтрацию по связанным значениям. Функции уточняющих запросов работают с таблицами и связями между ними. Функции фильтрации позволяют управлять контекстом данных для создания динамических вычислений.
Финансовые функции — эти функции используются в формулах, которые выполняют финансовые вычисления, такие как чистая приведенная стоимость и норма прибыли.
Информационные функции — эти функции просматривают таблицу или столбец, предоставленные в качестве аргумента в другую функцию, и сообщают, соответствует ли значение ожидаемому типу. Например, функция ISERROR возвращает значение TRUE, если значение, на которое указывает ссылка, содержит ошибку.
Логические функции — эти функции возвращают сведения о значениях в выражении. Например, функция TRUE позволяет определить, возвращает ли выражение значение TRUE.
Математические и тригонометрические функции — математические функции в DAX похожи на математические и тригонометрические функции Excel. Однако числовые типы данных, используемые в функциях DAX, немного отличаются.
Другие функции — эти функции выполняют уникальные действия, и поэтому их нельзя отнести к другим категориям.
Родительские и дочерние функции — эти функции помогают пользователям управлять данными, представленными иерархией «родители — потомки», в своих моделях.
Функции отношений — эти функции предназначены для использования связей между таблицами и управления ими. Например, можно указать определенную связь для использования в вычислении.
Статистические функции — такие функции вычисляют значения, связанные со статистическими распределениями и вероятностями, например стандартное отклонение и число перестановок.
Функции обработки таблиц — эти функции возвращают таблицу или обрабатывают существующие таблицы.
Функции работы с текстом — эти функции позволяют возвращать часть строки, выполнять поиск текста в строке или сцеплять строковые значения. Есть также дополнительные функции для управления форматами дат, времени и чисел.
Функции логики операций со временем — эти функции позволяют создавать вычисления с использованием встроенных знаний о календарях и датах. Используя диапазоны времени и дат в сочетании с агрегатами или вычислениями, можно производить осмысленные сравнения объемов продаж, запасов и других показателей за сопоставимые периоды времени.