Pivot oracle пример: PIVOT оператор — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Что такое Power Query / Pivot / Map / View / BI и зачем они пользователю Excel

13424
16.07.2018
Скачать пример


Термины «Power Query», «Power Pivot», «Power BI» и прочие «пауэры» все чаще всплывают в статьях и материалах о Microsoft Excel. По моему опыту, далеко не все ясно представляют себе что скрывается за этими понятиями, как они между собой взаимосвязаны и как могут помочь простому пользователю Excel.


Давайте проясним ситуацию.

Power Query


Еще в 2013 году специально созданная группа разработчиков внутри Microsoft выпустила для Excel бесплатную надстройку Power Query (другие названия — Data Explorer, Get&Transform), которая умеет массу полезных для повседневной работы вещей:

  • Загружать данные в Excel из почти 40 различных источников, среди которых базы данных (SQL, Oracle, Access, Teradata…), корпоративные ERP-системы (SAP, Microsoft Dynamics, 1C…), интернет-сервисы (Facebook, Google Analytics, почти любые сайты).
  • Собирать данные из файлов всех основных типов данных (XLSX, TXT, CSV, JSON, HTML, XML…), как поодиночке, так и сразу оптом — из всех файлов указанной папки. Из книг Excel можно автоматически загружать данные сразу со всех листов.
  • Зачищать полученные данные от «мусора»: лишних столбцов или строк, повторов, служебной информации в «шапке», лишних пробелов или непечатаемых символов и т.п.
  • Приводить данные в порядок: исправлять регистр, числа-как-текст, заполнять пробелы, добавлять правильную «шапку» таблицы, разбирать «слипшийся» текст на столбцы и склеивать обратно, делить дату на составляющие и т.д.
  • Всячески трансформировать таблицы, приводя их в желаемый вид (фильтровать, сортировать, менять порядок столбцов, транспонировать, добавлять итоги, разворачивать кросс-таблицы в плоские и сворачивать обратно).
  • Подставлять данные из одной таблицы в другую по совпадению одного или нескольких параметров, т. е. прекрасно заменяет функцию ВПР (VLOOKUP) и ее аналоги.


Power Query встречается в двух вариантах: как отдельная надстройка для Excel 2010-2013, которую можно скачать с официального сайта Microsoft и как часть Excel 2016. В первом случае после установки в Excel появляется отдельная вкладка:



В Excel 2016 весь функционал Power Query уже встроен по умолчанию и находится на вкладке Данные (Data) в виде группы Получить и преобразовать (Get & Transform):



Возможности этих вариантов совершенно идентичны.


    Принципиальной особоенностью Power Query является то, что все действия по импорту и трансформации данных запоминаются в виде запроса — последовательности шагов на внутреннем языке программирования Power Query, который лаконично называется «М». Шаги можно всегда отредактировать и воспроизвести повторно любое количество раз (обновить запрос).


    Основное окно Power Query обычно выглядит примерно так:


    По моему мнению, это самая полезная для широкого круга пользователей надстройка из всех перечисленных в этой статье. Очень много задач, для которых раньше приходилось либо жутко извращаться с формулами, либо писать макросы — теперь легко и красиво делаются в Power Query. Да еще и с последующим автоматическим обновлением результатов. А учитывая бесплатность, по соотношению «цена-качество» Power Query просто вне конкуренции и абсолютный must have для любого средне-продвинутого пользователя Excel в наши дни.

    Power Pivot


    Power Pivot — это тоже надстройка для Microsoft Excel, но предназначенная немного для других задач. Если Power Query сосредоточена на импорте и обработке, то Power Pivot нужен, в основном, для сложного анализа больших объемов данных. В первом приближении, можно думать о Power Pivot как о прокачанных сводных таблицах.



    Общие принципы работы в Power Pivot следующие:

    1. Сначала мы загружаем данные в Power Pivot — поддерживается 15 различных  источников: распространенные БД (SQL, Oracle, Access…), файлы Excel, текстовые файлы, веб-каналы данных. Кроме того, можно использовать Power Query как источник данных, что делает анализ почти всеядным.
    2. Затем между загруженными таблицами настраиваются связи или, как еще говорят, создается Модель Данных. Это позволит в будущем строить отчеты по любым полям из имеющихся таблиц так, будто это одна таблица. И никаких ВПР опять же.
    3. При необходимости, в Модель Данных добавляют дополнительные вычисления с помощью вычисляемых столбцов (аналог столбца с формулами в «умной таблице») и мер (аналог вычисляемого поля в сводной). Всё это пишется на специальном внутреннем языке Power Pivot, который называется DAX (Data Analysis eXpressions).
    4. На листе Excel по Модели Данных строятся интересующие нас отчеты в виде сводных таблиц и диаграмм.


    Главное окно Power Pivot выглядит примерно так:



    А так выглядит Модель Данных, т.е. все загруженные таблицы с созданными связями:



      У Power Pivot есть ряд особенностей, делающих её уникальным инструментом для некоторых задач:

      • В Power Pivot нет предела по количеству строк (как в Excel). Можно грузить таблицы любого размера и спокойно работать с ними.
      • Power Pivot очень хорошо умеет сжимать данные при загрузке их в Модель. 50 Мб исходный текстовый файл может легко превратиться в 3-5 Мб после загрузки.
      • Поскольку «под капотом» у Power Pivot, по сути, полноценный движок базы данных, то с большими объемами информации он справляется очень быстро. Нужно проанализировать 10-15 млн. записей и построить сводную? И все это на стареньком ноутбуке? Без проблем!


      К сожалению, пока что Power Pivot входит не во все версии Excel. Если у вас Excel 2010, то скачать её можно бесплатно с сайта Microsoft. А вот если у вас Excel 2013-2016, то всё зависит от вашей лицензии, т.к. в некоторых вариантах она включена (Office Pro Plus, например), а в некоторых нет (Office 365 Home, Office 365 Personal и т.д.) Подробнее об этом можно почитать тут.


      Power Maps


      Эта надстройка впервые появилась в 2013 году и первоначально называлась GeoFlow. Она предназначена для визуализации гео-данных, т.е. числовой информации на географических картах. Исходные данные для отображения берутся все из той же Модели Данных Power Pivot (см. предыдущий пункт).



      Демо-версию Power Map (почти не отличающуюся от полной по возможностям, кстати) можно совершенно бесплатно загрузить опять же с сайта Microsoft. Полная же версия включена в некоторые пакеты Microsoft Office 2013-2016 вместе с Power Pivot — в виде кнопки 3D-карта на вкладке Вставка (Insert — 3D-map):



      Ключевые особенности Power Map:

      • Карты могут быть как плоскими, так и объемными (земной шар).
      • Можно использовать несколько разных типов визуализации (гистограммы, пузырьковые диаграммы, тепловые карты, заливку областями).
      • Можно добавлять измерение времени, т.е. анимировать процесс и смотреть на него в развитии.
      • Карты подгружаются из сервиса Bing Maps, т. е. для просмотра нужен весьма шустрый доступ в интернет. Иногда возникают сложности с правильным распознаванием адресов, т.к. названия в данных не всегда совпадают с Bing Maps.
      • В полной (не демо) версии Power Map можно использовать собственные загружаемые карты, например визуализировать посетителей торгового центра или цены на квартиры в жилом доме прямо на строительном плане.
      • На основе созданных гео-визуализаций можно прямо в Power Map создавать видеоролики (пример), чтобы поделиться ими потом с теми, у кого надстройка не установлена или включить в презентацию Power Point.

      Power View


      Эта надстройка появилась впервые в составе Excel 2013 и предназначена для «оживления» ваших данных — построения интерактивных графиков, диаграмм, карт и таблиц. Иногда для этого используют термины дашборд (dashboard) или панель показателей (scorecard). Суть в том, что вы можете вставить в ваш файл Excel специальный лист без ячеек — слайд Power View, куда добавить текст, картинки и массу различного типа визуализаций по вашим данным из Модели Данных Power Pivot.


      Выглядеть это будет примерно так:



      Нюансы тут такие:

      • Исходные данные берутся всё оттуда же — из Модели Данных Power Pivot.
      • Для работы с Power View необходимо установить на вашем компьютере Silverlight — майкрософтовский аналог Flash (бесплатный).


      На сайте Microsoft, кстати, есть весьма приличный обучающий курс по Power View на русском языке.

      Power BI


      В отличие от предыдущих, Power BI — это не надстройка для Excel, а отдельный продукт, представляющий собой целый комплекс средств для бизнес- анализа и визуализации. Он состоит из трех ключевых элементов:


      1. Power BI Desktop — программа для анализа и визуализации данных, включающая в себя, помимо прочего, весь функционал надстроек Power Query и Power Pivot + улучшенные механизмы визуализации из Power View и Power Map. Скачать и установить её можно совершенно бесплатно с сайта Microsoft.


      В Power BI Desktop можно:

      • Загружать данные из более чем 70 различных источников (как в Power Query + дополнительные коннекторы).
      • Связывать таблицы в модель (как в Power Pivot)
      • Добавлять к данным дополнительные вычисления с помощью мер и вычисляемых столбцов на DAX (как в Power Pivot)
      • Создавать на основе данных красивейшие интерактивные отчеты с разного типа визуализациями (очень похоже на Power View, но еще лучше и мощнее).
      • Публиковать созданные отчеты на сайте Power BI Service (см. следующий пункт) и делиться ими с коллегами. Причем есть возможность давать разные права (чтение, редактирование) разным людям.


      2. Онлайн-сервис Power BI — упрощенно говоря, это сайт, где у вас и у каждого пользователя в вашей компании будет своя «песочница» (workspace) куда можно загружать созданные в Power BI Desktop отчеты. Помимо просмотра, позволяет их даже редактировать, воспроизводя онлайн почти весь функционал Power BI Desktop. Также сюда можно заимствовать отдельные визуализации из чужих отчетов, собирая из них свои авторские дашборды.


      Выглядит это примерно так:


      3. Power BI Mobile — приложение для iOS / Android / Windows для подключения к Power BI Service и удобного просмотра (не редактирования) созданных отчетов и дашбордов прямо на экране телефона или планшета. Скачать его (совершенно бесплатно) можно тут.


      На iPhone, например, созданный выше отчет выглядит так:


      Причем всё это с сохранением интерактивностии и анимации + заточенность под тач и рисование по экрану пером. Очень удобно. Таким образом, бизнес-аналитика становится доступной всем ключевым лицам компании в любой момент и в любом месте — нужен только доступ в интернет.


      Тарифные планы Power BI. Power BI Desktop и Mobile бесплатны изначально, большинство функций Power BI Service — тоже. Так что для персонального использования или применения в пределах небольшой компании за всё вышеперечисленное не нужно платить ни копейки и можно смело оставаться на плане Free. Если вы хотите делиться отчетами с коллегами и администрировать их права доступа, то придется перейти на Pro (10$ в месяц за пользователя). Есть еще Premium — для больших компаний (>500 пользователей), которым требуются для данных отдельные хранилища и серверные мощности.

      Ссылки по теме

      • Проектная диаграмма Ганта в Excel с помощью Power Query
      • Как создать в Excel базу данных с помощью Power Pivot
      • Визуализация движения по маршруту на карте в Power Map

      Использование PIVOT в Oracle 11g и выше

      30 октября 2015 г.


      Начиная с Oracle Database 11 g, вы можете использовать операторы PIVOT и UNPIVOT для работы с данными «кросс-таблицы». В кросс-таблице отчета строки данных отображаются в отдельных столбцах. В этом запросе второй и третий столбцы — это столбцы Фреда Фуллера, четвертый и пятый — столбцы Доры Талбот и так далее. Во втором столбце функция DECODE проверяет, является ли значение столбца NAME «Фредом Фуллером». Если да, то выполняется расчет; в противном случае возвращается NULL.

      В выходных данных данные были свернуты на строк записей (например, те, которые содержат «Фред Фуллер» в столбце ИМЯ) были преобразованы функцией DECODE, поэтому отдельные строки (для отдельных имен) теперь отображаются в виде отдельных столбцов. Следующий пример дополнительно иллюстрирует сведение путем устранения соединения с таблицей BOKSHELF:

      Оператор PIVOT упрощает создание отчета этого типа.

      Запрос PIVOT выбирает данные из таблицы BOKSHELF_CHECKOUT, а затем сводит их, используя ограничивающие условия в предложении FOR, чтобы определить, какие строки следует оценивать. В этом случае он берет строки, для которых NAME является «Фред Фуллер», и вычисляет максимальную разницу между RETURNED_DATE и CHECKOUT_DATE для первого столбца и использует строки «Dorah Talbot» для второго столбца.

      Два запроса дают одинаковые результаты — максимальное время, в течение которого книга проверялась двумя разными людьми, представленные в виде отдельных столбцов в отчете. Код оператора PIVOT проще читать и им проще управлять. Если, например, вы хотите просмотреть записи дополнительных людей, изменить код PIVOT просто — просто добавьте имена в предложение IN, и в выходных данных появятся новые столбцы; в версии DECODE нужно добавлять код для каждого нового столбца отдельно.

      Наряду с оператором PIVOT Oracle Database 11 g также предоставляет оператор UNPIVOT. Как и следовало ожидать, UNPIVOT выполняет противоположную функцию, превращая столбцы в строки. Обратите внимание, что UNPIVOT не всегда может отменить операцию PIVOT; например, если операция PIVOT выполняет функцию агрегирования, вы не можете использовать UNPIVOT для создания строк сведений, которые были агрегированы.

      В следующем примере показано использование оператора UNPIVOT. В этом примере из таблицы DUAL выбираются пять отдельных значений — по одному для каждой гласной в алфавите. Каждый из этих вариантов обычно отображается в виде отдельного столбца (в данном случае с именами V1, V2, V3, V4 и V5). Затем оператор UNPIVOT преобразует эти столбцы в строки для вывода.

      Результат этого запроса показан в следующем листинге:

      Вы можете использовать операторы PIVOT и UNPIVOT для преобразования столбцов в строки и обратно, как показано в этих примерах. В сочетании с DECODE и CASE эти операторы предоставляют мощные инструменты для отображения и обработки данных.

      Oracle SQL и PL/SQL: SQL Pivot

      SQL PIVOT — это оператор, который можно использовать для поворота строк в отдельные столбцы. Это оператор T-SQL, представленный в SQL Server 2008. Традиционно мы создаем запросы, используя оператор CASE и функцию агрегирования, чтобы создавать отчеты с перекрестными таблицами. Оператор SQL PIVOT берет нормализованную таблицу и преобразует ее в новую таблицу, в которой столбцы новой таблицы получаются из значений исходной таблицы.

      Синтаксис SQL Pivot Operator

      [Источник]

      Пример 1 из SQL PIVOT :

      CRE ATE TABLE PIVOT_ONE(Order_Id INT, Cust_ID INT, Year INT)

      Вставить в значения PIVOT_ONE( 100, 5, 2005)
      Вставить в значения PIVOT_ONE (101, 5, 2005)
      Вставить в значения PIVOT_ONE (102, 5, 2007)
      Вставить в значения PIVOT_ONE (103, 5, 2008)
      Вставить в значения PIVOT_ONE (104, 5, 2009)
      Вставить в значения PIVOT_ONE (105, 5, 2009)
      Вставить в значения PIVOT_ONE (106, 5, 2009)
      Вставить в значения PIVOT_ONE (107, 5, 2010)

      Выбрать * из PIVOT_ONE

      900 80 Год

      900 88 5

      Order_ID Cust_ID
      100 5 2005
      101 5 2005
      102 5 2007
      103 9008 9

      5 2008
      104 5 2009
      105 2009
      106 5 2009
      107 5 2010 900 89

      Теперь, чтобы получить номер. заказов, на клиента 5, на каждый год:

      Выберите * из PIVOT_ONE
      Pivot (count(Order_Id)
      для года в ([2005], [2006], [2007], [2008], [2009], [2010])) как Y
      Где Cust_ID = 5

      Cust_ID 2005 2006 2007 2008 2009 2010
      5 2 0 1 1 3 1 90 089

      В случае запроса PIVOT:

      В операторе SELECT вы указываете значения, на которые хотите ориентироваться.
      Предложение From выглядит нормально, за исключением оператора PIVOT. Этот оператор создает значение, которое вы хотите отобразить в строках вновь созданных столбцов.
      Затем мы используем оператор FOR, чтобы вывести список значений, на которые мы хотим выполнить PIVOT.

      Пример 2 из SQL PIVOT :

      У нас есть таблица «DayWiseIncome». И он будет иметь 3 столбца с именем продавца, названием дня недели и суммой дохода. Чтобы продемонстрировать PIVOT, мы рассмотрим 2 запроса, т.е.
      Запрос (A): Найдите среднее значение для каждого поставщика, а именно. Амит, Панкадж и Винай ежедневно.
      Запрос (B): Найдите максимальный доход за каждый день для любого из 3 продавцов на дневной основе.

       --Создание таблицы DialyIncome
      СОЗДАТЬ ТАБЛИЦУ DayWiseIncome
      (VendorName NVARCHAR(50), DayName NVARCHAR(4), Amount INT)
      --заполнение данных
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "MON", 50)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "WED", 450)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "TUE", 200)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome («ПАНКАЖ», «СР», 920)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "FRI", 100)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "FRI", 100)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ('PANKAJ', 'MON', 360)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "SUN", 400)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("PANKAJ", "FRI", 300)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("VINAY", "TUE", 500)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("VINAY", "TUE", 200)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("VINAY", "SUN", 400)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "MON", 900)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("VINAY", "FRI", 900)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("VINAY", "MON", 500)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ('PANKAJ', 'SUN', 600)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "FRI", 300)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "WED", 500)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "FRI", 300)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("PANKAJ", "THU", 800)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ('PANKAJ', 'SAT', 800)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "TUE", 100)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome («АМИТ», «ЧТ», 300)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("VINAY", "WED", 500)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("AMIT", "SAT", 100)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("VINAY", "SAT", 500)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("VINAY", "THU", 800)
      ВСТАВЬТЕ В ЗНАЧЕНИЯ DayWiseIncome ("PANKAJ", "TUE", 600)
      -- Выберите данные
      ВЫБЕРИТЕ * ИЗ DayWiseIncome
       

      Запрос (A) и (B) Разрешение

      Запрос (A)

      SELECT * FROM DayWiseIncome
      PIVOT (AVG (Amount) FOR Dayname IN
      — оператор FOR для отображения значений, которые мы хотим поворот в столбце «Средний доход».