Kostki (serwer OLAP)
Oryginalni autorzy | Stefana Urbanka |
---|---|
Pierwsze wydanie | 27 marca 2011 |
Wersja stabilna | 1.1 / 2 lipca 2016
|
Magazyn | |
Napisane w | Pyton |
System operacyjny | Międzyplatformowe |
Typ | OLAP |
Licencja | Licencja MIT |
Strona internetowa |
Cubes to lekki, wielowymiarowy model open source i zestaw narzędzi OLAP do tworzenia aplikacji raportujących i przeglądania zagregowanych danych napisanych w języku programowania Python wydanym na licencji MIT .
Cubes zapewnia analitykowi lub dowolnemu użytkownikowi końcowemu aplikacji „zrozumiały i naturalny sposób raportowania z wykorzystaniem koncepcji Data Cubes – wielowymiarowych obiektów danych”.
Cubes został po raz pierwszy udostępniony publicznie w marcu 2011 r. Projekt został pierwotnie opracowany dla zamówień publicznych na Słowacji . Cubes 1.0 został wydany we wrześniu 2014 roku i zaprezentowany na konferencji PyData w Nowym Jorku
Cechy
- OLAP i przeglądanie zagregowane (domyślnie to ROLAP)
- logiczny model kostek OLAP w JSON lub dostarczony ze źródeł zewnętrznych
- wymiary hierarchiczne (atrybuty, które mają hierarchiczne zależności, takie jak kategoria-podkategoria lub kraj-region)
- wiele hierarchii w wymiarze
- wyrażenia arytmetyczne do obliczania miar pochodnych i agregatów
- lokalizowalne metadane i dane
Model
Logiczny model koncepcyjny w Cubes jest opisany za pomocą JSON i może być dostarczony w postaci pliku, pakietu katalogów lub od zewnętrznego dostawcy modelu (na przykład bazy danych). Podstawowymi obiektami modelu są: kostki i ich miary i agregaty, wymiary i ich atrybuty, hierarchie. Model logiczny zawiera również odwzorowanie atrybutów logicznych na ich fizyczną lokalizację w bazie danych (lub innym źródle danych).
Przykładowy model:
{ "kostki" : [ { "nazwa " : " sprzedaż " , " etykieta " : " Nasza sprzedaż " , " wymiary " : [ " data " , " klient " , " lokalizacja " , " produkt " ], " miary " : [ "ilość" ] } ] "wymiary" : [ { "nazwa" : "produkt" , "etykieta" : "Produkt" , "poziomy" : [ { "nazwa" : "kategoria" , "etykieta" : "Kategoria" , "atrybuty" : [ "id_kategorii" , "etykieta_kategorii" ], }, { "nazwa" : "produkt" , "etykieta" : "Produkt" , "atrybuty" : [ "id_produktu" , "etykieta_produktu" ], } ] }, ... ] }
Operacje
Cubes zapewnia podstawowy zestaw operacji, takich jak drążenie i filtrowanie danych ( krojenie i krojenie ). Dostęp do operacji można uzyskać za pośrednictwem interfejsu Pythona lub lekkiego serwera WWW o nazwie Slicer.
Przykład interfejsu Pythona:
import kostek obszar roboczy = obszar roboczy ( "slicer.ini" ) przeglądarka = obszar roboczy . przeglądarka ( "sprzedaż" ) wynik = przeglądarka . agregat ( ) drukuj ( wynik . podsumowanie )
serwer
The Cubes zapewnia nietradycyjny serwer OLAP z zapytaniami HTTP i interfejsem API odpowiedzi JSON . Przykładowe zapytanie, aby uzyskać „łączną kwotę wszystkich umów między styczniem 2012 a czerwcem 2016 według miesiąca”:
http://localhost:5000/cube/contracts/aggregate?drilldown=date&drilldown=criteria&cut=date:2012,1-2012,6&order=date.month:desc
Odpowiedź wygląda następująco:
{ "podsumowanie" : { "kwota_kontraktu" : 10000000.0 }, "reszta" : {}, "komórki" : [ { "data.rok" : 2012 , "kod_kryteriów" : "ekonaj" , "suma_kontraktu" : 12345.0 , "criteria.description" : "najlepsza oferta ekonomiczna" , "criteria.sdesc" : "najlepsza oferta" , "criteria.id" : 3 }, { "date.year" : 2012 , "criteria.code" : "cena" , "kwota_kontraktu" : 23456.0 , "criteria.description" : "najniższa cena" , "criteria.sdesc" : "najniższa cena" , "criteria.id" : 4 }, ... "total_cell_count" : 6 , "agregaty" : [ "kwota_kontraktu" ], "komórka" : [ { "typ" : "zakres" , "wymiar" : "data" , "hierarchia" : "domyślna" , "głębokość_poziomu" : 2 , "odwróć" : fałsz , " ukryte” : fałsz , „od” : [ „2012” , „1” ], „do” : [ „2015” , „6” ] } ], „poziomy” : { „kryteria” : [ „kryteria” ], "data" : [ "rok" ] } }
Prosty interfejs HTTP/JSON bardzo ułatwia integrację raportów OLAP w aplikacjach internetowych napisanych w czystym HTML i JavaScript .
Serwer Slicer zawiera punkty końcowe opisujące metadane kostki , które pomagają tworzyć ogólne aplikacje raportujące, które nie muszą z góry znać struktury modelu bazy danych i hierarchii koncepcyjnych.
Serwer Slicer jest napisany przy użyciu Flask (framework sieciowy) .
ROLAP i SQL
Wbudowany backend SQL frameworka zapewnia funkcjonalność ROLAP na szczycie relacyjnej bazy danych. Cubes zawiera SQL , który tłumaczy zapytania raportowania na instrukcje SQL. Generator zapytań uwzględnia topologię schematu gwiazdy lub płatka śniegu i wykonuje tylko sprzężenia niezbędne do pobrania atrybutów wymaganych przez analityka danych.
Zaplecze SQL używa zestawu narzędzi SQLAlchemy Python do konstruowania zapytań.