Некоторые сценарии практического использования DAX в PowerPivot Андрей Коршиков Компания Портал-Юг, Краснодар, Россия Содержание Знакомство с PowerPivot и DAX (если кто-то ещё с ними не знаком) Решение некоторых практических задач Введение в PowerPivot Какие проблемы при создании отчётов? … Какие проблемы при использовании Excel? … Назначение PowerPivot Обработка больших объемов данных на обычном компьютере Поддержка обработки данных на стороне клиента Подключение ко многим источникам данных Надстройка для Excel и SharePoint Системные требования Поддерживаемые операционные системы: Windows 7, Windows Server 2008 R2 (64-bit), Windows XP with SP3 (32-bit), Windows Vista with SP2 (32-bit or 64-bit) и т.д. 32 или 64-разрядный процессор с тактовой частотой 500 МГц или быстрее Как минимум 1 Гб ОЗУ (рекомендуется 2 Гб или более). 3,5 Гб свободного места на жестком диске Источники данных для PowerPivot Базы данных (SQL, Access, SSAS) Каналы данных (RSS) Файлы (текст, Excel) Рабочее пространство PowerPivot Набор таблиц и связи между ними Data Analysis Expressions (DAX) Язык выражения для работы с данными в PowerPivot Набор функций, операторов и констант для построения формул и выражений в PowerPivot С помощью DAX пользователи выполняют многомерный анализ владея базовыми знаниями о многомерном анализе Синтаксис DAX Выражение всегда начинается со знака «=» Аргументы функций (название таблицы, столбца, значение, выражение) заключаются в скобки Название таблицы заключается в кавычки, если содержит пробел Название столбца или меры заключается в квадратные скобки Если не требует аргумента, все равно нужны парные скобки. Например: PI() Синтаксис DAX Например: =(‘Sales’[SalesAmount]*0,05) Таблица Столбец =RELATED('SalesTerritory'[SalesRegion]) ссылка на столбец в связанной таблице Синтаксис DAX =3 =Sales[Column1] =(0.03 *[Amount]) =PI() =(FALSE=0) =TRUE+1 =[Sales] / [Quantity] Типы данных Стандартные: Integer (целое, 8 байт) Real (вещественное, 8 байт) Boolean (true/false) String Date (дата после 1 марта 1900) Currency (валюта) Типы данных Новые: BLANK (аналог NULL в SQL) Table (используется в функциях агрегирования и фильтрации) Преобразование типов данных =12 & 34 ="22"+22 =TRUE+1 =NOW()+1 Обработка пустых значений Выражение BLANK + BLANK BLANK +5 BLANK * 5 5/BLANK 0/BLANK BLANK/BLANK FALSE OR BLANK FALSE AND BLANK TRUE OR BLANK TRUE AND BLANK BLANK OR BLANK BLANK AND BLANK DAX BLANK 5 BLANK Бесконечность NaN BLANK FALSE FALSE TRUE FALSE BLANK BLANK Excel 0 (ноль) 5 0 (ноль) Ошибка Ошибка Ошибка FALSE FALSE TRUE TRUE Ошибка Ошибка http://msdn.microsoft.com/ru-ru/library/ff452238.aspx Операторы Скобки () Арифметические +, -, *, /, Сравнение =, <>, >, >=, <, <= Слияние текста & Логические &&, ||, ! Приоритет операторов Оператор Описание ^ Возведение в степень – Отрицание (как в числе –1) *и/ Умножение и деление ! NOT (унарный оператор) +и– Сложение и вычитание & Объединяет две строки текста =< ><=>=<> Сравнение Вычисляемые столбцы и меры Вычисляемые столбцы Меры Выбор между вычисляемыми столбцами и мерами использование хранение производительность Обработка ошибок Ошибки преобразования типов =SalesOrders[VatCode]+100 =“1+1”+0 Арифметические операции =10/0 =0/0 =(10/0)/(7/0) =9954/(7/0) =SQRT(-1) бесконечность бесконечность NaN 0 #ERROR Обработка ошибок =IFERROR(Sales[Quantity]*Sales[Price],BLANK()) =IFERROR(SQRT(Test[Omega]),BLANK()) =IF(ISNUMBER(Sales[Price]), Sales[Quantity]*Sales[Price],BLANC()) =IF(Test[Omega]>=0,SQRT(Test[Omega]),BLANK()) Группы функций Дата и время DATE DATEVALUE DAY EDATE EOMONTH HOUR MINUTE MONTH NOW SECOND TIME TIMEVALUE TODAY WEEKDAY WEEKNUM YEAR YEARFRAC Информационные Математические ISBLANK ABS ISERROR CEILING, ISO.CEILING ISLOGICAL EXP ISNONTEXT FACT ISNUMBER FLOOR ISTEXT INT LN LOG Logical AND LOG10 IF MOD IFERROR MROUND NOT PI OR POWER FALSE QUOTIENT TRUE RAND RANDBETWEEN ROUND ROUNDDOWN ROUNDUP SIGN SQRT SUM SUMSQ TRUNC Статистические AVERAGE AVERAGEA COUNT COUNTA COUNTBLANK MAX MAXA MIN MINA Строковые CHAR CODE CONCATENATE EXACT FIND FIXED LEFT LEN LOWER MID REPLACE REPT RIGHT SEARCH SUBSTITUTE TRIM UPPER VALUE Демонстрация Пример использования DAX Контекст в формулах DAX Контекст строки =[Freight] + [Tax] =[Freight] + RELATED('Region'[TaxRate]) Контекст запроса =SUM('Sales'[Profit]) Контекст фильтра =MAXX(FILTER(Sales,[ProdKey]=EARLIER( [ProdKey])),Sales[OrderQty]) Контекст в формулах DAX Некоторые сценарии Рабочие дни Есть: Таблица заказов Таблица праздников Нужно: Сколько рабочих дней прошло с момента заказа до поставки товара? Ещё немного о времени Группируем по времени за месяц за квартал за год За аналогичный период… Без вычисления Проценты Суммирование Среднее арифметическое Процентное отношение 𝑉𝑎𝑙𝑢𝑒 𝑃𝑒𝑟𝑐𝑒𝑛𝑡𝑎𝑔𝑒 = 𝑇𝑜𝑡𝑎𝑙 (посмотрим два варианта) ABC-анализ Классификация ресурсов по степени важности: A – наиболее ценные B – промежуточные C – наименее ценные Подсчёт количеств оригинальных Заказчиков/Продуктов (distinct count) = COUNTROWS(DISTINCT(Orders[CustomerID])) Организация между таблицами отношений многие-ко-многим Связи в таблицах а-ля 1С Демонстрация Сценарии использования DAX Ресурсы http://powerpivot.com http://powerpivotfaq.com http://blogs.msdn.com/powerpivot http://msdn.microsoft.com/enus/library/ee634556(SQL.105).aspx http://www.gotdotnet.ru/blogs/korshikov/tag s/?powerpivot http://sqlbi.ineta.ru http://www.microsoftbi.ru Ресурсы Обратная связь Ваше мнение очень важно для нас. Пожалуйста, оцените доклад, заполните анкету и сдайте ее при выходе из зала Спасибо! Вопросы Андрей Коршиков Компания Портал-Юг, Краснодар, Россия korshikov@portal-ug.ru, korshikov@mail.ru http://sqlbi.ineta.ru и www.gotdotnet.ru Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада