Нарастающие итоги в MDX Фёдор Самородов. Страница 2 www.specialist.ru Фёдор Самородов Fedor@Samorodov.ru

Презентация:



Advertisements
Похожие презентации
1 Массивы 2 Опр. Массивом называется совокупность однотипных данных, связанных общим именем. Основные характеристики массива: 1. Имя массива 2. Тип компонентов.
Advertisements

Интернет Университет Суперкомпьютерных технологий Лекция 1 Основные понятия Учебный курс Введение в параллельные алгоритмы Якобовский М.В., д.ф.-м.н. Институт.
Найди недостающее слагаемое
БАЗЫ ДАННЫХ. ACCESS 2003 © К.Ю. Поляков, 2007 Запросы.
Что нужно знать: динамическое программирование – это способ решения сложных задач путем сведения их к более простым задачам того же типа динамическое.
1 Язык сети Петри Алфавит Σ– конечное множество символов. Строка – любая последовательность символов конечной длины из символов алфавита Пустая строка.
Цель урока: повторить и закрепить понятие «система координат»
1 2. Матрицы. 2.1 Матрицы и их виды. Действия над матрицами. Джеймс Джозеф Сильвестр.
MiftakhvaVF_2008 Муниципальное общеобразовательное учреждение лицей 1 г. Сургута, ХМАО-Югры.
Интеграция Primavera и сметных программ: подходы к передаче плановых и фактических данных Гриценко Николай Генеральный директор, ООО «Компания ИнфоСтрой»
Powerpoint Templates Page 1 Язык разметки гипертекста HTML.
Математический диктант 17,9 Вычислите: 1 вариант 2 вариант – 8,3 + (–11,5) – (– 1,9) 1.1. – 6,1 + (–12,4) – (– 2,8) 15, – – – 13 3.
Все сведения в форме или отчете содержатся в элементах управления.
10. Дано: Найти: К А B 4 М О С N Дано: Найти: AB O C.
Содержание Понятие числовой последовательности Примеры числовых последовательностей Способы задания последовательностей Ограниченность числовых последовательностей.
Информационные технологии Выбор вариантов 2 1.Выполнение последовательности операторов. 2.Выполнение определенной последовательности операторов.
Последовательность. Арифметическая прогрессия.. Последовательностью называется функция заданная на множестве N натуральных чисел или на множестве n первых.
Н Как можно назвать эти фигуры одним словом? Какая из фигур лишняя и почему?
1Windows Microsoft OfficeСостав 1.Microsoft Word 2.Microsoft Excel 3.Microsoft Access 4.Microsoft PowerPoint 5.Microsoft Outlook 6.Microsoft FrontPage.
1 ЧТО МОЖНО ДЕЛАТЬ? ЧЕГО ДЕЛАТЬ НЕЛЬЗЯ? ЧТО ЛЮДИ ОБЯЗАНЫ ДЕЛАТЬ? ЧЕГО ОНИ ДЕЛАТЬ НЕ ОБЯЗАНЫ? 3 КАКИЕ У ЧЕЛОВЕКА ЕСТЬ ПРАВА? КАКИЕ У ЧЕЛОВЕКА ЕСТЬ ОБЯЗАННОСТИ?
Транксрипт:

Нарастающие итоги в MDX Фёдор Самородов

Страница 2 Фёдор Самородов

Страница 3 Нарастающий итог – классика отчётного жанра

Страница 4 Считаем нарастающий итог средствами MDX Дано: Многомерная база данных Календарная размерность Временная иерархия с нужной степенью гранулярности Требуется: Просуммировать меру накопительным итогом Результат представить в виде обыкновенного cellsetа

Страница 5 Стратегия решения задачи Запускаем скользящее окно вдоль временной иерархии Привязка к текущей временной отметке через CurrentMember Суммируем факты, вырезанные скользящим окном

Страница 6 Метод 1 Простое скользящее окно 1. Нижняя граница окна фиксирована в «минус бесконечность» –NULL 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum ({NULL:Размерность.Иерархия.CurrentMember}, …)

Страница 7 Метод 2 PeriodsToDate 1. Используем стандартное накопительное скользящее окно –PeriodsToDate () 2. Общий родитель – корневой элемент (верхний уровень) –Размерность.Иерархия.[Верхний уровень].Level 3. Размер окна растёт вдоль временной иерархии –Размерность.Иерархия.CurrentMember 4. Суммируем по скользящему окну –Sum (PeriodsToDate (…), …)

Страница 8 Метод 3 OpeningPeriod 1. Нижняя граница окна стоит на первой календарной отметке –OpeningPeriod (…, Размерность.Иерархия.[Верхний уровень]) 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum ({OpeningPeriod (…):….CurrentMember}, …)

Страница 9 Метод 4 FirstChild 1. Нижняя граница окна стоит на первой календарной отметке –Размерность.Иерархия.CurrentMember.FirstChild 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum (….FirstChild:….CurrentMember, …)

Страница 10 Метод 5 Item (0) 1. Нижняя граница окна стоит на первой календарной отметке –Размерность.Иерархия.CurrentMember.Level.Members.Item (0) 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum (….Item (0):….CurrentMember, …)

Страница 11 Метод 6 Parent + Item 1. Нижняя граница окна стоит на первой календарной отметке –….CurrentMember.Parent.Item (0).Item (1) 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum (….Parent.Item (0).Item (1):….CurrentMember, …)

Страница 12 Новая стратегия решения Не будем использовать скользящее окно Перебираем элементы последовательно Накапливаем итоговую сумму Оформим рекурсию в секции WITH

Страница 13 Метод 7 Рекурсия Якорь рекурсии –Если это первый элемент, берём его значение Шаг рекурсии –Суммируем текущий элемент с накопленным итогом –Запоминаем накопленный итог

Страница 14 Ещё одна стратегия Отранжируем множество по времени Из отранжированного множества возьмём начало Будем суммировать прошедший период

Страница 15 Метод 8 Ранжирование Ранжируем все значения по времени –Rank (…) Выделяем прошедший период –Head (…) Суммируем прошедший период –Sum (Head (…))

Страница 16 Производительность Метод Время выполнения (18485 строк, Sum (), int) 1 «Метод 9» 0:02 2 OpeningPeriod 3:55 3 Parent + Item 4:05 4 Простое скользящее окно 4:12 5 FirstChild 4:20 6 Item (0) 4:25 7 PeriodsToDate 4:29 8 Рекурсия 6:01 9 Ранжирование 11:29

Страница 17 Метод 9 Самый лучший метод Работает быстрее всех предыдущих методов Синтаксически – самый простой способ Работает с любыми агрегатными функциями –в том числе с DistinctCount Наилучший вариант для применения в реальных проектах

Страница 18 Трёхдневный курс по MDX-запросам в Специалисте Specialist.ru/Course/M50578A Один из разделов курса посвящён операциям над календарём: –Работа с измерением времени –Множественные календари –Расходящиеся горизонты –Вычисляемые временные члены и агрегаты –Периоды: параллельные, открывающие, закрывающие… –Сравнение по периодам, расчёт тенденций

Страница 19 В следующих сериях про MDX-запросы Полуаддитивные меры Нестандартные агрегации Проклятый DistinctCount!!! Шаблоны и анти шаблоны Полезные приёмы для программирования индикаторов Динамическое ограничение доступа Существует ли «оптимизация MDX-запросов»? … и ещё много MDX-софткора и MDX-хардкора!