Kostki (serwer OLAP)

Kostki
Oryginalni autorzy Stefana Urbanka
Pierwsze wydanie 27 marca 2011 ; 11 lat temu ( 27.03.2011 )
Wersja stabilna
1.1 / 2 lipca 2016 ; 6 lat temu ( 2016-07-02 )
Magazyn github.com/DataBrewery/cubes _ _ _
Napisane w Pyton
System operacyjny Międzyplatformowe
Typ OLAP
Licencja Licencja MIT
Strona internetowa kostki .databrewery .org

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

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ń.

Zobacz też

Linki zewnętrzne