Non tutti i numeri lo sono davvero

La distinzione tra dimensioni e metriche è alla base delle logiche di interrogazione dei rapporti di Google Analytics. La documentazione ufficiale, relativamente alle informazioni sugli elementi costitutivi dei rapporti, definisce le dimensioni come attributi dei dati e le metriche come misurazioni quantitative. Per semplificare il tutto possiamo definire le prime come stringhe e le seconde come numeri.

Tuttavia, questa differenza può non essere sempre intuibile per la gestione del dato. Mi riferisco a quelle dimensioni il cui valore ha tutt’altro aspetto di quello di una stringa e che a tutti gli effetti sono rappresentate da veri e propri numeri. L’esempio più immediato sono le dimensioni delle informazioni temporali come l’anno, il mese, il giorno, l’ora, ecc…

Esportando questi dati dall’interfaccia all’interno di un altro strumento, come ad esempio i Fogli di Google, possono essere gestiti come numeri in quanto il tool li riconosce automaticamente come tali. All’interno di Google Analytics, e soprattutto quando interrogate tramite una chiamata alle API, la loro gestione può trarre in inganno e vedersi restituire valori inattesi o errori della richiesta (400 Bad Request).

Per contestualizzare quanto appena descritto faccio riferimento a una richiesta che è stata fatta su stackoverflow e che ha ispirato la scrittura del presente articolo. L’intenzione dell’utente era quella di filtrare tramite API le transazioni, in un determinato intervallo di tempo, effettuate solo in particolari orari della giornata, nel caso specifico dalle ore 00:00 alle ore 14:00.
La Fig. 1 mostra il tentativo fatto dall’utente, gestendo l’orario come se fosse un numero, che di conseguenza non è andato a buon fine:

Google Analytics 400 Bad Request
Fig. 1 – Richiesta API errata per valore non valido al parametro filtro (errore 400)

Nonostante l’apparenza, qualsiasi dimensione, per sua definizione, deve essere gestita come una stringa.

Dall’interfaccia di Google Analytics è più difficile sbagliarsi in quanto i filtri da impostare sono agevolati in funzione che si tratti di dimensioni o di metriche (nel primo caso, infatti, non sono previsti gli operatori > o < nei combobox).

L’ideale pertanto, utilizzando direttamente le API, il Query Explorer o add-on per i Fogli di Google come GA360 Unsampled (basato appunto sulle API), è utilizzare gli operatori come quello di uguaglianza == o, in riferimento all’esempio dell’immagine in Fig. 1, le espressioni regolari:

ga:hour=~(00|01|02|03|04|05|06|07|08|09|10|11|12|13|14)

La regex è sicuramente ottimizzabile tuttavia il concetto rimane quello descritto.