Indice

🟦Pronta 🟨Bozza 🟥Da scrivere

Viste pivot

Viste che incrociano due Campi in una tabella "pivot". Sinottici costruiti con le Viste.
Aggiornata il:
Stato: 🟦Pronta

Tabelle pivot

Supponiamo di avere un tipo di Contenuto "Vendita", formato dai seguenti Campi:

  • Regione
  • Prodotto
  • Fatturato

nel quale viene memorizzato il fatturato di un Prodotto in una Regione. Vogliamo aggregare i fatturati in una tabella, dove ogni riga corrisponde una Regione, ogni colonna corrisponde ad un Prodotto e nella cella è mostrato il valore del fatturato di quel Prodotto in quella Regione:

 BiscottiGelatiCaramelleCioccolatoTotale
Piemonte10.0002.0005.0002.00019.000
Lombardia35.00012.00022.0008.00077.000
Liguria6.0001.0002.0001.00010.000
Veneto21.0009.00015.0006.00051.000
Trentino Alto Adige12.0001.0007.0009.00029.000
Friuli Venezia Giulia7.0002.0002.0003.00014.000
Totale91.00027.00053.00029.000200.000

Viste pivot

Per ottenere una tabella del genere con una Vista, dopo aver creato i singoli Contenuti di tipo Vendita (ad esempio, un Contenuto con Regione="Lombardia", Prodotto="Gelati" e Fatturato=12.000, un altro Contenuto con Regione="Veneto", Prodotto="Cioccolato" e Fatturato=6.000 ecc.), è necessario installare e attivare il modulo aggiuntivo "Views Pivot Table". Questo modulo mette a disposizione il display di nome Pivot table (crosstab). che, opportunamente configurato, aggrega i Contenuti come desiderato e provvede anche a calcolare i totali per riga e per colonna.

Ecco come ottenere la tabella sopra descritta:

  • crea la Vista "Vendite" sul tipo di Contenuto "Vendita"
  • nella sezione Campi aggiungi i Campi "Prodotto", "Regione" e "Fatturato"
  • nella sezione Formato seleziona Pivot table (crosstab)
  • nella Impostazioni del Formato:
    • come Row Field seleziona il Campo "Regione"
    • come Column Field seleziona il Campo "Prodotto"
    • come Value Field seleziona il Campo "Fatturato"
    • per aggiungere i totali, sotto Totale attiva le opzioni Add a total column e Add a total row (funziona solo se il Campo selezionato come Value Field è numerico)
  • nella sezione Paginazione seleziona di mostrare tutte le Vendite (altrimenti la tabella sarà limitata alle sole Vendite mostrate nella pagina corrente)
  • nella sezione Criteri di ordinamento ordina per Regione e per Prodotto

Se c'è più di un Contenuto con la medesima coppia Regione - Prodotto, nell'incrocio viene mostrato l'elenco dei fatturati, separati da un carattere configurabile, oppure la loro somma (solo se il Campo indicato come Value Field è numerico).

Mostrare più Campi nella Vista Pivot 

La configurazione di Pivot table (crosstab) consente di selezionare un solo Campo come Value Field da mostrare nell'incrocio. Per superare questo limite e mostrare più Campi nella tabella, possiamo usare come Value Field un Campo Globale - Testo personalizzato in cui aggregare i Campi che vogliamo vedere. 

Ad esempio, se il Contenuto "Vendita" ha anche un Campo "Venditore" col nome del venditore che ha ottenuto quel Fatturato con quel Prodotto in quella Regione, possiamo mostrare nell'incrocio Regione - Prodotto l'elenco dei Venditori col rispettivo Fatturato. Ecco come modificare la Vista "Vendite":

  • nella sezione Campi aggiungi i Campi "Prodotto", "Regione" "Fatturato" e "Venditore"
  • sempre nella sezione Campi aggiungi un Campo Globale - Testo personalizzato nel cui parametro Testo richiamare i Token corrispondenti ai Campi "Venditore" e "Fatturato"
  • nella Impostazioni del Formato:
    • come Row Field seleziona il Campo "Regione"
    • come Column Field seleziona il Campo "Prodotto"
    • come Value Field seleziona il Campo Globale - Testo personalizzato 

Il risultato è questo:

 BiscottiGelatiCaramelleCioccolato
PiemonteRossi 10.000Rossi 2.000Rossi 5.000Rossi 2.000
LombardiaRossi 25.000
Bianchi 10.000
Rossi 12.000Bianchi 12.000
Neri 10.000
Neri 8.000
LiguriaBianchi 6.000Rossi 1.000Bianchi 2.000Bianchi 1.000
VenetoVerdi 21.000Verdi 9.000Bianchi 10.000
Verdi 5.000
Bianchi 6.000
Trentino Alto AdigeVerdi 2.000
Neri 10.000
Verdi 1.000Verdi 7.000Verdi 5.000
Bianchi 4.000
Friuli Venezia GiuliaVerdi 7.000Verdi 2.000Bianchi 2.000Bianchi 3.000

Sinottici

Se come Row Field o Column Field scegliamo un Campo che contiene una data (un Campo Data vero e proprio, oppure un Campo testuale che contiene una stringa che rappresenta un anno, es. "2026"), possiamo utilizzare il formato Pivot table (crosstab) per creare un sinottico, cioè una tabella che mostra eventi relativi a entità differenti, allineandoli temporalmente. 

Un esempio vivo è disponibile in questo mio sito realizzato con Drupal, dedicato alla storia dei partiti politici: la tabella è un sinottico che mostra la partecipazione delle forze politiche ai diversi governi di una legislatura. 

Ecco alcuni dettagli per i più curiosi. Dietro questo sinottico ci sono questi tipi di Contenuti:

  • Orientamento: rappresenta un orientamento politico, caratterizzato da un ordine (dall'estrema sinistra all'estrema destra) e da un colore
  • Soggetto: rappresenta un soggetto politico, caratterizzato da un nome, un s
  • imbolo e un Campo "Orientamento" col riferimento ad un orientamento politico
  • Personaggio: rappresenta un personaggio politico, caratterizzato da nome e ritratto
  • Governo: rappresenta un governo, caratterizzato da un nome, un periodo temporale e un Campo "Presidente" col riferimento ad un Personaggio
  • Tipo Evento: rappresenta un tipo di Evento, caratterizzato da un nome (Maggioranza | Appoggio esterno | Astensione | Opposizione) e da un simbolo
  • Evento: rappresenta una partecipazione di un Soggetto ad un Governo, caratterizzato da un Campo "Soggetto" col riferimento al soggetto politico, un Campo "Governo" col riferimento al governo e un Campo "Tipo" col riferimento al tipo di Evento

Il sinottico è una Vista basata sul tipo di Contenuto "Evento" con questa configurazione:

  • nella sezione Relazioni ci sono i Campi:
    • "Soggetto" che richiama il soggetto politico dell'Evento
    • "Governo" che richiama il governo dell'Evento
    • "(Governo) Presidente" che richiama il Personaggio presidente del Governo
    • "(Soggetto) Orientamento" che richiama l'Orientamento del Soggetto
    • "Tipo" che richiama il tipo di Evento
  • nella sezione Campi ci sono i Campi:
    • "(Soggetto) Titolo" che contiene il nome del soggetto politico
    • "(Soggetto) Simbolo" che contiene il simbolo del soggetto politico
    • "(Orientamento) Colore" che contiene l'immagine colorata dell'orientamento politico del soggetto
    • "(Governo) Titolo" che contiene il nome del Governo
    • "(Governo) Inizio" che contiene l'anno-mese di inizio del Governo 
    • "(Presidente) Ritratto" che contiene il ritratto del presidente del Governo
    • un Campo Globale che assembla "(Orientamento) Colore -  (Soggetto) Simbolo - (Soggetto) Titolo"
    • un Campo Globale che assembla "(Presidente) Ritratto - (Governo) Titolo -  (Governo) Inizio"
    • "(Tipo) Simbolo" che contiene il simbolo che caratterizza il tipo di Evento
  • nella sezione Formato è selezionato Pivot table (crosstab) con queste Impostazioni:
    • Row Field = il primo Campo Globale con le informazioni del Soggetto politico
    • Column Field = il secondo Campo Globale con le informazioni del Governo
    • Value Field =  il Campo "(Tipo) Simbolo"
  • nella sezione Criteri di ordinamento ci sono i Campi:
    • "(Ordinamento) Ordine" per ordinare le righe dei Soggetti per orientamento politico
    • "(Governo) Inizio" per ordinare le colonne dei Governi per anno-mese