Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Официальный веб-сайт