Кубы (сервер OLAP) - Cubes (OLAP server)
Оригинальный автор (ы) | Стефан Урбанек[1] |
---|---|
изначальный выпуск | 27 марта 2011 г. |
Стабильный выпуск | 1.1 / 2 июля 2016 г. |
Написано в | Python |
Операционная система | Кроссплатформенность |
Тип | OLAP |
Лицензия | Лицензия MIT[2] |
Интернет сайт | кубики |
Кубики легкий Открытый исходный код многомерное моделирование и OLAP набор инструментов для разработки приложений отчетности и просмотра агрегированных данных, записанных на Язык программирования Python выпущен под Лицензия MIT.
Cubes предоставляет аналитику или конечному пользователю любого приложения «понятный и естественный способ отчетности с использованием концепции кубы данных - многомерные объекты данных ».
Первый публичный выпуск Cubes состоялся в марте 2011 года. Первоначально проект разрабатывался для Государственные закупки из Словакия.[3] Cubes 1.0 был выпущен в сентябре 2014 года и представлен на конференции PyData в Нью-Йорке.[4]
Функции
- OLAP и агрегированный просмотр (по умолчанию ROLAP)
- логическая модель Кубы OLAP в JSON или предоставлено из внешних источников
- иерархические измерения (атрибуты, которые имеют иерархические зависимости, такие как категория-подкатегория или страна-регион)
- несколько иерархий в измерении
- арифметические выражения для вычисления производных меры и агрегаты
- локализуемый метаданные и данные
Модель
Логическая концептуальная модель в Cubes описывается с помощью JSON и может быть предоставлен либо в форме файла, пакета каталогов, либо от внешнего поставщика модели (например, базы данных). Основные объекты модели: кубики и их меры и агрегаты, измерения и их атрибуты, иерархии. Логическая модель также содержит отображение логических атрибутов на их физическое расположение в базе данных (или другом источнике данных).
Пример модели:
{ "кубики": [ { "имя": "продажи", "метка": «Наши продажи», "размеры": [ "Дата", "покупатель", "место расположения", "товар" ], "меры": [ "количество" ] } ] "размеры": [ { "имя": "товар", "метка": "Товар", "уровни": [ { "имя":"категория", "метка":«Категория», "атрибуты": [ "category_id", "category_label" ], }, { "имя":"товар", "метка":"Товар", "атрибуты": [ "идантификационный номер продукта", "product_label" ], } ] }, ... ]}
Операции
Кубы предоставляют базовый набор операций, таких как Бурение данных и фильтрация (нарезка и нарезка кубиками ). Доступ к операциям можно получить либо через интерфейс Python, либо через световой веб сервер называется слайсер.
Пример интерфейса Python:
импорт кубикирабочая среда = Рабочая среда("слайсер.ini")браузер = рабочая среда.браузер("продажи")результат = браузер.совокупность()Распечатать(результат.резюме)
Сервер
Cubes предоставляет нетрадиционный сервер OLAP с HTTP запросы и JSON отклик API. Пример запроса для получения «общей суммы всех контрактов с января 2012 года по июнь 2016 года по месяцам»:
http: // localhost: 5000 / cube / contract / aggregate? Drilldown = date & Drilling = критерии & cut = date: 2012,1-2012,6 & order = date.month: desc
Ответ выглядит так:
{ "резюме": { "contract_amount_sum": 10000000.0 }, "остаток": {}, "клетки": [ { "date.year": 2012, "критерий.код": "эконай", "contract_amount_sum": 12345.0, "критерии.описание": «экономически лучшее предложение», "критерий.sdesc": "Лучшее предложение", "критерий.ид": 3 }, { "date.year": 2012, "критерий.код": "Сена", "contract_amount_sum": 23456.0, "критерии.описание": "самая низкая цена", "критерий.sdesc": "самая низкая цена", "критерий.ид": 4 },... "total_cell_count": 6, «агрегаты»: [ "contract_amount_sum" ], "клетка": [ { "тип": "классифицировать", "измерение": "Дата", "иерархия": "дефолт", "level_depth": 2, "инвертировать": ложный, "скрытый": ложный, "из": ["2012", "1" ], "к": ["2015", "6" ] } ], "уровни": { "критерии": [ "критерии" ], "Дата": [ "год" ] }}
Простой интерфейс HTTP / JSON позволяет очень легко интегрировать отчеты OLAP в веб-приложения, написанные на чистом HTML и JavaScript.
Сервер слайсера содержит конечные точки, описывающие куб метаданные, которые помогают создавать общие приложения для отчетов[5] которым не нужно заранее знать структуру модели базы данных и концептуальные иерархии.
Сервер слайсера написан с использованием Flask (веб-фреймворк).
ROLAP и SQL
Встроенный SQL бэкэнд фреймворка предоставляет ROLAP функциональность поверх реляционной базы данных. Кубики содержат SQL генератор запросов, который переводит запросы отчетов в операторы SQL. Генератор запросов учитывает топология из звезда или же схема снежинки и выполняет только те соединения, которые необходимы для получения атрибутов, требуемых аналитиком данных.
Серверная часть SQL использует SQLAlchemy Набор инструментов Python для построения запросов.