В данном репозитории расположен пример использования OLAP-фреймворка Cubes для аггрегации данных, а так же подготовки данных для его работы.
- Python 3.5 и выше
- Jupyter lab (если хотите запускать код в интерактивном окружении, если нет - просто копипастите в любой редактор)
- Сubes framework
- Куча либ из requirements.txt
- Установите python, если его у вас вдруг нету
- Установите cubes:
pip install pytz python-dateutil jsonschema
pip install sqlalchemy flask
pip install cubes
- Установите зависимости из requirements.txt
pip install -r requirements.txt
- Развлекайтесь!
Весь код содержится в файле data_manipulation.ipynb. Если вы ни разу не использовали jupyter, то самым простым вариантом для запуска этого кода будет скопипастить код (только код, не текст!) из ячеек в пустой .py файл.
Помимо файла с данными, для работы Cubes необходимо два файла:
- *_model_.json описывает структуру данных - связь между таблицами, измерения, аггрегации и т.д. Информация о синтаксисе и о том, как это все вообще работает, будет разбросана по полезным ссылкам, т.к. я не думаю, что кто-то на самом деле будет во всем этом разбираться и есть смысл писать полноценное описание.
- slicer.ini содержит информацию для запуска сервера. Все, что надо там изменить - это название файла модели, если вдруг он сменился.
Для запуска сервера cubes напишите в консоли следующее:
slicer serve slicer.ini
После этого по адресу localhost:5000 поднимется сервис, принимающий http запросы. Формат запросов ищите в полезных ссылках.
Установка библиотеки ERAlchemy может отвалиться из-за отсутствия пакета graphviz. Если вам выдало что-то подобное - не пугайтесь, просто установите пакет. Для ubuntu:
sudo apt-get install graphviz-dev
Для других операционных систем - гуглите
- https://habr.com/ru/post/222421/ - единственный русскоязычный туториал, что я нашел. Уже порядком устарел (2014 год, что вы хотите), так что фиксы из описания производить уже не надо.
- https://github.com/DataBrewery/cubes/tree/master/examples/hello_world - простейший туториал, с него очень удобно начинать. Основной репозиторий тоже содержит немного инфы.
- https://github.com/DataBrewery/cubes-examples/tree/master/webshop - гораздо более сложный туториал, в нем показана работа с маппингами, несколькими таблицами и прочей радостью
- https://pythonhosted.org/cubes/index.html - документация. Довольно скудная, к сожалению.
- https://stackoverflow.com/questions/13233809/python-cubes-olap-framework-how-to-work-with-joins - ответ одного из разработчиков cubes, который спас меня после четырех часов страданий. Там описаны такие понятия, как таблицы фактов и таблицы измерений, работа join-ов, naming convention для них и т.д.
Если вы хотите задать вопросы, выразить благодарность или я просто понравился вам как человек и вы хотите со мной пообщаться, пишите:
email (мало ли, вдруг вы настолько старомодные)