Кубы (OLAP-сервер)
Оригинальный автор(ы) | Стефан Урбанек [ 1 ] |
---|---|
Первоначальный выпуск | 27 марта 2011 г |
Стабильная версия | 1.1
/ 2 июля 2016 г |
Репозиторий | github |
Написано в | Питон |
Операционная система | Кросс-платформенный |
Тип | ОЛАП |
Лицензия | МОЯ лицензия [ 2 ] |
Веб-сайт | кубики |
Cubes — это легкий с открытым исходным кодом набор инструментов многомерного моделирования и OLAP для разработки приложений для создания отчетов и просмотра агрегированных данных, написанных на языке программирования Python, выпущенный под лицензией MIT .
Cubes предоставляет аналитику или любому конечному пользователю приложения «понятный и естественный способ составления отчетов с использованием концепции кубов данных – многомерных объектов данных».
Первоначально проект разрабатывался для Службы государственных закупок Словакии Впервые Cubes был публично выпущен в марте 2011 года . . [ 3 ] Cubes 1.0 был выпущен в сентябре 2014 года и представлен на конференции PyData в Нью-Йорке. [ 4 ]
Функции
[ редактировать ]- OLAP и агрегированный просмотр (по умолчанию — ROLAP)
- логическая модель OLAP-кубов в формате JSON или предоставленная из внешних источников
- иерархические измерения (атрибуты, имеющие иерархические зависимости, например категория-подкатегория или страна-регион)
- несколько иерархий в измерении
- арифметические выражения для вычисления производных показателей и агрегатов
- локализуемые метаданные и данные
Cubes способен обрабатывать большие объемы данных и сложные запросы. Согласно обзору TechTarget, Cubes может обрабатывать «объемы данных в сотни миллионов строк» и «сложные запросы и вычисления, требующие многоуровневого агрегирования и динамического подмножества». Кроме того, в обзоре отмечается, что Cubes хорошо подходит для небольших организаций или групп, которым не требуется сложность и масштабируемость решений OLAP корпоративного уровня. [ 5 ]
Модель
[ редактировать ]Логическая концептуальная модель в Cubes описывается с использованием JSON и может быть предоставлена либо в форме файла, пакета каталогов, либо от внешнего поставщика модели (например, базы данных). Базовыми объектами модели являются: кубы и их меры и агрегаты, измерения и их атрибуты, иерархии. Логическая модель также содержит сопоставление логических атрибутов с их физическим расположением в базе данных (или другом источнике данных).
Пример модели:
{
"cubes": [
{
"name": "sales",
"label": "Our Sales",
"dimensions": [ "date", "customer", "location", "product" ],
"measures": [ "amount" ]
}
]
"dimensions": [
{
"name": "product",
"label": "Product",
"levels": [
{
"name":"category",
"label":"Category",
"attributes": [ "category_id", "category_label" ],
},
{
"name":"product",
"label":"Product",
"attributes": [ "product_id", "product_label" ],
}
]
},
...
]
}
Операции
[ редактировать ]Кубы предоставляют базовый набор операций, таких как данных детализация и фильтрация ( нарезка и нарезка кубиками ). Доступ к операциям можно получить либо через интерфейс Python, либо через легкий веб-сервер под названием Slicer.
Пример интерфейса Python:
import cubes
workspace = Workspace("slicer.ini")
browser = workspace.browser("sales")
result = browser.aggregate()
print(result.summary)
Сервер
[ редактировать ]Cubes предоставляет нетрадиционный OLAP-сервер с HTTP- запросами и JSON ответов API . Пример запроса для получения «общей суммы всех контрактов с января 2012 г. по июнь 2016 г. по месяцам»:
http://localhost:5000/cube/contracts/aggregate?drilldown=date&drilldown=criteria&cut=date:2012,1-2012,6&order=date.month:desc
Ответ выглядит так:
{
"summary": {
"contract_amount_sum": 10000000.0
},
"remainder": {},
"cells": [
{
"date.year": 2012,
"criteria.code": "ekonaj",
"contract_amount_sum": 12345.0,
"criteria.description": "economically best offer",
"criteria.sdesc": "best offer",
"criteria.id": 3
},
{
"date.year": 2012,
"criteria.code": "cena",
"contract_amount_sum": 23456.0,
"criteria.description": "lowest price",
"criteria.sdesc": "lowest price",
"criteria.id": 4
},
...
"total_cell_count": 6,
"aggregates": [
"contract_amount_sum"
],
"cell": [
{
"type": "range",
"dimension": "date",
"hierarchy": "default",
"level_depth": 2,
"invert": false,
"hidden": false,
"from": ["2012", "1" ],
"to": ["2015", "6" ]
}
],
"levels": {
"criteria": [ "criteria" ],
"date": [ "year" ]
}
}
Простой интерфейс HTTP/JSON позволяет легко интегрировать отчеты OLAP в веб-приложения, написанные на чистом HTML и JavaScript .
Сервер Slicer содержит конечные точки, описывающие метаданные куба , которые помогают создавать универсальные приложения для создания отчетов. [ 6 ] которым не обязательно заранее знать структуру модели базы данных и концептуальные иерархии.
Сервер Slicer написан с использованием Flask (веб-фреймворка) .
РОЛАП и SQL
[ редактировать ]Встроенный SQL- сервер платформы обеспечивает функциональность ROLAP поверх реляционной базы данных. Кубы содержат генератор запросов SQL , который преобразует запросы отчетов в инструкции SQL. Генератор запросов учитывает топологию и выполняет только схемы «звезда» или «снежинка» соединения, необходимые для получения атрибутов, необходимых аналитику данных.
Серверная часть SQL использует набор инструментов SQLAlchemy Python для построения запросов.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Стефан Урбанек — создатель Cubes and Data Brewery.
- ^ «DataBrewery/cubes/blob/master/LICENSE» . Гитхаб . Проверено 21 февраля 2015 г.
- ^ Государственные закупки Словакии, проведенные Transparency International Словакия.
- ^ Обзор Cubes 1.0 на PyData NYC 2014 (видео) .
- ^ «OLAP-сервер Cubes с открытым исходным кодом подходит для бизнес-пользователей» . ПоискБизнесАналитика . Проверено 28 марта 2023 г.
- ^ Средство просмотра кубов