Кубы (сервер OLAP) - Cubes (OLAP server)

Кубики
Оригинальный автор (ы)Стефан Урбанек[1]
изначальный выпуск27 марта 2011 г.; 9 лет назад (2011-03-27)
Стабильный выпуск
1.1 / 2 июля 2016 г.; 4 года назад (2016-07-02)
Написано вPython
Операционная системаКроссплатформенность
ТипOLAP
ЛицензияЛицензия MIT[2]
Интернет сайткубики.databrewery.org

Кубики легкий Открытый исходный код многомерное моделирование и 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 для построения запросов.

Смотрите также

Рекомендации

  1. ^ Стефан Урбанек - создатель Cubes и Data Brewery.
  2. ^ "DataBrewery / cubes / blob / master / LICENSE". Github. Получено 21 февраля 2015.
  3. ^ Государственные закупки Словакии к Transparency International Словакия
  4. ^ Обзор Cubes 1.0 на PyData NYC 2014 (видео).
  5. ^ Наблюдатель кубов

внешняя ссылка