Applicare la Funzione Unpivot in Google Sheets e Visualizzare i Dati in Looker Studio

Applicare la Funzione Unpivot in Google Sheets e Visualizzare i Dati in Looker Studio

18 Agosto 2024

Esigenza

Nel mondo del digital marketing e dell’analisi dei dati, è comune lavorare con dataset complessi che richiedono trasformazioni prima di poter essere utilizzati per analisi approfondite. L’esigenza in questo caso era di trasformare una griglia di dati organizzata in Google Sheets in un formato più flessibile e analizzabile, noto come unpivot. Questo processo è fondamentale per permettere una visualizzazione e un’analisi efficace dei dati in strumenti come Looker Studio.

Che cos’è il Processo di Unpivot?

Il processo di unpivot è una tecnica di trasformazione dei dati utilizzata per convertire un dataset ampio (wide format) in un formato lungo (long format). Nel formato ampio, i dati sono distribuiti su molte colonne, spesso rappresentando diverse categorie o variabili per ciascuna riga. Nel formato lungo, ogni riga rappresenta un singolo punto dati con più attributi.

Esempio di Formato Ampio:

Mese Settimana Giorno Cliente 1 Cliente 1 Cliente 2 Cliente 2 Cliente 3
Attività 1 Attività 2 Attività 1 Attività 2 Attività 3
luglio 27 2024-07-01 2 4 3 4.5 7

Esempio di Formato Lungo (Unpivotato):

Cliente Attività Mese Settimana Giorno Ore
Cliente 1 Attività 1 luglio 27 2024-07-01 2
Cliente 1 Attività 2 luglio 27 2024-07-01 4
Cliente 2 Attività 1 luglio 27 2024-07-01 3
Cliente 2 Attività 2 luglio 27 2024-07-01 4.5
Cliente 3 Attività 3 luglio 27 2024-07-01 7

Perché Usare l’Unpivot?

È consigliabile trasformare i dati tramite UnPivot (appiattimento dei dati) per inserirli in un formato matrice, dove tutti i valori simili sono raccolti in un’unica colonna. Questo processo è fondamentale per l’analisi e la visualizzazione efficace, poiché ogni riga rappresenta un’entità unica e facilmente gestibile. Riorganizzando le coppie attributo-valore e “scomponendole” in un formato lineare, si facilita la creazione di grafici e report più flessibili e accurati. In questo modo, operazioni come aggregazioni, confronti e analisi diventano molto più intuitive, poiché i dati sono strutturati in modo standardizzato e coerente.

Limitazioni di Google Sheets e Looker Studio

Sia Google Sheets che Looker Studio non dispongono di una funzione Unpivot integrata, come invece molti strumenti avanzati di ETL (Extract, Transform, Load) offrono. Per superare questa limitazione, è possibile utilizzare Google Apps Script per automatizzare il processo di unpivot e preparare i dati per l’analisi.

Soluzione: Applicazione della Funzione Unpivot con Google Sheets e Google Apps Script

Per automatizzare il processo di unpivot, abbiamo utilizzato Google Apps Script. Questo ha permesso di trasformare la griglia di dati in un formato lungo, dove ogni riga rappresenta un singolo valore associato a un cliente, un tipo di attività, una data specifica, e un valore.

Codice dello Script:


function unpivot() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Foglio1');
  var targetSheet = ss.getSheetByName('Unpivoted');
  
  if (!targetSheet) {
    targetSheet = ss.insertSheet('Unpivoted');
  } else {
    targetSheet.clear();
  }
  
  var data = sheet.getDataRange().getValues();
  var headers = data[0].slice(3);  // Intestazioni clienti dalla colonna D in poi
  var subheaders = data[1].slice(3);  // Intestazioni attività dalla colonna D in poi
  var rows = data.slice(2);  // Dati a partire dalla terza riga
  
  // Imposta intestazioni nel foglio "Unpivoted"
  targetSheet.appendRow(['Cliente', 'Attività', 'Mese', 'Settimana', 'Giorno', 'Ore']);
  
  var output = [];  // Array per raccogliere tutte le righe da inserire
  
  for (var i = 0; i < rows.length; i++) {
    var mese = rows[i][1];
    var settimana = rows[i][2];
    var giorno = rows[i][3];
    
    for (var j = 0; j < headers.length; j++) { var cliente = headers[j]; var attivita = subheaders[j]; var valore = rows[i][j + 4]; if (valore > 0) {
        output.push([cliente, attivita, mese, settimana, giorno, valore]);  // Aggiungi la riga all'array output
      }
    }
  }
  
  // Scrivi tutte le righe in una sola operazione
  if (output.length > 0) {
    targetSheet.getRange(2, 1, output.length, output[0].length).setValues(output);
  }
}
function onEdit(e) {
var sheet = e.source.getActiveSheet();
if (sheet.getName() === 'Foglio1') {
unpivot();
}
}

Spiegazione dello Script

  • unpivot() Function:
    • Caricamento del foglio e dei dati: Lo script carica il foglio “Foglio1” e crea o ripulisce il foglio “Unpivoted”.
    • Estrazione delle intestazioni e dei dati: Le intestazioni dei clienti e delle attività sono estratte dalle prime due righe, e i dati dalle righe successive.
    • Impostazione delle intestazioni nel foglio “Unpivoted”: Viene aggiunta una riga di intestazioni al foglio “Unpivoted”.
    • Iterazione sui dati: Lo script itera su ogni riga di dati e, per ogni colonna di attività, crea una nuova riga nel foglio “Unpivoted” con i dettagli del cliente, attività, mese, settimana, giorno e valore.
    • Ottimizzazione delle operazioni: Invece di usare appendRow in ogni iterazione (che rallenterebbe il processo), lo script raccoglie tutte le righe in un array output e le inserisce in una sola operazione, migliorando le performance.onEdit(e) Function:
    • Esecuzione automatica: Questa funzione viene eseguita automaticamente ogni volta che il foglio “Foglio1” viene modificato, assicurando che la tabella unpivot sia sempre aggiornata.

Aggiornare Manualmente la Tabella Unpivot

Se preferisci eseguire l’aggiornamento manualmente anziché automaticamente, puoi rimuovere il trigger onEdit e decidere tu quando eseguire lo script. Per fare ciò, segui questi passaggi:

  1. Rimuovi il Codice onEdit: Elimina la funzione onEdit dal codice:

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() === 'Foglio1') {
    unpivot();
  }
}

Ora, lo script verrà eseguito solo quando lo lanci manualmente.

  1. Aggiungi un Pulsante nel Foglio Google Sheets:
    • Vai su Inserisci > Disegno o Inserisci > Immagine nel menu di Google Sheets.
    • Crea una forma (ad esempio, un rettangolo con il testo “Aggiorna Unpivot”) o inserisci un’immagine.
    • Clicca con il tasto destro sulla forma o immagine e seleziona Assegna script.
    • Digita il nome della funzione unpivot per associarla al pulsante.

In questo modo, ogni volta che cliccherai sul pulsante, verrà eseguito lo script e aggiornerà la tabella unpivot.

Conclusione

L’applicazione della funzione Unpivot tramite Google Sheets e Google Apps Script ha permesso di trasformare dati complessi in un formato lungo facilmente analizzabile. Questo processo è fondamentale per integrare e visualizzare i dati in Looker Studio, rendendo possibile la creazione di report e dashboard interattivi.

Anche se Google Sheets e Looker Studio non dispongono nativamente di una funzione Unpivot come altri strumenti di ETL, la flessibilità offerta da Google Apps Script consente di colmare questa lacuna. Attraverso lo script ottimizzato, è possibile gestire grandi volumi di dati in modo efficiente e aggiornare manualmente o automaticamente la tabella secondo le proprie esigenze.

Soluzioni Digitali Efficaci

Consulenza Digitale per la Tua Crescita

Consulenza Digitale per la Tua Crescita

Offriamo consulenze specializzate per sviluppare strategie digitali innovative. Con un focus particolare sull’intelligenza artificiale, aiutiamo il tuo business a ottimizzare processi e migliorare le performance online.