2nd Jul 2025 Tempo di lettura: 11 minuti SQL incontra Google Calendar: Analizzare un anno di riunioni Jakub Romanowski Progetto SQL analisi dati Indice Perché analizzare il calendario? Fase 1: Esportare il calendario di Google Fase 2: Conversione del file .ics in un formato compatibile con SQL Fase 3: Importare il CSV nel database SQL Passo 1: Impostare la tabella PostgreSQL Passo 2: caricare i dati dal file CSV Fase 4: analizzare le riunioni con SQL Numero totale di riunioni Tempo totale delle riunioni (ore) Durata media di una riunione (minuti) Riunioni per mese I 5 giorni più frequentati Passo 5: visualizzare i dati Casi d'uso per diversi ruoli Opzionale: Automatizzare il tutto Passi successivi Avete mai la sensazione che il vostro calendario gestisca la vostra vita? Riunioni a ripetizione, poco tempo per lavorare e nessuna idea di dove sia finito il vostro tempo? Non siete soli. E se poteste eseguire una rapida query SQL per sapere esattamente quanto tempo avete trascorso in riunioni l'anno scorso, quali sono stati i mesi più impegnativi e se le vostre sincronizzazioni settimanali stanno consumando le vostre mattine? Questo è l'obiettivo di questa guida. Vi mostrerò come esportare il vostro calendario Google, trasformarlo in un formato SQL e utilizzare query SQL per analizzare le vostre abitudini di riunione nell'ultimo anno. Volete ripassare l'SQL prima di immergervi in questa guida? Date un'occhiata al corso SQL per principianti. È perfetto per i principianti o per chi vuole migliorare le proprie query. Perché analizzare il calendario? Perché preoccuparsi di analizzare il calendario? Ecco alcuni motivi reali: Volete vedere quanto tempo dedicate alle riunioni. È facile perdere il conto quando ogni giorno ha due o tre blocchi prenotati. Vedere il numero totale di ore può aprire gli occhi. Sospettate che alcuni giorni o settimane siano sovraccarichi. Forse il mercoledì è sempre pieno, oppure ogni lunedì sembra una maratona di telefonate. Volete trovare questi schemi con dati reali. Siete curiosi di sapere se le riunioni ricorrenti sono effettivamente utili. Le sincronizzazioni settimanali e i check-in bisettimanali spesso diventano una routine. Analizzarli può aiutarvi a capire se sono utili o se riempiono solo il vostro calendario. Volete dei motivi basati sui dati per dire "no" a un altro invito. Avere dei numeri a sostegno della vostra decisione può aiutarvi a far valere la necessità di ridurre le riunioni e di dedicare più tempo alla concentrazione. Questo tipo di informazioni può aiutarvi a recuperare il vostro tempo, a prendere decisioni di programmazione più intelligenti e a ridurre la stanchezza da riunione. Ora cerchiamo di ottenere questi dati. Fase 1: Esportare il calendario di Google Google Calendar non fornisce un foglio Excel con tutte le riunioni, ma è possibile esportare i dati nel formato .ics. Come esportare: Andare su Google Calendar. Fare clic sull'icona dell'ingranaggio ⚙️ → Impostazioni. Spostarsi su Importazione ed esportazione. Sotto "Esporta", fare clic su Esporta. Si otterrà un file ZIP. Decomprimerlo per trovare i file .ics per ciascun calendario. Assicurarsi di includere tutti i calendari pertinenti (lavoro, personale, condiviso, ecc.). Fase 2: Conversione del file .ics in un formato compatibile con SQL Prima di fare qualsiasi altra cosa, dobbiamo trasformare il file .ics in qualcosa di più utile, come un file .csv, che funziona proprio come un foglio di calcolo ed è facile da importare in qualsiasi database SQL. Per farlo, utilizzeremo un semplice script Python. Se non avete mai usato Python, non preoccupatevi: questo è un approccio graduale. Lo script leggerà il file .ics, estrarrà ogni evento (come una riunione o un appuntamento) e salverà questi dettagli in un file .csv. Ecco cosa vi serve per iniziare: Python installato sul computer (la versione 3.x va bene). Due librerie Python: icalendar: aiuta Python a comprendere i file di calendario. pandas: aiuta a gestire e salvare i dati in formato tabella. È possibile installare queste librerie aprendo il terminale o il prompt dei comandi ed eseguendo: pip install icalendar pandas Script Python spiegato Non sentitevi sopraffatti dalla lunghezza dello script qui sotto: può sembrare complesso, ma non c'è bisogno di scriverlo da soli. Basterà copiarlo e incollarlo in un file ed eseguirlo. Tutto è già predisposto per fare il lavoro al posto vostro. from icalendar import Calendar import pandas as pd # Read the .ics calendar file with open("calendar.ics", encoding="utf-8") as f: cal = Calendar.from_ical(f.read()) # Create a list to store extracted events events = [] # Walk through each event in the calendar for component in cal.walk(): if component.name == "VEVENT": event = { 'summary': str(component.get('summary')), 'start': component.get('dtstart').dt, 'end': component.get('dtend').dt, 'organizer': str(component.get('organizer')), 'attendees': str(component.get('attendee')), } events.append(event) # Convert list to DataFrame and export to CSV df = pd.DataFrame(events) df.to_csv('calendar_events.csv', index=False) Questo script legge il vostro calendario, analizza ogni evento ed estrae campi come il nome della riunione, l'ora di inizio e di fine, chi l'ha organizzata e chi vi ha partecipato. Poi salva tutto in un file CSV, pronto per essere importato in SQL. Cosa fare con questo codice: Copiate l'intero script in un nuovo file Python. È possibile farlo in qualsiasi editor di testo, basta salvarlo con l'estensione .py, ad esempio convert_calendar.py. Assicuratevi che il file .ics si trovi nella stessa cartella dello script e che si chiami calendar.ics. Se ha un nome diverso, aggiornate il nome del file nella funzione open(). Per eseguire lo script, aprire il terminale (su Mac o Linux) o il Prompt dei comandi (su Windows). Navigare nella cartella in cui è stato salvato il file Python. Digitare python convert_calendar.py e premere Invio. Questo indica al computer di eseguire lo script. Se tutto è stato impostato correttamente, lo script elaborerà il file .ics e creerà un nuovo file chiamato calendar_events.csv nella stessa cartella. Questo file CSV conterrà tutti gli eventi di Google Calendar in un formato facile da usare in SQL. Dopo l'esecuzione dello script, si dovrebbe vedere un nuovo file chiamato calendar_events.csv nella stessa cartella. Questo file conterrà tutti gli eventi del calendario in un semplice formato tabellare, pronto per essere utilizzato in SQL. Ecco come potrebbe apparire il vostro CSV: summarystartendorganizer Weekly Sync2024-01-04 10:002024-01-04 10:30alice@company.com 1:1 with Tom2024-01-05 14:002024-01-05 14:45tom@company.com Fase 3: Importare il CSV nel database SQL È possibile utilizzare qualsiasi database SQL: MySQL, PostgreSQL o SQLite. In questa sezione vi mostreremo come farlo utilizzando PostgreSQL, che è ampiamente utilizzato negli ambienti aziendali ed è perfetto per imparare le competenze SQL del mondo reale. Se utilizzate Windows e non avete ancora installato PostgreSQL, non preoccupatevi: è facile iniziare. Basta andare sul sito ufficiale di PostgreSQL e scaricare il programma di installazione. Eseguite il programma di installazione, seguite i passaggi e scegliete le impostazioni predefinite, a meno che non abbiate un motivo per cambiarle. Assicuratevi di installare anche pgAdmin, uno strumento visivo che vi aiuta a gestire il database PostgreSQL senza utilizzare la riga di comando. Una volta installato, potrete aprire pgAdmin, connettervi al vostro server locale e creare il vostro primo database con pochi clic. Passo 1: Impostare la tabella PostgreSQL Aprite il terminale o pgAdmin e collegatevi al vostro database PostgreSQL. Creare quindi una tabella per contenere i dati delle riunioni: CREATE TABLE meetings ( id SERIAL PRIMARY KEY, summary TEXT, start TIMESTAMP, "end" TIMESTAMP, organizer TEXT, attendees TEXT ); In questo modo si creerà una tabella in cui ogni riunione è memorizzata come una riga. La parola chiave SERIAL crea un ID autoincrementante e TIMESTAMP memorizza la data e l'ora di inizio e fine. Passo 2: caricare i dati dal file CSV Ora che la tabella è pronta, è necessario importare il file CSV creato in precedenza (calendar_events.csv). PostgreSQL utilizza il comando COPY per caricare i dati CSV in una tabella. Se si utilizza pgAdmin, è possibile farlo anche tramite la GUI: Cliccare con il tasto destro del mouse sulla tabella meetings nel pannello di sinistra del database. Scegliere Import/Export dal menu contestuale. Nella finestra di dialogo, selezionare Import come opzione. Scegliere il file calendar_events.csv dal computer. Nel menu a tendina Format, selezionare csv. Assicurarsi che l'ordine delle colonne del file CSV corrisponda alla struttura della tabella. Lasciare le altre impostazioni predefinite o regolare il delimitatore, se necessario. Fare clic su OK per importare. In alternativa, se si preferisce usare un comando SQL nello strumento Query di pgAdmin, si può procedere in questo modo: COPY meetings(summary, start, "end", organizer) FROM 'C:/full/path/to/calendar_events.csv' DELIMITER ',' CSV HEADER; Assicurarsi di sostituire C:/full/path/to/calendar_events.csv con il percorso effettivo del file CSV. Assicurarsi inoltre che PostgreSQL abbia il permesso di accedere a quella cartella. Questo metodo può essere più veloce se si è a proprio agio nel digitare un po' di SQL. Una volta completato questo passaggio, i dati del calendario saranno disponibili in PostgreSQL. Fase 4: analizzare le riunioni con SQL Ora la parte più divertente. Eseguiamo alcune query SQL per esplorare i modelli di riunione e rispondere a domande comuni come: A quante riunioni ho partecipato? Quali sono stati i giorni di maggiore affluenza? Quanto tempo ho trascorso in riunione? Numero totale di riunioni SELECT COUNT(*) AS total_meetings FROM meetings; Questa query conta semplicemente quante righe esistono nella tabella meetings. Poiché ogni riga rappresenta una riunione, il risultato mostra quante riunioni si sono tenute in totale. Tempo totale delle riunioni (ore) SELECT ROUND(SUM(EXTRACT(EPOCH FROM ("end" - start)) / 3600.0)::numeric, 2) AS total_hours FROM meetings; Questa query calcola il tempo totale trascorso nelle riunioni sottraendo l'ora di inizio della riunione dall'ora di fine. In PostgreSQL, la sottrazione di due timestamp restituisce la durata in secondi, quindi si usa EXTRACT(EPOCH FROM (...)) per ottenere il numero di secondi. Poi si divide per 3600 per convertirlo in ore. Infine, si usa ROUND(..., 2) per rendere il risultato più facile da leggere, limitandolo a due cifre decimali. Durata media di una riunione (minuti) SELECT ROUND(AVG(EXTRACT(EPOCH FROM ("end" - start)) / 60.0)::numeric, 1) AS avg_minutes FROM meetings; Questa query calcola la durata media di tutte le riunioni. Sottrae l'ora di inizio dall'ora di fine di ogni riunione per ottenere la durata, quindi utilizza EXTRACT(EPOCH FROM ...) per convertire il tempo in secondi. Dividendo per 60, i secondi vengono trasformati in minuti. Infine, AVG fornisce la durata media delle riunioni e ROUND(..., 1) ne facilita la lettura mantenendo un solo decimale. Riunioni per mese SELECT TO_CHAR(start, 'YYYY-MM') AS month, COUNT(*) AS meeting_count FROM meetings GROUP BY month ORDER BY month; Questa query aiuta a capire come le riunioni sono state distribuite in ogni mese. Utilizza la funzione TO_CHAR(start, 'YYYY-MM') per trasformare la data di ogni riunione in un formato semplificato anno-mese come 2024-03, che facilita il raggruppamento degli eventi per mese. La funzione COUNT(*) conta quante riunioni si sono svolte in ciascuno di questi mesi. Infine, ORDER BY month organizza i risultati in ordine cronologico, in modo da poter vedere a colpo d'occhio i mesi di maggiore affluenza. I 5 giorni più frequentati SELECT date(start) AS day, COUNT(*) AS meetings FROM meetings GROUP BY day ORDER BY meetings DESC LIMIT 5; date(start) estrae solo il giorno dal timestamp completo. GROUP BY raggruppa gli eventi per giorno, mentre ORDER BY meetings DESC mette in cima i giorni più trafficati. LIMIT 5 mostra solo i primi cinque. Passo 5: visualizzare i dati È possibile utilizzare: Power BI o Tableau per i cruscotti. Google Sheets per grafici veloci. Python (Matplotlib/Seaborn) per le heatmap. Provate a creare una mappa di calore settimanale per individuare i giorni di sovraccarico. Pivotate i dati per giorno e ora della settimana, quindi applicate la formattazione condizionale. Casi d'uso per diversi ruoli I manager possono utilizzare questa analisi per capire come viene effettivamente impiegato il tempo del loro team. Se le riunioni richiedono più tempo del previsto, possono iniziare a identificare quali sono essenziali e quali possono essere ridotte o eliminate del tutto. Gli sviluppatori spesso faticano a trovare ampi blocchi di tempo da dedicare alla codifica. Eseguendo queste query, possono individuare gli schemi di sovraccarico delle riunioni e chiedere di ridurre le interruzioni durante le ore di lavoro. Gli esperti di marketing possono verificare quanto tempo dedicano alle sessioni di pianificazione rispetto al lavoro di esecuzione. Questo può portare a una migliore programmazione del lavoro della campagna e a riunioni più efficienti, focalizzate e orientate agli obiettivi. Gli insegnanti e gli educatori possono trarre vantaggio esaminando come il loro tempo è suddiviso tra sessioni di lezione ricorrenti, incontri individuali con gli studenti e attività amministrative. Con questa consapevolezza, possono cercare un migliore equilibrio e potenzialmente ridurre il burnout. Opzionale: Automatizzare il tutto Volete farlo regolarmente? Pensate a una di queste opzioni: Google Calendar API - È uno strumento ufficiale fornito da Google che consente di accedere programmaticamente ai dati del calendario in tempo reale. È possibile scrivere uno script Python che si connette all'API e recupera gli eventi ogni settimana o mese. In questo modo, non è necessario esportare manualmente i file .ics. Automatizzare con Python - Una volta impostato lo script per recuperare ed elaborare i dati del calendario, è possibile pianificarne l'esecuzione automatica (ad esempio, ogni mese) utilizzando strumenti come Windows Task Scheduler o cron su Mac/Linux. In questo modo si risparmia tempo e si mantengono freschi i dati. Zapier - Si tratta di uno strumento senza codice che collega tra loro diverse app. È possibile utilizzare Zapier per copiare automaticamente gli eventi da Google Calendar in un foglio di Google. Da lì, potete importare il foglio nel vostro database SQL. Questa opzione è ottima se non siete pronti a scrivere codice Python. Questa sezione ha lo scopo di aiutarvi a scalare il vostro processo in modo che funzioni da solo, con poco sforzo dopo la configurazione. Passi successivi Volete costruire query più potenti? Imparate l'SQL passo dopo passo con SQL per principianti su LearnSQL.it. In questo corso pratico, imparerete a scrivere query SQL reali per estrarre dati significativi da un database. Verranno trattati argomenti fondamentali come la selezione delle colonne, il filtraggio delle righe, l'ordinamento dei risultati e l'unione di più tabelle: tutto ciò che serve per iniziare ad analizzare i dati come un professionista. Il corso è strutturato in lezioni di piccole dimensioni, ognuna delle quali è accompagnata da esercizi interattivi che aiutano a fare pratica mentre si impara. Non è necessaria alcuna esperienza precedente: tutto viene spiegato in modo chiaro e graduale. Alla fine, sarete in grado di utilizzare SQL per rispondere a domande, risolvere problemi e scoprire informazioni da qualsiasi fonte di dati. È la base perfetta per chiunque lavori con i dati. E la parte migliore? Potete provarlo gratuitamente per vedere come funziona prima di impegnarvi. Utilizzate i vostri dati. Migliorate il vostro programma. Risparmiate il vostro tempo! Tags: Progetto SQL analisi dati