Skip to content

Instantly share code, notes, and snippets.

@xrmx
Last active March 27, 2018 19:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xrmx/73b3d19e31637b08e8ba249c5d27e40d to your computer and use it in GitHub Desktop.
Save xrmx/73b3d19e31637b08e8ba249c5d27e40d to your computer and use it in GitHub Desktop.
Descrizione demo del talk tenuto a MERGE-it 2018 https://speakerdeck.com/xrmx/superset-1
Come Demo vorrei farvi vedere quello che ha fatto napo in un suo post ma in modo diverso.
Come dati useremo sempre il dataset del Consip su Bandi e gare del 2017.
Che ho già scaricato qui. Ora per vedere cosa c'è dentro facciamo un head da terminale. Ah!
Ci sono problemi con gli accenti perchè evidentemente in Consip non è arrivato ancora unicode.
Per risolvere problemi di questo tipo la cosa più semplice è caricare il file in LibreOffice,
indovinare l'encoding (conviene scommettere su windows 1252) e riesportarlo in UTF-8.
Visto che ci siamo togliamo anche il commento nell'header che ci da solo fastidio.
Ora che abbiamo un csv utilizzabile andiamo direttamente su superset. Dalla versione 0.23 che
non era ancora rilasciata ai tempi del tutorial di napo è stata inclusa una funzionalitù di
importazione di CSV. Sempre successivamente all'articolo è stata anche tradotto in italiano
(da napo e raffaele Spangaro) e sistemato un imbarazzante bug per cui le traduzioni non
venivano inserite nel pacchetto da Alessandro Baldo.
Andiamo su Sorgenti, quindi upload a CSV, mettiamo table name, mettiamo in parse dates le
date e mettiamo la virgola come Decimal Character. La possibilità di inserire esplicitamente
le colonne fatte a date è disponibile dal commit 76394d3f8f711c2754dbfdd0c6cf7deb6d3ef122
che non è ancora stato rilasciato.
Quindi andiamo in tabelle e dovrebbe esserci la nuova nostra tabella disponibile. Se
clicchiamo in Edit Record vediamo il tracciato del database.
Ogni riga di questa tabella è una colonna. Le colonne interessanti di questa tabella oltre
al nome della colonna del database sono:
- tipo, che mostra il tipo della colonna in database
- raggruppabile, che ci permette di creare grafici che usano aggregazioni su questa colonna
- filtrabile, che ci permette di creare grafici che possono filtrare dati su questa colonna
- count distinct, che ci permette di contare in modo distinto i valori presenti nella colonna
- sum, che ci permette di creare grafici che sommano valori presenti nella colonna
- min, che ci permette di creare grafici che trovano il minimo valore presente nella colonna
- max, che ci permette di creare grafici che trovano il massimo valore presente nella colonna
- è temporale, che identifica le colonne che possono essere usate per i grafici basati sul tempo
Ora proviamo a fare una visualizzazione. Perchè ho poca fantasia useremo due visualizzazioni dal
post di Napo, così in caso avete comunque una reference.
Andiamo da Sorgenti, Tabelle e clicchiamo sul nome della tabella che abbiamo importato. Ora di
default parte un grafico tabellare inutile, ma poco male. Selezioniamo per prima cosa il tipo
di visualizzazione, scriviamo cloud per filtrare perchè vogliamo una word cloud.
La prima cosa di ricordarsi è settare ad una data compatibile con i dati che abbiamo in db la
data di inizio che di default è 7 gg.
Quindi nella parte query dell'interfaccia scegliamo "Categoria Merceologica" come series e la
somma delle base d'asta come metrica. Le metriche di somma e media vengono create automaticamente
all'importazione della tabella per i campi numerici. Un'altra metrica invece che viene creata sempre
è quella per il conteggio delle righe che ritorna la query (COUNT(*)).
Nella parte opzioni invece mettiamo la rotation a flat perchè altrimenti non si capisce niente.
In mezzo alla visualizzazione c'è quel valore ND che non ci piace e quindi lo togliamo mettendo un
filtro sui risultati della query. Qui nei campi filtrabili vediamo solo quelli che abbiamo messo
come tali nella pagina della tabella.
La visualizzazione ci piace quindi la vogliamo salvare e mettere in una dashboard. Mettiamo il nome
del grafico e quindi della dashboard che creeremo. Ora prima di creare un altro grafico vogliamo
compiacerci della dashboard e condividerla col resto del mondo. Quindi copiamoci l'url e lo mandiamo
ad un nostro amico. Oops! Non si vede la dashboard.
Dobbiamo infatti dare i permessi agli utenti non loggati
Per fare questo andiamo in Sicurezza e quindi List Roles. Qui cerchiamo il ruolo Public e gli aggiungiamo
i seguenti permessi:
- can explore json, che permette all'utente di fare query tramite api
- can dashboard, che permette all'utente di visualizzare le dashboard
- datasource access sulla nostra tabella, che permette di accedere ai dati della tabella
Torniamo un attimo alla visualizzazione, in alto a destra c'è un bottone query che ci permette di
vedere la query sql che viene fatta da superset per richeidere i dati che ci permettono di generare
il grafico.
Questo è interessante se vogliamo poter esplorare i nostri dati non solo tramite grafici ma anche
tramite sql. Se lo conosciamo ovviamente.
In Superset è presente un editor SQL chiamato "SQL Lab". SQL Lab ci permette di fare query, salvarle e
quindi ricercarle, condividerle ed esportare i dati tramite csv.
Sqllab ci permette inoltre di creare tabelle dalle query per oltrepassare il limite di Superset di poter
creare grafici dalla singola tabella. Questo ci evita di dove preprocessare i nostri dati. Unica cosa da
fare attenzione è che la tabella viene creata una volta, ed aggiornamenti ai dati da cui è stata fatta
la query non aggiornano la tabella.
Ora aggiungiamo un'altro grafico alla dashboard, in verità qualcosa di diverso un filtro. Andiamo su Grafici,
premiamo il + per aggiungere una nuova riga. Mettiamo la nostra datasource e il tipo di grafico "filter box".
Quindi dobbiamo ricordarci di mettere la nostra data di inizio e scegliere per quali valori filtrare i dati
della nostra tabella. Salviamo il filtro e lo aggiungiamo alla dashboard.
Ora nella dashboard abbiamo il filtro e quando lo usiamo gli altri grafici si aggiornano automaticamente.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment