power pivot что такое мера
Power Pivot. Основы. Простые меры
Описание
В этом уроке мы научимся создавать простые меры в Power Pivot. Помимо этого мы будем активно пользоваться сводными таблицами, поэтому если вы в них не разбираетесь, то начнете их понимать намного лучше.
В этом уроке мы изучим/повторим:
Динамика суммы продаж по годам
Сначала создадим меру Sum of Sales:
После этого создадим сводную таблицу и линейную сводную диаграмму к ней. В строках будет номер месяца, в столбцах год, в значениях — наша созданная мера:
Сумма продаж по подкатегориям
Используя ту же самую меру создадим другую таблицу. На этот раз в строках будет находиться подкатегория, а в значениях созданная мера:
Выручка и прибыль по регионам и категориям
Создадим меру, которая вычисляет прибыль:
Создадим сводную таблицу и сводную диаграмму к ней. В строках будут находиться регион и категория, а в значениях выручка и прибыль.
Динамика прибыли по подкатегориям
Воспользуемся мерой, в которой мы вычислили прибыль. В строки добавим год, а в столбцы категорию. Создадим столбиковую диаграмму с накоплением.
Прибыльность каждого товара
Создадим меру Profitability, в которой вычислим прибыльность каждого товара:
Создадим сводную, в которой в строки добавим категорию и название товара, а в значения прибыль, выручку, прибыльность:
Количество проданных уникальных товаров из каждой подкатегории за каждый год
Мера для вычисления количества уникальных проданных товаров:
Создадим сводную таблицу, в которой в строки добавим подкатегорию, в столбцы год, а в значения новую созданную меру:
Создание меры в Power Pivot
Меры (также называемые вычисляемыми полями) — одна из самых эффективных возможностей Power Pivot. Они часто используются при анализе данных. Это вычисления, создаваемые для оценки результата относительно других факторов, имеющих отношение к анализу, таких как объем продаж по времени, региону, организации или товару.
Некоторые меры можно легко создать, например меры, использующие стандартную агрегатную функцию, например СУММ или СПБ, и созданные с помощью функции авто суммирования в окне Power Pivot, или неявные меры, созданные в Excel путем простого перетаскиванием поля в область значений. Другие могут быть более сложными, например для следующих связей или фильтрации результатов, требующие формулы, создаваемой с помощью DAX.
Так как существуют разные типы мер и их можно создавать в разных местах, важно понимать, какой тип уместен в том или ином случае. Дополнительную информацию см. в статье Меры в Power Pivot.
Создание неявной меры в Excel
Щелкните сводную таблицу.
В списке Поля сводной таблицы перетащите поле в область Значения.
Неявные меры могут использовать только стандартные агрегатные функции (SUM, COUNT, MIN, MAX, DISTINCTCOUNT или AVG) и формат данных, заданный для этого агрегирования. Кроме того, неявные меры могут использоваться только в сводной таблице или диаграмме, для которой они были созданы.
Создание меры в окне Power Pivot с использованием автосуммирования
Щелкните Вычисления > Автосумма и выберите агрегат.
Меры, созданные с помощью автосуммирования, немедленно появляются в области вычислений под столбцом данных; однако их можно переместить в любую пустую ячейку области вычислений той же таблицы. Меры, созданные с помощью автосуммирования, получают имя по умолчанию, но их можно переименовать в строке формул. Меры, создаваемые в области вычислений, являются явными.
Создание меры в окне Power Pivot с помощью области вычислений
Щелкните В начало > Просмотр > Область вычисления.
Щелкните пустую ячейку в области вычислений.
В строке формул в верхней части таблицы введите формулу в формате имя меры>: формула>
Нажмите клавишу ВВОД, чтобы принять формулу.
Меры, созданные в области вычислений, сохраняются в выбранной таблице, но могут использоваться как поле в любых сводных таблицах, сводных диаграммах и отчетах. Такие меры являются явными.
Создание меры с помощью диалогового окна «Мера» в Excel
В окне Excel выберите Power Pivot > Вычисления > Меры > Создать меру.
В диалоговом окне Мера щелкните стрелку вниз в поле Имя таблицы и выберите таблицу, в которой должна находиться мера.
Выбор таблицы определяет, где будет храниться определение меры. Мера не обязательно должна храниться в той таблице, на которую ссылается.
В поле Имя меры введите имя.
Имя меры должно быть уникальным; в частности, нельзя использовать имена, уже заданные для столбцов.
В текстовом поле Формула поместите курсор за знаком равенства (=) и введите формулу.
Нажмите кнопку Проверить формулу для проверки.
В списке Категория выберите тип меры.
Тип меры не влияет на работу формулы. Он нужен только для информации.
Если формула выдержала проверку, нажмите кнопку ОК.
Меры, созданные в диалоговом окне «Мера» в Excel, хранятся в выбранной таблице. Вы можете их просмотреть и изменить в диалоговом окне «Управление мерами» в Excel или в области вычислений таблицы в окне Power Pivot. Меры, созданные с помощью этого метода, являются явными.
Power Pivot: Оконные функции под соусом DAX
[в связи со спорным переносом 1 части поста на geektimes (при том что 2-я часть осталась на хабре) возвращаю 1-ю часть на место]
Работая в сфере аналитики и мониторя различные инструменты BI рано или поздно наталкиваешься на обзор или упоминание надстройки Power Pivot Excel. В моем случае знакомство с ним произошло на конференции Microsoft Data Day.
Особых впечатлений после презентации инструмент не оставил: Да, бесплатен (в рамках лицензии Office), да — есть некий ETL функционал в части получения данных с разрозненных источников (БД,csv,xls, и т.д.), Join-ов этих источников и скармливания в оперативку записей на порядки выше 1 млн.строк в Excel. Короче, посмотрел и забыл.
А вспомнить пришлось, когда появилась необходимость идентификации определённых явлений в данных
На написание данной статьи сподвигло то что в рунете по этому инструменту не много какой либо детальной информации о конкретных приемах работы, все больше о звездах, поэтому решил, изучая этот инструмент, написать данный обзор.
Собственно, постановка задачи (на обезличенном примере) следующая:
В исходных данных csv файла:
Есть торговые точки, детализированные до строк накладных, при этом допускается для точек с одинаковым наименованием иметь разные адреса только в том случае если они расположены в разных городах, но в исходном массиве данных есть точки, у которых попадаются разные адреса в одном и том же городе при том, что названия точек одинаковые (имя торговой точки уникально, т.е. это единица сети или отдельно стоящая точка). Как частный случай в агрегированном виде:
Поиску и очистке данных штатными средствами office мешают следующие обстоятельства:
• Детализация данных до строк накладной
• Количество записей в несколько миллионов строк
• Отсутствие sql инструментария (К примеру: Access — не в комплекте)
Конечно можно залить любую бесплатную СУБД (хоть десктоп версию, хоть серверную) но для этого во-первых нужны админские права, во-вторых статья была бы уже не про Power Pivot.
Задача: для каждой атомарной записи требуется дополнительное вычисляемое поле, которое посчитает для каждого наименования торговой точки уникальное количество адресов в рамках того же города. Данное поле требуется для быстрого нахождения всех имен торговых точек в городе, где адресов больше 1.
Думаю, удобнее всего решать и рассказывать итерационно, с допущением что у нас знания по DAX в зачаточном уровне.
Поэтому предлагаю пока оторваться от задачи и рассмотреть некоторые базовые аспекты.
Шаг 1. Чем отличается вычисляемый столбец от вычисляемой меры?
Вот пример вычисляемого столбца для выделения НДС из поля отгрузки с НДС используя встроенные формулы DAX:
=ROUND([Отгрузка с НДС]*POWER(1,18;-1)*0,18;2)
Как видно из примера вычисляемый столбец (Назовем его НДС) работает с каждой атомарной записью по горизонтали.
Теперь добавим вычисляемое поле для цены за штуку без НДС:
=ROUND([Отгрузка с НДС]*POWER(1,18;-1)/[Отгрузка шт];2)
Теперь для сравнения добавим в меру расчет средней цены за штуку:
Средняя цена за штуку без НДС: =ROUND(AVERAGE([Поле_Цена за штуку без НДС]);2)
Как видно из формулы, мера работает со столбцом исходных данных по вертикали, поэтому она всегда должна содержать в себе какую то работающую с множеством функцию (Сумму, среднюю, дисперсию и т.д.)
При возврате в сводную таблицу Excel это выглядит так:
Обратите внимание, если вычисляемое поле НДС на каждом уровне данных (зеленая обводка на уровне торговой точки, города или итого по таблице) показывает сумму, что в принципе – корректно, то сумма цен вычисляемого поля «Цена за штуку без НДС» (красная обводка) вызывает вопросы.
А вот вычисляемая мера «Средняя цена за штуку без НДС» вполне имеет право на жизнь в рамках данного аналитического куба.
Отсюда делаем вывод, что вычисляемое поле «Цена за штуку без НДС» является вспомогательным инструментом для расчета меры «Средняя цена за штуку без НДС» и дабы не смущать пользователя этим полем мы скроем его из списка клиентских средств, оставив меру средней цены.
Еще одно отличие меры от столбца – она позволяет добавить визуализацию:
К примеру, построим KPI степени разброса цен с целевой границей 35% путем деления корня из дисперсии на среднюю арифметическую.
К_вар:=STDEV.P([Поле_Цена за штуку без НДС])/AVERAGE([Поле_Цена за штуку без НДС])
В итоге видим такую таблицу в Excel (кстати расчетное вспомогательное поле цен уже не в списке доступных полей справа):
Двойной клик на 80%-м коэффициенте показывает, что цены действительно колбасит вокруг средней:
Cильнее чем при коэффициенте 15%:
Итак, на данном шаге мы рассмотрели основные отличия мер от полей в рамках PowerPivot.
Шаг 2. Усложняем: Посчитаем долю каждой записи в общих продажах.
Вот первый пример сравнения подходов оконных функций MS SQL Server и DAX:
Понятно, что в рамках сводных таблиц это делается буквально в 2 клика мышкой не касаясь клавиатуры, но для понимания попробуем это непосредственно в PowerPivot с применением формул.
На sql я бы это написал так (за огрехи не пинать, ибо Word синтаксис SQL Server не проверяет):
Здесь, как можно заметить окно открывается через все записи датасэта, попробуем аналогичную вещь в PowerPivot:
=[Отгрузка шт]/CALCULATE(SUM([Отгрузка шт]);ALL(‘Таблица1’))
Основное внимание обратим к знаменателю: Я уже упоминал выше что основное отличие вычисляемого поля от меры заключается в том что в поле формулы считают по горизонтали ( в рамках одной записи) а меры – по вертикали ( в рамках одного атрибута). Здесь мы смогли скрестить свойства поля и свойство меры через метод CALCULATE. И если ширину окна в SQL мы отрегулировали через Over() то здесь мы сделали это через All().
Попробуем теперь, обладая данным навыком, сделать с нашими данными что –нибудь полезное, например, вспомнив что показатель разброса цен вокруг средних варьировался в широком диапазоне, попробуем выделить статистические выбросы цен через правило 3-х сигм.
Оконные функции на sql будут смотреться так:
А вот то же самое в DAX:
=if(ABS([Поле_Цена за штуку без НДС]-CALCULATE(AVERAGE([Поле_Цена за штуку без НДС]);ALL(‘Таблица1’)))>(3*CALCULATE(STDEV.P([Поле_Цена за штуку без НДС]);all(‘Таблица1’)));1;0)
Как видите, цена несколько высоковата при средней арифметической 40,03 руб.
Шаг 3. Сужаем окна.
Попробуем теперь посчитать в вычисляемом поле каждой записи общее количество записей в рамках того города, к которому принадлежит и данная запись.
На MS sql Server оконные функции будут выглядеть так:
В DAX:
=CALCULATE(COUNTROWS(‘Таблица1’);ALLEXCEPT(‘Таблица1’;’Таблица1′[Город]))
Обратите внимание на разницу в отображении данных в таблице, я специально бросил адреса в область мер что бы посчитать их количество и сравнить с новым полем которое вывел в заголовок строк после имени торговой точки.
Отчетлива видна разница: если обычный расчет количества адресов идет для каждой точки в городе и потом только выводит промежуточный итог для агрегата «Город» то использование оконных функций позволяет присвоить каждой атомарной записи значение любого агрегата, либо использовать его в каких-то промежуточных расчетах вычисляемого поля ( как было показано выше).
Возвращаемся к исходной задаче
Итак, напомню, исходная постановка задачи: для каждой атомарной записи требуется дополнительное вычисляемое поле, которое посчитает для каждого наименования торговой точки уникальное количество адресов в рамках того же города. Не забываем, что датасэт у нас детализирован до строк накладной, поэтому перед подсчетом адресов внутри окна их необходимо сгруппировать.
Запрос на SQL Server:
Теперь нам ничего не мешает это сделать и в DAX:
В итоге у нас появилась возможность отобрать подозрительные записи, где на одну и ту же точку в одном городе приходится более 1 адреса.
Конечно в процессе изучения (пробежавшись взглядом на другие формулы) становится понятно что DAX в PowerPivot гораздо мощнее чем показано в данном топике, но объять необъятное за раз – точно не получится.
Надеюсь было интересно.
Продолжение статьи здесь
DAX — разбор мер
Мы уверены, что многие читатели нашего блога хорошо разбираются в вычислениях, которые мы приводим в демонстрационных отчетах. Однако новые пользователи Power BI зачастую не знают, что такое DAX и как его можно использовать для расчета необходимых показателей. Поэтому этой статьей мы хотим начать экскурс в основы языка DAX, и в качестве примера мы возьмем отчет по посещаемости блога, который был предоставлен нам командой Mello и который мы уже рассматривали ранее.
Итак, сначала, как полагается, немного теории.
Data Analysis Expressions, сокращенно DAX (и не спрашивайте почему именно так)) — это язык запросов для Power Pivot, Power BI Desktop и SQL Server Analysis Services (SSAS). Это некий набор функций, операторов и констант, которые можно использовать в формуле или выражении, чтобы подсчитывать и возвращать одно или несколько значений. Говоря проще, DAX помогает создавать новую информацию из данных, уже имеющихся в модели.
Этот язык запросов (а это именно язык) включает библиотеку из более чем 200 функций, операторов и конструкций, что обеспечивает огромную гибкость для выполнения различных вычислений.
Идем дальше и разберем, что же такое мера и вычисляемый столбец и чем они все таки отличаются друг от друга.
Мера является базовым понятием в DAX и представляет собой выражение, которое позволяет рассчитать необходимый показатель на основании данных из модели. Пример использования мер, это расчет среднего, суммы, количества уникальных записей и пр.
Вычисляемый столбец не менее важен и также позволяет рассчитать показатели, но подсчет производится для каждой строки таблицы отдельно и результат сохраняется в отдельное поле (новый столбец таблицы). После создания подобного вычисляемого столбца его можно использовать наравне с остальными столбцами модели. Пример использования вычисляемого столбца — создание некоего столбца с ключами (уникальными идентификаторами записей, для связей с другими таблицами).
Продолжим разбираться в основных отличиях между мерами и вычисляемыми столбцами и посмотрим на них с точки зрения ресурсоемкости будущего отчета.
Меры, в отличие от столбцов, вычисляются только во время использования визуализации, в то время как значения нового столбца вычисляются моментально после его создания. Также вычисляемый столбец сохраняется вместе со всей моделью и его значения рассчитываются во время загрузки данных в модель, в то время как для меры хранится только формула, по которой она вычисляется.
И главное, что необходимо всегда помнить — это то, что вычисляемые столбцы используются для формирования значений в контексте каждой отдельной строки, а меры агрегируют эти значения для всей таблицы.
Здесь и далее примем следующие обозначения:
Теперь можно смело переходить к практике. Разберем как задать меру и вычисляемый столбец, какие они бывают и что умеют делать.
Начнем анализ с разбора одной из простейших мер. Для удобства чтения будем обозначать меры через знак :=, в то время как для столбцов будем использовать стандартный знак равенства.
Ранее мы уже писали о том, что все показатели, существующие в таблицах, мы рекомендуем «оборачивать» мерами, что имеет ряд преимуществ. Подобным подходом мы воспользовались и при сборе модели, которая лежит в основе рассматриваемого в статье отчета. В результате чего в ней довольно много мер, выполняющих простые вычисления, с одной из которых мы и начнем наше знакомство с DAX:
Давайте рассмотрим из чего состоит приведенное выше выражение. С левой стороны от знака равенства указывается название меры, в данном случае это [Просмотры страниц]. Напомним, что названия необходимо давать максимально понятные, чтобы они передавали суть того значения, которое получится в результате вычисления. Это значительно облегчит дальнейшую работу с отчетом и сэкономит массу времени на выяснения что же та или иная мера считает.
Но и увлекаться не стоит: сильно длинные названия давать не советуем, так как с ними потом будет не очень удобно работать. Если же это какая-то специфическая мера и необходимо пояснить что она вычисляет, то лучше добавить описание. Для этого кликаем правой кнопкой мыши на нужной нам мере в списке полей и выбираем пункт:
В открывшемся окне Свойство полей в поле Описание смело пишем все, что будущим пользователям отчета нужно знать о мере:
Если после этих манипуляций в списке Полей просто навести мышкой на нужную меру, мы увидим уже не только ее полное название, а и заданное нами описание:
С правой стороны знака равенства мы видим функцию SUM, которая предназначена для суммирования всех значений в столбце, который в свою очередь передается в качестве параметра и в данном случае это ‘Просмотры страниц'[Количество просмотров]. Следует отметить, что столбец [Количество просмотров] в данном случае необходимо указывать вместе с названием таблицы ‘Просмотры страниц’, в которой он находится.
Аналогичным образом, оборачивая столбцы с числовыми значениями, мы получаем и другие меры: [Входы], [Выходы], [Длительность просмотра страницы], [Длительность сеанса] и пр.
Но у нас в отчете есть и другие меры, будем их рассматривать по степени возрастания сложности их синтаксиса. Итак, есть меры, которые представляют собой относительные величины — долю чего либо.
Слева от знака равенства снова название меры (мы больше к этому не будем возвращаться), а справа функция с тремя аргументами:
Все просто: чтоб получить процент входов из числа просмотров, мы делим [Входы] на [Просмотры страницы], и возвращаем ноль, в случае если результат такого деления возвращает ошибку.
Стоит отметить, что [Входы] и [Просмотры страниц], это меры, в которые мы выше оборачивали данные модели.
Аналогичный синтаксис имеют такие меры отчета как [Процент выходов], [Средняя длительность просмотра страницы], [Страниц на сеанс] и пр. Все их можно найти в разделе Поля в так называемых таблицах мер, у нас в отчете их две ‘Просмотры страницы’ и ‘Сеансы’.
Рассмотрим еще одну не сложную, но полезную функцию, используемую в расчете меры:
Эта мера возвращает только уникальные записи из таблицы ‘Сеансы’, а именно из столбца [Идентификатор пользователя]. Почему именно так? Потому что, один пользователь может просматривать несколько страниц и при том не один раз. В таблице в этом случае будет несколько идентификаторов пользователя (т.е. сколько просмотров — столько и идентификаторов). А нам важно узнать сколько уникальных пользователей просмотрело страницу. Поэтому мы считаем сколько уникальных идентификаторов (уникальных пользователей) есть в нашей таблице с данными.
Теперь перейдем к более сложным расчетам и рассмотрим такую меру:
Начнем разбираться максимально подробно.
Средний процент прокрутки страницы – это показатель, который говорит нам о том, на сколько процентов пользователи при посещении страницы прокручивают ее.
Теперь разберемся, как он считается.
У нас есть нужная таблица со всеми необходимыми нам исходными данными, это таблица ‘События’, где содержится вся информация по всем событиям, произошедшим на странице. Более подробно с содержанием этой таблицы Вы можете ознакомиться в нашей статьей «Пример построения модели на данных Google Analytics».
Но таблица ‘События’ содержит также и много ненужной нам сейчас информации. Так например, в таблице собраны вместе все категории событий, в то время как нам нужна только категория Max Scroll. Можно увидеть, выбрав эту категорию, что ярлык события в этом случае будет как раз равен проценту прокрутки страницы для каждого просмотра (Идентификатор просмотра).
Осталось понять, как посчитать среднее
Из таблицы выше видно, что в исходных данных каждому Идентификатору просмотра может соответствовать несколько значений Ярлыка событий. Соответственно сколько событий прокрутки страницы было, столько у нас будет и Ярлыков для заданного просмотра. Все логично.
Для того чтоб вычислить средний процент прокрутки, нам нужно будет построить сводную таблицу по таблице ‘События’, в которую мы соберем все максимальные значения процента прокрутки по каждому отдельному событию:
В нашем случае получается что мы из исходной таблицы ‘События’, берем уникальные значения столбца [Идентификатор просмотра], и в столбец с названием [Процент прокрутки] выводим максимальное значение столбца [Ярлык события] в заданной группе CURRENTGROUP.
Далее нам нужно эти сводные данные вывести с учетом фильтра по категории. Для этого используем функцию CALCULATETABLE, которая выведет табличное выражение GROUPBY c учетом фильтра FILTER, с помощью которой мы сможем вычленить из исходных данных только данные категории Max Scroll.
Результатом функции CALCULATETABLE будет вот такая таблица (справа):
По ней хорошо видно, что расчеты верны, и таблица содержит максимальные значения процента прокрутки для каждого просмотра.
Итак, нам осталось посчитать средний процент прокрутки по полученной сводной таблице, для этого используем функцию AVERAGEX. Остановимся подробнее на этой функции.
Синтаксис у нее такой:
В нашем случае вторым аргументом является столбец «виртуальной» таблицы, взятый без изменений и над ним не производится никаких вычислений, но тем не менее мы используем именно итератор AVERAGEX, потому что работаем не со столбцом нашей модели, а с «виртуальной», специально искусственно созданной нами таблицей, о которой мы рассказывали выше.
Таким образом, функция-итератор AVERAGEX работает поэтапно. Сначала вычисляется выражение из второго аргумента для каждой строки таблицы, указанной в первом аргументе. Затем функция агрегирует эти значения и считает среднее по данным, получившимся по итогам расчета Выражения.
Аналогично работают и другие функции-итераторы, например SUMX — сначала рассчитывает построчно результат Выражения, а затем суммирует эти данные; а MAXX — также сначала выполняет действия над каждой строкой Таблицы из первого аргумента, в соответствии с Выражением из второго, а затем берет максимальное из значений всех строк.
Итак, итератор MAXX позволяет нам посчитать максимальный процент прокрутки по нашей «виртуальной» таблице.
Обратим внимание на то, что полученный результат мы еще делим на 100. Это связано с тем, что проценты в исходной таблице заданы не в процентном выражении (например, 44%), а просто как число — 44. Если в этом случае не делить на 100, то мы получили бы 4400%.
Разделив же на 100, наша меру будет возвращать значение в виде десятичной дроби: 0,44 и для отображения значения в %% останется только на вкладке Моделирование выбрать % формат представления числа:
И напоследок рассмотрим еще одну сложную меру, которая, также как и предыдущая, содержит несколько вложенных функций. Надеемся, что на этом этапе вам уже стало немного понятно как и что считают упомянутые меры, поэтому на этот раз мы уже не будем сильно вдаваться в подробности расчетов.
Рассмотрим меру, рассчитывающую кол-во новых пользователей. Выглядит она так:
Рассмотрим синтаксис снаружи-внутрь. Функция COUNTROWS считает кол-во строк в таблице, возвращаемой функцией FILTER, и отфильтрованной по заданным параметрам.
Обратим внимание, что функция фильтрует строки, т.е. столбцы результирующей таблицы остаются неизменны и совпадают со столбцами фильтруемой таблицы, а строки отображаются только те, которые удовлетворяют условию фильтрации.
Как правило эта функция используется не самостоятельно, а внутри DAX выражений, и позволяет создавать промежуточные «виртуальные» таблицы, вместо обычных.
Разберем, что же в итоге получается в результате работы функции FILTER в нашем случае:
Таблицу, которая подвергается фильтрации, возвращает функция:
С помощью функции ADDCOLUMNS мы к таблице, состоящей из одного столбца с уникальными идентификаторами пользователей, сформированной выражением VALUES ( ‘Сеансы'[Идентификатор пользователя] ), добавляем столбец под названием [Дата первого сеанса], и содержит он следующие значения:
минимальную (первую) дату сеанса, т.е по сути появление нового пользователя.
Затем, с помощью функции CALCULATETABLE, получаем нужную нам для дальнейших расчетов таблицу, при этом мы снимаем фильтр с помощью функции ALL ( ‘Параметры дат’ ), тем самым охватывая уже весь период времени. Это значит, что в этой функции на таблицу ‘Параметры дат’ не наложены фильтры.
А условие фильтрации полученной выше таблицы, в свою очередь выглядит так:
Это означает, что таблицу из первого аргумента функции FILTER мы фильтруем таким образом, чтоб выполнялось условие: набор уникальных дат, который возвращает функция VALUES ( ‘Параметры дат'[Дата] ) должен содержать даты, соответствующие дате первого сеанса, созданной выше. Таким образом, отбирая в справочнике дат только даты первого сеанса, мы отберем именно новых пользователей.
Надеемся, что с мерами теперь стало немного понятнее, рассмотрим теперь вычисляемые столбцы, которые также можно создавать и использовать в Power BI. Напомним, что в отличие от мер, значения таких столбцов рассчитываются для каждой строки таблицы отдельно.
В отчете они активно используются для ABC анализа. Так, прежде всего рассчитывается показатель [Накопительный просмотр страниц].
Далее производится подсчет суммы количества просмотров для всех страниц с помощью накопительного итога. То есть, в этой сумме для каждой страницы учтены только те просмотры, которые были посчитаны ранее.
Поскольку в ABC анализе производится сравнение накопительного процента с граничными значениями, необходимо предыдущий показатель перевести в процент. Для это создаем дополнительный столбец, где каждое значение столбца [Накопительный просмотр страниц] делим на общую сумму просмотра страниц.
В конце нам требуется отнести все страницы в одну из трех групп:
Выражение основано на одной функции SWITCH, которая по сути является «переключателем» и предназначена для возвращения определенного значения в зависимости условия которое выполнилось.
Первым параметром может выступать любое выражение на DAX, результатом вычисления которого является единственное значение, в нашем случае это TRUE(), которое возвращает логическое значение истина. В качестве же значений, которые используются для выбора возвращаемого результата у нас используются сравнения, результаты выполнения которых сопоставляются с TRUE(). Так, мы каждую строку столбца ‘Страницы'[Накопительный процент] проверяем на удовлетворение одному из двух условий