Оригинальный автор (ы) | Стефан Урбанек [1] |
---|---|
изначальный выпуск | 27 марта 2011 г . |
Стабильный выпуск | 1.1 / 2 июля 2016 г . |
Написано в | Python |
Операционная система | Кроссплатформенность |
Тип | OLAP |
Лицензия | Лицензия MIT [2] |
Интернет сайт | кубы |
Cubes - это облегченный набор инструментов для многомерного моделирования с открытым исходным кодом и OLAP для разработки приложений отчетности и просмотра агрегированных данных, написанных на языке программирования Python, выпущенный по лицензии MIT .
Кубы предоставляют аналитику или любому конечному пользователю приложения «понятный и естественный способ составления отчетов с использованием концепции данных. Кубы - многомерные объекты данных».
Кубики были впервые публично выпущены в марте 2011 года проект был первоначально разработан для государственных закупок в Словакии . [3] Cubes 1.0 был выпущен в сентябре 2014 года и представлен на конференции PyData в Нью-Йорке [4]
Особенности [ править ]
- OLAP и агрегированный просмотр (по умолчанию ROLAP)
- логическая модель кубов OLAP в формате JSON или предоставленная из внешних источников
- иерархические измерения (атрибуты, которые имеют иерархические зависимости, такие как категория-подкатегория или страна-регион)
- несколько иерархий в измерении
- арифметические выражения для вычисления производных показателей и агрегатов
- локализуемые метаданные и данные
Модель [ править ]
Логическая концептуальная модель в Cubes описывается с использованием JSON и может быть предоставлена либо в виде файла, либо в виде пакета каталогов, либо от внешнего поставщика модели (например, базы данных). Основными объектами модели являются: кубы и их меры и агрегаты, измерения и их атрибуты, иерархии. Логическая модель также содержит отображение логических атрибутов на их физическое расположение в базе данных (или другом источнике данных).
Пример модели:
{ "кубики" : [ { "имя" : "продажи" , "этикетка" : "наши продажи" , "размеры" : [ "дата" , "клиент" , "местоположение" , "продукт" ], "меры" : [ "amount" ] } ] "sizes" : [ { "name" : "product" , "label" : "Product" , "уровни" : [ { "имя" : "категория", "label" : "Категория" , "attributes" : [ "category_id" , "category_label" ], }, { "name" : "product" , "label" : "Product" , "attributes" : [ "product_id" , "product_label" ], } ] }, ... ] }
Операции [ править ]
Cubes предоставляет базовый набор операций, таких как детализация и фильтрация данных ( нарезка и нарезка кубиками ). Доступ к операциям можно получить либо через интерфейс Python, либо через легкий веб-сервер под названием Slicer.
Пример интерфейса Python:
импортные кубикирабочая область = рабочая область ( "слайсер.ini" ) браузер = рабочая область . браузер ( "продажи" )результат = браузер . агрегат ()печать ( результат . резюме )
Сервер [ править ]
Cubes предоставляет нетрадиционный сервер OLAP с HTTP- запросами и API ответов JSON . Пример запроса для получения «общей суммы всех контрактов с января 2012 г. по июнь 2016 г. по месяцам»:
http: // localhost: 5000 / cube / contract / aggregate? Drilldown = date & Drilling = критерии & cut = date: 2012,1-2012,6 & order = date.month: desc
Ответ выглядит так:
{ "сводка" : { "сумма_контракта" : 10000000.0 }, "остаток" : {}, "ячейки" : [ { "дата.год" : 2012 г. , "критерий.код" : "эконай" , " сумма_контракта " : 12345.0 , "критерия.описание" : "экономически лучшее предложение" , "критерий.sdesc" : "лучшее предложение" , "критерий.id" : 3 }, { "дата.год " : 2012 , " критерий.код ": "Читать больше" , "contract_amount_sum" : 23456,0 , "criteria.description" : "низкая цена" , "criteria.sdesc" : "низкая цена" , "criteria.id" : 4 }, ... "total_cell_count" : 6 , «агрегаты» : [ «сумма_контракта» ], «ячейка» : [ { «тип» : «диапазон» , «измерение» : «дата» , "иерархия" : "по умолчанию" , «level_depth» : 2 , «invert» : false , «hidden» : false , «from» : [ «2012» , «1» ], «to» : [ «2015» , «6» ] } ], «уровни " : { " критерии " : [ " критерии " ], " дата " : [ " год " ] } }
Простой интерфейс HTTP / JSON позволяет очень легко интегрировать отчеты OLAP в веб-приложения, написанные на чистом HTML и JavaScript .
Сервер Slicer содержит конечные точки, описывающие метаданные куба, которые помогают создавать общие приложения для создания отчетов [5], которым не нужно заранее знать структуру модели базы данных и концептуальные иерархии.
Сервер Slicer написан с использованием Flask (веб-фреймворк) .
ROLAP и SQL [ править ]
Встроенный SQL- сервер инфраструктуры обеспечивает функциональность ROLAP поверх реляционной базы данных. Кубы содержат генератор запросов SQL, который переводит запросы отчетов в операторы SQL. Генератор запросов принимает во внимание топологию схемы « звезда» или « снежинка» и выполняет только соединения, необходимые для получения атрибутов, требуемых аналитиком данных.
Серверная часть SQL использует набор инструментов SQLAlchemy Python для построения запросов.
См. Также [ править ]
- SQLAlchemy
Ссылки [ править ]
- ^ Стефан Урбанек - создатель Cubes и Data Brewery.
- ^ "DataBrewery / cubes / blob / master / ЛИЦЕНЗИЯ" . Github . Проверено 21 февраля 2015 года .
- ^ Государственные закупки Словакии от Transparency International Slovakia
- ^ Обзор Cubes 1.0 на PyData NYC 2014 (видео) .
- ^ Программа просмотра кубов
Внешние ссылки [ править ]
- Официальный веб-сайт