/cubes_data_aggregation_example

Example of work with Cubes OLAP framework

Primary LanguageJupyter Notebook

Cubes workflow

В данном репозитории расположен пример использования OLAP-фреймворка Cubes для аггрегации данных, а так же подготовки данных для его работы.

Зависимости

  1. Python 3.5 и выше
  2. Jupyter lab (если хотите запускать код в интерактивном окружении, если нет - просто копипастите в любой редактор)
  3. Сubes framework
  4. Куча либ из requirements.txt

Начало работы

  1. Установите python, если его у вас вдруг нету
  2. Установите cubes:
pip install pytz python-dateutil jsonschema
pip install sqlalchemy flask
pip install cubes
  1. Установите зависимости из requirements.txt
pip install -r requirements.txt
  1. Развлекайтесь!

Внесение изменений

Весь код содержится в файле data_manipulation.ipynb. Если вы ни разу не использовали jupyter, то самым простым вариантом для запуска этого кода будет скопипастить код (только код, не текст!) из ячеек в пустой .py файл.

Помимо файла с данными, для работы Cubes необходимо два файла:

  1. *_model_.json описывает структуру данных - связь между таблицами, измерения, аггрегации и т.д. Информация о синтаксисе и о том, как это все вообще работает, будет разбросана по полезным ссылкам, т.к. я не думаю, что кто-то на самом деле будет во всем этом разбираться и есть смысл писать полноценное описание.
  2. slicer.ini содержит информацию для запуска сервера. Все, что надо там изменить - это название файла модели, если вдруг он сменился.

Для запуска сервера cubes напишите в консоли следующее:

slicer serve slicer.ini

После этого по адресу localhost:5000 поднимется сервис, принимающий http запросы. Формат запросов ищите в полезных ссылках.

Установка библиотеки ERAlchemy может отвалиться из-за отсутствия пакета graphviz. Если вам выдало что-то подобное - не пугайтесь, просто установите пакет. Для ubuntu:

sudo apt-get install graphviz-dev

Для других операционных систем - гуглите

Полезные ссылки:

  1. https://habr.com/ru/post/222421/ - единственный русскоязычный туториал, что я нашел. Уже порядком устарел (2014 год, что вы хотите), так что фиксы из описания производить уже не надо.
  2. https://github.com/DataBrewery/cubes/tree/master/examples/hello_world - простейший туториал, с него очень удобно начинать. Основной репозиторий тоже содержит немного инфы.
  3. https://github.com/DataBrewery/cubes-examples/tree/master/webshop - гораздо более сложный туториал, в нем показана работа с маппингами, несколькими таблицами и прочей радостью
  4. https://pythonhosted.org/cubes/index.html - документация. Довольно скудная, к сожалению.
  5. https://stackoverflow.com/questions/13233809/python-cubes-olap-framework-how-to-work-with-joins - ответ одного из разработчиков cubes, который спас меня после четырех часов страданий. Там описаны такие понятия, как таблицы фактов и таблицы измерений, работа join-ов, naming convention для них и т.д.

Контакты

Если вы хотите задать вопросы, выразить благодарность или я просто понравился вам как человек и вы хотите со мной пообщаться, пишите:

telegram

email (мало ли, вдруг вы настолько старомодные)