Continuiamo il nostro viaggio nel mondo delle tabelle, esplorando nuove modalità di presentazione dei dati nella modalità più utilizzata quando vogliamo avere un controllo preciso sul dettaglio: quella della Table Pagination in Tableau.
Come fare se abbiamo un lungo elenco di dati e poco spazio per mostrarli? Una soluzione potrebbe essere quella di distribuire i valori su più fogli e navigare tra di essi. In questo caso ci può venire in aiuto la costruzione di una “table pagination”: un selettore permette di scorrere tra i fogli, indentificati da numeri progressivi. Questo è un sistema che siamo molto abituati ad utilizzare quando navighiamo ad esempio nelle pagine web.
Questa azione può essere resa ulteriormente più efficace se combinata alla possibilità di scegliere quante righe visualizzare nel singolo foglio. Per approfondire, puoi leggere questo articolo dal nostro blog.
Ricostruire richiede la creazione di 4 fogli di lavoro: uno per la tabella vera e propria, uno per il selettore numerico, un foglio per la freccia destra e uno per la freccia sinistra. Il tutto messo in interazione grazie ad un sistema di azioni nella dashboard. Pronti? Partiamo!
Costruire la tabella base
Crea una connessione al Sample – Superstore dataset presente tra le saved data sources di Tableau. Apri un nuovo foglio di lavoro e rinominalo “Table”. Porta Customer Name in riga e ordina il campo in base alla somma di Sales. Poi crea le misure necessarie per costruire la tabella: sono presenti la somma di Sales, la somma di Profit, la somma di Quantity, utilizzate come misure base, e Sales/Quantity, Profit/Quantity, Total Orders, Profit Ratio, che invece devono essere costruite.
Sales/Quantity deriva da:
SUM([Sales])/SUM([Quantity])
Profit/Quantity deriva da:
SUM([Profit])/SUM([Quantity])
Total Orders deriva da:
COUNTD([Order ID])
E infine Profit Ratio deriva da:
SUM([Profit])/SUM([Sales])
Ora che tutte le misure sono state definite, porta Measure Names in colonna e Measure Values in testo. Trascina poi Measure Names in filtro, selezionando le 7 misure da visualizzare. Infine riordina le misure all’interno della Measure Values card.
Aggiusta la formattazione della tabella come preferisci. Nell’esempio proposto è stato modificato il formato dei testi e la tabella è stata parzialmente trasformata in una highligth table. Per fare ciò, modifica il mark da testo a quadrato e porta Measure Values anche su colore. Fai click con il tasto destro sul simbolo colore a fianco del campo e seleziona “Use separate legends”. In questo modo potrai modificare separatamente le opzioni di colore di ogni misura.
Costruire la struttura per la numerazione delle pagine
Come prima cosa crea un parametro che serve per indicare quante righe della tabella saranno mostrate. Impostalo come numero intero e per cominciare indica 15 come valore. Non preoccuparti, potrai cambiare questo numero successivamente. Chiamalo rows to show.
Già che ci sei, crea un secondo parametro chiamato page number, che servirà per indicare il numero di pagina e tornerà utile più tardi. Imposta il parametro come numero intero con valore 1.
Ora costruiamo la numerazione delle pagine! Prima di tutto crea un campo calcolato chiamato Customer Name | Index:
INDEX()
Questo semplicemente applica una funzione INDEX() alla tabella e ci tornerà utile per costruire altri calcoli.
Crea un ulteriore campo calcolato chiamato Page | Customer Name | Index, che servirà a calcolare quali righe dovranno essere mostrate sulla tabella:
((([Customer Name | Index] – 1) – (([Customer Name | Index] – 1) % [rows to show]))/[rows to show]) +1
Ora devi solo creare un ultimo campo calcolato per identificare quale pagina mostrare. Crea un campo calcolato booleano chiamato Page Number | TF, basato sul parametro page number:
[Page | Customer Name | Index] = [page number]
Aggiungi il campo Page Number | TF ai filtri e seleziona solo TRUE. Ora vedrai visualizzate solo 15 le righe della tabella che fanno parte della pagina 1. Questo deriva sia dal parametro rows to show sia da page number. Il risultato che otterrai è il seguente:
Costruire la freccia sinistra
Ora apri un secondo foglio e rinominalo come “Left arrow”. Aggiungi ‘◄’ al testo e allinealo centrato nel mezzo.
Crea poi un campo calcolato, chiamato Page | – , che permetterà di sottrarre un’unità al numero di pagina a meno che non ci si trovi già al minimo dell’elenco:
IF [page number] = 1
THEN 1
ELSE [page number] – 1
END
Aggiungi Page | – a dettaglio.
Inoltre, crea altri due campi calcolati: TRUE, contenente la funzione TRUE, e FALSE con la funzione FALSE. Porta anche questi campi in dettaglio. Non dimenticare di disattivare i tooltip da questo foglio!
Costruire la freccia destra
Ora costruiamo la freccia destra. Parti creando un nuovo foglio di lavoro e aggiungendo ‘►’ al testo, allineato e centrato nel mezzo.
Poi crea un campo calcolato chiamato Page | + . In questo caso il calcolo va ad aggiungere un’unità al numero di pagina a meno che non ci si trovi al massimo dell’elenco:
IF [page number] = FLOOR({COUNTD([Customer Name])}/[rows to show]) +1
THEN FLOOR({COUNTD([Customer Name])}/[rows to show]) + 1
ELSE [page number] + 1
END
Aggiungi Page | +, TRUE e FALSE a dettaglio. Anche in questo caso disattiva i tooltip per il foglio.
Costruire il selettore numerico
Il selettore numerico è il componente più complesso da realizzare. Dobbiamo infatti fare in modo che mostri la pagina selezionata e tutte le altre pagine, offrendo possibilità di interazione. Inoltre, la pagina selezionata potrebbe non trovarsi sempre nella posizione centrale della lista, quindi bisogna fare in modo di poter evidenziare la pagina corretta nel momento corretto.
Incominciamo creando un nuovo foglio di lavoro chiamato “Display”. Porta Customer Name in dettaglio, con ordinamento decrescente per SUM(Sales). Poi aggiungi Customer Name | Index in colonna, impostando la misura su discreto. Modifica la table calculation, selezionando “Specific Dimensions” e attivando l’opzione su Customer Name. Imposta il mark su testo e modifica il formato dei numeri, impostando il font in bold.
Ogni valore dell’indice deriva dal rank e dalla somma delle vendite. Aggiungiamo ora del testo a questa visualizzazione per identificare il numero di pagina.
Crea due campi calcolati per le etichette: Label Page Number per la pagina selezionata e Label Page Number Not per le pagine che non sono selezionate.
Per Label Page Number:
IF [Page Number | TF]
THEN [page number]
END
Per Label Page Number Not
IF NOT [Page Number | TF]
THEN [Page | Customer Name | Index]
END
Porta entrambi i campi su testo nella mark card. Impostali su discreto: questo ci aiuterà con il formato dei numeri. Modifica la table calculation e scegli “Specific Dimensions”, attivando l’opzione su Customer Name per entrambi i campi.
Da qui clicca su testo per modificarlo. Posiziona le due dimensioni sulla stessa linea. Per Label Page Number Not scegli un colore grigio chiaro, font Tableau Book, dimensione 11. Imposta invece Label Page Number come nero, font Tableau Semibold, dimensione 11.
Il risultato che otteniamo è questo:
In questo momento il campo Customer Name | Index mostra tutti i clienti presenti su ogni pagina, ma per creare un selettore numerico non abbiamo la necessità di mostrare tutti i clienti, ma solo un singolo cliente per pagina. La miglior cosa che possiamo fare è mostrare solo il primo cliente di ogni pagina, poiché l’ultima pagina potrebbe consistere solo di quel singolo cliente.
Crea quindi il seguente campo calcolato, chiamato Page n | 0
([Customer Name | Index] % [rows to show]) – 1
Trasforma la misura da continua a discreta e porta il campo in filtri, selezionando solo il valore 0. Modifica la table calculation e scegli “Specific Dimensions”, attivando l’opzione su Customer Name. Il risultato è il seguente:
L’ultimo passaggio è il più difficile. Dobbiamo ora capire quali pagine mostrare. Per fare ciò bisogna impostare un range, con un limite inferiore e un limite superiore. A questo scopo crea due calcoli chiamati threshold | bottom e threshold | top.
Per threshold | bottom:
IF [page number] < 3THEN 1ELSEIF [page number] > FLOOR({COUNTD([Customer Name])}/[rows to show]) – 1THEN FLOOR({COUNTD([Customer Name])}/[rows to show]) – 3ELSE [page number] – 2END
Per threshold | top
IF [page number] > FLOOR({COUNTD([Customer Name])}/[rows to show]) – 1THEN FLOOR({COUNTD([Customer Name])}/[rows to show]) + 1ELSEIF [page number] < 3THEN 5ELSE [page number] + 2END
Infine costruisci il campo calcolato che definirà i limiti superiore e inferiore, chiamato threshold | TF
[Page | Customer Name | Index] >= MIN([threshold | bottom])AND [Page | Customer Name | Index] <= MIN([threshold | top])
Una precisazione: in base a questi calcoli i valori sono codificati in modo che vengano visualizzate 5 pagine in un dato momento.
Porta threshold | TF in filtro, impostalo su “true” e modifica la table calculation, scegliendo “Specific Dimensions” e attivando l’opzione su Customer Name. Il risultato è il seguente:
L’ultimo passaggio necessario è sistemare la formattazione, rimuovendo i divisori di riga e nascondendo le intestazioni. Allinea il testo centrato nel mezzo. Disattiva i tooltip.
Infine, porta i campi TRUE e FALSE in dettaglio.
Costruire la dashboard
Crea una nuova dashboard, trascinaci dentro la tabella e aggiungi un container orizzontale ad di sotto di essa. Aggiungi in ordine i fogli “Left arrow”, “ Display” e “Right arrow” nel container. Rimuovi gli inner e outer padding di tutti e tre i fogli e imposta tutte le viste, compresa la tabella, su “entire view”. Imposta un bordo grigio chiaro a tutto il container inferiore e aggiungi un background grigio chiaro ad entrambe le frecce. Attenzione: perché ciò sia possibile, i fogli delle frecce devono avere il worksheet background impostato su “none”.
Definire l’interattività
Ora possiamo concentrarci sugli ultimi passaggi, ovvero definire le azioni che permettono alle frecce e al display di interagire con la tabella.
Imposta la prima parameter action per la freccia destra. Crea un’azione impostata su select e basata sul foglio “Right arrow” che agisce sul parametro page number in base al campo Page | + , senza alcuna aggregazione.
La seconda parameter action sarà per la freccia sinistra. Crea un’azione impostata su select e basata sul foglio “Left arrow” che agisce sul parametro page number in base al campo Page | – , senza alcuna aggregazione.
Successivamente imposta la parameter action per il display. Crea un’azione impostata su select e basata sul foglio “Display” che agisce sul parametro page number in base al campo Label Page Number Not, senza alcuna aggregazione.
Infine, dobbiamo creare 3 filter action diverse, una per ogni foglio con la parameter action attiva, per consentire la deselezione automatica del bottone. Crea queste filter action impostando come origine il foglio scelto sulla dashboard e come target il foglio stesso al di fuori della dashboard. Imposta su target filters in base al campo TRUE quando è uguale a FALSE e definisci l’azione su select. Ripeti questa operazione per tutti e 3 i fogli.
Ed ecco a voi il risultato finale! È ora possibile navigare attraverso la tabella orizzontalmente mostrando 15 record per foglio.
Continua a seguirci sui nostri canali social Linkedin e Facebook per scoprire tutti i prossimi trucchi su Tableau!