Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемЛюдмила Тартакова
1 Нарастающие итоги в MDX Фёдор Самородов
2 Страница 2 Фёдор Самородов
3 Страница 3 Нарастающий итог – классика отчётного жанра
4 Страница 4 Считаем нарастающий итог средствами MDX Дано: Многомерная база данных Календарная размерность Временная иерархия с нужной степенью гранулярности Требуется: Просуммировать меру накопительным итогом Результат представить в виде обыкновенного cellsetа
5 Страница 5 Стратегия решения задачи Запускаем скользящее окно вдоль временной иерархии Привязка к текущей временной отметке через CurrentMember Суммируем факты, вырезанные скользящим окном
6 Страница 6 Метод 1 Простое скользящее окно 1. Нижняя граница окна фиксирована в «минус бесконечность» –NULL 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum ({NULL:Размерность.Иерархия.CurrentMember}, …)
7 Страница 7 Метод 2 PeriodsToDate 1. Используем стандартное накопительное скользящее окно –PeriodsToDate () 2. Общий родитель – корневой элемент (верхний уровень) –Размерность.Иерархия.[Верхний уровень].Level 3. Размер окна растёт вдоль временной иерархии –Размерность.Иерархия.CurrentMember 4. Суммируем по скользящему окну –Sum (PeriodsToDate (…), …)
8 Страница 8 Метод 3 OpeningPeriod 1. Нижняя граница окна стоит на первой календарной отметке –OpeningPeriod (…, Размерность.Иерархия.[Верхний уровень]) 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum ({OpeningPeriod (…):….CurrentMember}, …)
9 Страница 9 Метод 4 FirstChild 1. Нижняя граница окна стоит на первой календарной отметке –Размерность.Иерархия.CurrentMember.FirstChild 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum (….FirstChild:….CurrentMember, …)
10 Страница 10 Метод 5 Item (0) 1. Нижняя граница окна стоит на первой календарной отметке –Размерность.Иерархия.CurrentMember.Level.Members.Item (0) 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum (….Item (0):….CurrentMember, …)
11 Страница 11 Метод 6 Parent + Item 1. Нижняя граница окна стоит на первой календарной отметке –….CurrentMember.Parent.Item (0).Item (1) 2. Верхняя граница движется вдоль временной иерархии –Размерность.Иерархия.CurrentMember 3. Суммируем по диапазону между границами окна –Sum (….Parent.Item (0).Item (1):….CurrentMember, …)
12 Страница 12 Новая стратегия решения Не будем использовать скользящее окно Перебираем элементы последовательно Накапливаем итоговую сумму Оформим рекурсию в секции WITH
13 Страница 13 Метод 7 Рекурсия Якорь рекурсии –Если это первый элемент, берём его значение Шаг рекурсии –Суммируем текущий элемент с накопленным итогом –Запоминаем накопленный итог
14 Страница 14 Ещё одна стратегия Отранжируем множество по времени Из отранжированного множества возьмём начало Будем суммировать прошедший период
15 Страница 15 Метод 8 Ранжирование Ранжируем все значения по времени –Rank (…) Выделяем прошедший период –Head (…) Суммируем прошедший период –Sum (Head (…))
16 Страница 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 Страница 17 Метод 9 Самый лучший метод Работает быстрее всех предыдущих методов Синтаксически – самый простой способ Работает с любыми агрегатными функциями –в том числе с DistinctCount Наилучший вариант для применения в реальных проектах
18 Страница 18 Трёхдневный курс по MDX-запросам в Специалисте Specialist.ru/Course/M50578A Один из разделов курса посвящён операциям над календарём: –Работа с измерением времени –Множественные календари –Расходящиеся горизонты –Вычисляемые временные члены и агрегаты –Периоды: параллельные, открывающие, закрывающие… –Сравнение по периодам, расчёт тенденций
19 Страница 19 В следующих сериях про MDX-запросы Полуаддитивные меры Нестандартные агрегации Проклятый DistinctCount!!! Шаблоны и анти шаблоны Полезные приёмы для программирования индикаторов Динамическое ограничение доступа Существует ли «оптимизация MDX-запросов»? … и ещё много MDX-софткора и MDX-хардкора!
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.