2nd Jul 2025 Lectura de 12 minutos SQL se une a Google Calendar: Analiza un año en reuniones Jakub Romanowski Proyecto SQL análisis de datos Índice ¿Por qué analizar tu calendario? Paso 1: Exporta tu calendario de Google Paso 2: Convertir el archivo .ics a un formato compatible con SQL Paso 3: Importe el CSV a su base de datos SQL Paso 1: Configure su tabla PostgreSQL Paso 2: Cargar los datos del archivo CSV Paso 4: Analice sus reuniones con SQL Número total de reuniones Tiempo total en reuniones (horas) Duración media de las reuniones (minutos) Reuniones por mes Los 5 días de mayor actividad Paso 5: Visualizar los datos Casos de uso para diferentes funciones Opcional: Automatizarlo todo Pasos siguientes ¿Alguna vez has tenido la sensación de que tu calendario dirige tu vida? ¿Reuniones seguidas, apenas tiempo para trabajar y ni idea de en qué se te ha ido el tiempo? No es el único. ¿Y si pudieras ejecutar una rápida consulta SQL y saber exactamente cuánto tiempo pasaste en reuniones el año pasado, qué meses fueron los más ajetreados y si tus sincronizaciones semanales se están comiendo tus mañanas? De eso trata esta guía. Te mostraré cómo exportar Google Calendar, transformarlo en un formato compatible con SQL y utilizar consultas SQL simples para analizar tus hábitos de reunión durante el año pasado. ¿Quieres repasar tu SQL antes de sumergirte? Echa un vistazo al curso de SQL para principiantes. Es perfecto para principiantes o para cualquiera que desee mejorar sus consultas. ¿Por qué analizar tu calendario? ¿Por qué molestarse en analizar el calendario? He aquí algunas razones reales: Quieres ver cuánto tiempo pasas en reuniones. Es fácil perder la cuenta cuando cada día tiene dos o tres bloques reservados. Ver el número total de horas puede ser revelador. Sospechas que algunos días o semanas están sobrecargados. Puede que los miércoles estén siempre abarrotados, o que cada lunes parezca un maratón de llamadas. Quiere encontrar esos patrones con datos reales. Tienes curiosidad por saber si las reuniones recurrentes son realmente útiles. Las sincronizaciones semanales y las reuniones quincenales suelen convertirse en una rutina. Analizarlas puede ayudarte a averiguar si te están ayudando o sólo llenan tu calendario. Quieres razones basadas en datos para decir "no" a otra invitación. Contar con cifras que respalden tu decisión puede ayudarte a argumentar a favor de menos reuniones y más tiempo para centrarte. Este tipo de información puede ayudarle a recuperar su tiempo, tomar decisiones de programación más inteligentes y reducir la fatiga de las reuniones. Ahora, vamos a obtener esos datos. Paso 1: Exporta tu calendario de Google Google Calendar no te ofrece una hoja de Excel con todas tus reuniones, pero puedes exportar tus datos en formato .ics. Cómo exportar: Ve a Google Calendar. Haz clic en el icono de engranaje ⚙️ → Configuración. Desplázate hasta Importar y exportar. En "Exportar", haz clic en Exportar. Obtendrás un archivo ZIP. Descomprímelo para encontrar los archivos .ics de cada calendario. Asegúrate de incluir todos los calendarios relevantes (trabajo, personal, compartido, etc.). Paso 2: Convertir el archivo .ics a un formato compatible con SQL Antes de hacer nada más, tenemos que convertir ese archivo .ics en algo más útil, como un archivo .csv, que funciona como una hoja de cálculo y es fácil de importar a cualquier base de datos SQL. Para ello, utilizaremos un sencillo script de Python. Si nunca has usado Python antes, no te preocupes - este es un enfoque paso a paso. El script leerá el archivo .ics, extraerá cada evento (como una reunión o una cita) y guardará esos detalles en un archivo .csv. Esto es lo que necesitas para empezar: Python instalado en tu ordenador (la versión 3.x es suficiente). Dos bibliotecas de Python: icalendarPython: ayuda a Python a entender los archivos de calendario. pandas: ayuda a gestionar y guardar datos en formato de tabla. Puede instalar estas bibliotecas abriendo su terminal o símbolo del sistema y ejecutando: pip install icalendar pandas Script Python Explicado No te sientas abrumado por la longitud del script de abajo - puede parecer complejo, pero no necesitas escribir nada de él tú mismo. Sólo tienes que copiarlo y pegarlo en un archivo y ejecutarlo. Todo está preparado para hacer el trabajo por ti. 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) Este script lee tu calendario, recorre cada evento y extrae campos como el nombre de la reunión, las horas de inicio y fin, quién la organizó y quién asistió. Después lo guarda todo en un archivo CSV, listo para importarlo a SQL. Qué hacer con este código: Copie todo el script en un nuevo archivo Python. Puede hacerlo en cualquier editor de texto - simplemente guárdelo con una extensión .py, por ejemplo convert_calendar.py. Asegúrese de que su archivo .ics está en la misma carpeta que su script y se llama calendar.ics. Si tiene un nombre diferente, actualiza el nombre del archivo en la función open(). Para ejecutar el script, abra el terminal (en Mac o Linux) o el símbolo del sistema (en Windows). Navegue hasta la carpeta donde guardó el archivo Python. A continuación, escriba python convert_calendar.py y pulse Intro. Esto indica a tu ordenador que ejecute el script. Si todo está configurado correctamente, procesará el archivo .ics y creará un nuevo archivo llamado calendar_events.csv en la misma carpeta. Ese archivo CSV contendrá todos tus eventos de Google Calendar en un formato fácil de utilizar en SQL. Después de que se ejecute el script, deberías ver un nuevo archivo llamado calendar_events.csv en la misma carpeta. Ese archivo contendrá todos los eventos de tu calendario en un formato de tabla simple, listo para su uso en SQL. Este es el aspecto que podría tener su 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 Paso 3: Importe el CSV a su base de datos SQL Puede utilizar cualquier base de datos SQL - MySQL, PostgreSQL, o SQLite. En esta sección, le mostraremos cómo hacerlo utilizando PostgreSQL, que es ampliamente utilizado en entornos empresariales y perfecto para aprender habilidades SQL del mundo real. Si usas Windows y aún no tienes PostgreSQL instalado, no te preocupes - es fácil empezar. Sólo tienes que ir al sitio web oficial de PostgreSQL y descargar el instalador. Ejecute el instalador, siga los pasos y elija la configuración predeterminada a menos que tenga una razón para cambiarla. Asegúrate de instalar también pgAdmin - es una herramienta visual que te ayuda a gestionar tu base de datos PostgreSQL sin usar la línea de comandos. Una vez instalado, usted será capaz de abrir pgAdmin, conectarse a su servidor local, y crear su primera base de datos con sólo unos clics. Paso 1: Configure su tabla PostgreSQL Abra su terminal o pgAdmin y conéctese a su base de datos PostgreSQL. A continuación, cree una tabla para contener los datos de su reunión: CREATE TABLE meetings ( id SERIAL PRIMARY KEY, summary TEXT, start TIMESTAMP, "end" TIMESTAMP, organizer TEXT, attendees TEXT ); Esto creará una tabla donde cada reunión se almacena como una fila. La palabra clave SERIAL crea un ID auto-incrementado, y TIMESTAMP almacena la fecha y hora de inicio y fin. Paso 2: Cargar los datos del archivo CSV Ahora que su tabla está lista, necesita importar el archivo CSV que creó anteriormente (calendar_events.csv). PostgreSQL utiliza el comando COPY para cargar los datos CSV en una tabla. Si estás usando pgAdmin, también puedes hacerlo a través de la GUI: Haga clic con el botón derecho en la tabla meetings en el panel izquierdo debajo de su base de datos. Seleccione Import/Export en el menú contextual. En la ventana de diálogo, seleccione Import como opción. Seleccione el archivo calendar_events.csv de su ordenador. En el menú desplegable Format, seleccione csv. Asegúrese de que el orden de las columnas de su archivo CSV coincide con la estructura de la tabla. Deja los demás ajustes por defecto o ajusta el delimitador si es necesario. Haga clic en OK para importar. Alternativamente, si prefiere utilizar un comando SQL en la Herramienta de consulta de pgAdmin, puede hacerlo así: COPY meetings(summary, start, "end", organizer) FROM 'C:/full/path/to/calendar_events.csv' DELIMITER ',' CSV HEADER; Asegúrese de sustituir C:/full/path/to/calendar_events.csv por la ruta real a su archivo CSV. Además, asegúrese de que PostgreSQL tiene permiso para acceder a esa carpeta. Este método puede ser más rápido si te sientes cómodo tecleando un poco de SQL. Una vez completado este paso, los datos de su calendario estarán disponibles en PostgreSQL. Paso 4: Analice sus reuniones con SQL Ahora viene la parte divertida. Vamos a ejecutar algunas consultas SQL para explorar sus patrones de reuniones y responder a preguntas comunes como: ¿A cuántas reuniones asistí? ¿Qué días fueron los más ocupados? ¿Cuánto tiempo pasé en las reuniones? Número total de reuniones SELECT COUNT(*) AS total_meetings FROM meetings; Esta consulta simplemente cuenta cuántas filas existen en la tabla meetings. Como cada fila representa una reunión, el resultado muestra cuántas reuniones has tenido en total. Tiempo total en reuniones (horas) SELECT ROUND(SUM(EXTRACT(EPOCH FROM ("end" - start)) / 3600.0)::numeric, 2) AS total_hours FROM meetings; Esta consulta calcula el tiempo total que ha pasado en reuniones restando la hora de inicio de la reunión de la hora de finalización. En PostgreSQL, la resta de dos marcas de tiempo devuelve la duración en segundos, por lo que utilizamos EXTRACT(EPOCH FROM (...)) para obtener el número de segundos. Luego dividimos por 3600 para convertirlo en horas. Por último, se utiliza ROUND(..., 2) para facilitar la lectura del resultado limitándolo a dos decimales. Duración media de las reuniones (minutos) SELECT ROUND(AVG(EXTRACT(EPOCH FROM ("end" - start)) / 60.0)::numeric, 1) AS avg_minutes FROM meetings; Esta consulta calcula la duración media de todas las reuniones. Resta la hora de inicio de la hora de finalización de cada reunión para obtener la duración y, a continuación, utiliza EXTRACT(EPOCH FROM ...) para convertir ese tiempo en segundos. Si se divide por 60, los segundos se convierten en minutos. Por último, AVG te da la duración media de la reunión, y ROUND(..., 1) hace que sea más fácil de leer manteniendo sólo un decimal. Reuniones por mes SELECT TO_CHAR(start, 'YYYY-MM') AS month, COUNT(*) AS meeting_count FROM meetings GROUP BY month ORDER BY month; Esta consulta le ayuda a comprender cómo se distribuyeron sus reuniones a lo largo de cada mes. Utiliza TO_CHAR(start, 'YYYY-MM') para convertir la fecha de cada reunión en un formato simplificado de año-mes como 2024-03, lo que facilita la agrupación de eventos por mes. La función COUNT(*) cuenta cuántas reuniones se celebraron en cada uno de esos meses. Por último, ORDER BY month organiza los resultados en orden cronológico para que pueda ver los meses de mayor actividad de un vistazo. Los 5 días de mayor actividad SELECT date(start) AS day, COUNT(*) AS meetings FROM meetings GROUP BY day ORDER BY meetings DESC LIMIT 5; Aquí se muestran los cinco días en los que se celebraron más reuniones. date(start) extrae sólo el día de la marca de tiempo completa. GROUP BY agrupa los eventos por día, y ORDER BY reuniones DESC coloca los días de mayor actividad en la parte superior. LIMIT 5 muestra sólo los cinco primeros. Paso 5: Visualizar los datos Puede utilizar Power BI o Tableau para cuadros de mando. Google Sheets para gráficos rápidos. Python (Matplotlib/Seaborn) para mapas de calor. Pruebe a crear un mapa de calor semanal para detectar los días de sobrecarga. Pivote los datos por día de la semana y hora y, a continuación, aplique un formato condicional. Casos de uso para diferentes funciones Los directivos pueden utilizar este análisis para saber cómo se emplea realmente el tiempo de su equipo. Si las reuniones ocupan más tiempo del previsto, pueden empezar a identificar cuáles son esenciales y cuáles pueden recortarse o eliminarse por completo. Los desarrolladores suelen tener dificultades para encontrar grandes bloques de tiempo para la codificación. Al ejecutar estas consultas, pueden detectar patrones en la sobrecarga de reuniones y abogar por menos interrupciones durante las horas de trabajo intenso. Los profesionales del marketing pueden revisar cuánto tiempo dedican a las sesiones de planificación frente al trabajo de ejecución. Esto puede conducir a una mejor programación del trabajo de campaña y a reuniones más eficientes, centradas y orientadas a objetivos. Los profesores y educadores pueden beneficiarse examinando cómo se divide su tiempo entre sesiones de clase recurrentes, reuniones individuales con estudiantes y tareas administrativas. Con esta perspectiva, pueden buscar un mejor equilibrio y reducir potencialmente el agotamiento. Opcional: Automatizarlo todo ¿Quieres hacerlo con regularidad? Piensa en una de estas opciones: Google Calendar API - Se trata de una herramienta oficial proporcionada por Google que te permite acceder mediante programación a los datos de tu calendario en tiempo real. Puedes escribir un script en Python que se conecte a la API y obtenga tus eventos cada semana o cada mes. De este modo, no tendrás que exportar archivos .ics manualmente. Automatiza con Python - Una vez que hayas configurado el script para obtener y procesar los datos del calendario, puedes programarlo para que se ejecute automáticamente (por ejemplo, cada mes) utilizando herramientas como el Programador de Tareas de Windows o cron en Mac/Linux. Esto ahorra tiempo y mantiene los datos actualizados. Zapier - Se trata de una herramienta sin código que conecta diferentes aplicaciones entre sí. Puedes utilizar Zapier para copiar automáticamente eventos de Google Calendar en una hoja de Google. A partir de ahí, puedes importar esa hoja a tu base de datos SQL. Esta opción es ideal si no estás listo para escribir código Python. Esta sección está destinada a ayudarte a escalar tu proceso para que se ejecute por sí solo, con poco esfuerzo después de la configuración. Pasos siguientes ¿Quieres crear consultas más potentes? Aprende SQL paso a paso con SQL para principiantes en LearnSQL.es. En este curso práctico, aprenderá a escribir consultas SQL reales que extraigan datos significativos de una base de datos. Tratarás temas básicos como la selección de columnas, el filtrado de filas, la ordenación de resultados y la unión de varias tablas: todo lo que necesitas para empezar a analizar datos como un profesional. El curso está estructurado en pequeñas lecciones, cada una con ejercicios interactivos que le ayudarán a practicar mientras aprende. No necesita experiencia previa: todo se explica de forma clara y gradual. Al final, se sentirá cómodo utilizando SQL para responder preguntas, resolver problemas y descubrir información a partir de cualquier fuente de datos. Es la base perfecta para cualquiera que trabaje con datos. ¿Y lo mejor? Puede probarlo gratuitamente para ver cómo funciona antes de comprometerse. Utilice sus datos. Mejore su programación. Ahorre tiempo. Tags: Proyecto SQL análisis de datos