Lanzar consultas SQL en Google Drive


bd en google drive¿Quién ha dicho que Drive no tiene base de datos?

Puede que oficialmente no pero, a poco que se empeñe Google, pronto podremos disponer de una herramienta que pueda hacer sombra al mismísimo Microsoft Access (uno de los pocos productos que, junto a Windows XP considero que merecen la pena).

Google Docs tiene formularios que almacenan sus datos en hojas de cálculo. Si a esto añadimos la posibilidad de generar informes (¿utilizamos macros contra un documento en Drive?) y la de lanzar consultas contra los datos recogidos ¿Qué más necesitamos para tener en la “nube” todo un Access? 😉

Veamos cómo ejecutar consultas SQL contra una hoja de cálculo en Drive y, si creéis que puede ser de utilidad ya os contaré cómo generar informes.

Trabajando en un script que importaba en una hoja de cálculos de Drive las puntuaciones de mis alumnos en la plataforma Moodle me encontré que no se actualizaban correctamente los pilotos de datos que tenía en la hoja de cálculo por lo que tuve que investigar alternativas que no implicasen tener que crear manualmente (una y otra vez) los cruces de datos que necesitaba.

Por fortuna, encontré la función query(…) en Google Drive y, puedo aseguraros, que ha sido un “amor a primera vista” 🙂

Query() permite lanzar consultas contra cualquier hoja de nuestro libro utilizando las columnas como nombre de campo y admitiendo un subconjunto de operaciones limitado pero funcional (sum, avg, count, max, …). En el siguiente enlace puedes consultar el listado completo de las funciones disponibles.

Veamos un ejemplo

Sean las siguientes notas obtenidas por los alumnos de un curso

almacenar base de datos en google drive

Deseamos obtener la media (aritmética) obtenida por cada uno de ellos.

Teniendo en cuenta que la sintaxis de la función query() es

QUERY(datos; consulta; encabezados)

lanzaremos la siguiente consulta

query(Notas!$B$2:$E$15;”select avg(E) where C=’Finalizado’ and B='” & G3 & “‘ label avg(E) ””)

donde:

  1. Notas!$B$2:$E$15 es la hoja (Notas) y rango de celdas en la que se encuentran nuestros datos (B2:E15). Se ha optado por utilizar referencias absolutas ($) para evitar problemas al arrastrar la fórmula a las celdas de los restantes alumnos del grupo. Se podría haber utilizado referencias mixtas (B$2:E$15) puesto que se arrastrará hacia abajo pero así sirve en cualquier contexto 😉
  2. AVG(E) permite obtener la media aritmética de las notas obtenidas por cada alumno (obsérvese que la nota se encuentra en la columna E)
  3. Observa que no existe la cláusula FROM.
  4. where C=’Finalizado’ and B='” & G3 &”‘ nos permite seleccionar las entradas de ejercicios ya terminados por el alumno (Moodle distingue el estado y devuelve todas las entradas) y que hayan sido realizados por el alumno que nos interesa (el que se indique en la columna G y concatenamos a la SQL con el & G3 &)
  5. label avg(E) ” evita que aparezca la etiqueta AVG(E) como nombre de campo en el resultado de la consulta, sustituyéndolo por ” (nada entre comillas simples, ni siquiera un espacio en blanco jejeje)

El resultado final sería

uso de consultas sql en google docs

Conclusión

Potente función la que ofrece Google Drive que nos abre las puertas a sacar mucho partido a la información almacenada en nuestras hojas de cálculo.

Y tú…

  • ¿Conocías la existencia de query(…)?
  • ¿Para qué la has utilizado?
  • ¿Qué echas de menos en Google Drive?
  • ¿Conseguirá algún día Drive hacer que nos olvidemos de Access?

25 comentarios en “Lanzar consultas SQL en Google Drive

      1. Hola! Te estoy leyendo, y acabo de abrir en otra pestaña la info de Google Query.
        A mi esta función (que casi es una aplicación), me resulta super interesante, y no había encontrado lista de funciones…
        Es increíble como reemplaza con sencillez a Power Query y Power Pivot, tablas dinámicas. etc etc.
        Hará 3 meses la descubrí y sigo con los tutoriales 😊😊 gracias por el aporte,
        Aprovecho para consultarte.. los formularios de google no tienen nada que ver con los Userform de Excel, no?
        Ese tema y los dashboard pintorescos es lo único que extraño de MS.
        Nancy

        1. Para mí, la función query, es imprescindible y abuso de ella hasta la saciedad 😅

          Respecto a las preguntas que haces sobre Excel y, partiendo que hace siglos que lo abandone por LibreOffice primero y Google Sheets últimamente, comentar que Userforms viene a ser una forma más compleja (pero también más potente) de introducir datos mientras que los dashboards no entiendo cuál es el problema para crearlos en Google Sheets (al fin y al cabo, no dejan de ser gráficos y tablas que resumen la información que tienes almacenada en tu hoja de cálculo)

          Seguro que se me está escapando algún detalle por lo que agradecería que me lo hicieses ver para ver cómo se podría solucionar con 😉👍🏻

  1. Hola buenas, verás, explicas bien como realizar una media aritmética gracias a esta herramienta que nos ofrece Drive. Mi problema es el siguiente: Quiero hacer que a partir de unas siglas, p.j: clr ; pueda aparecer un nombre completo, ej: Carlos Lopez Rodriguez . ¿Como podría hacerlo? ¿Que código exacto debo de introducir?

  2. Hola: muy claro tu post, pero mi necesidad es si puedo realizar un query a un libro en Drive. Es decir, ya tengo consultas de libro a libro en mi ordenador pero ahora quisiera hacerla a un libro en el Drive. ¿Habrá algún modo? Gracias.

  3. Hola tengo un problema, realizo un formulario Donde me dal el No de una orden y en que medios invierten de la siguiente manera

    No Orden Radio TV Facebook Google
    1 100 20 10
    2 200 1

    Realmente necesito hacer una consulta en donde me arroje en los medios que han invertido Ejemplo

    No de Orden Medio Valor
    1 Radio 100
    1 TV 20
    1 Google 10
    2 TV 200
    2 Facebook 1

    He intentado con muchas formalas y pense que Query me puede funcionar sin embargo aun no lo he logrado sacar

    Serias de Gran ayuda Gracias

  4. Hola. mi consulta es la siguiente:
    tengo una lista de socios de un club. Para poder realizar las actvidades tienen que contar con varios requisitos: estar al dia con la cuota, el cert medico sin vencer, y realizar al menos una actividad por mes.
    las actividades se llenan en otra planilla.
    hay forma de vincular una planilla con la otra?
    Gracias

  5. Buenas noches, como puedo hacer una consulta Where con la función Query para que en una tabla de datos busque con la fecha de una celda especifica.

    Gracias

    1. Hola Santiago, si observa el ejemplo se usa la columna B para comprobar si su contenido coincide con el valor que haya en la celda G3 y la C para ver si contiene el valor ‘Finalizado’.

      En principio, debería servir para adaptarlo al problema que plantea con las fechas pero, si sigue sin poder resolverlo, díganoslo e intentaremos ver qué está ocurriendo 👍🏻

  6. Hola!!
    Quería saber si me puedes ayudar con este tema

    Debo vincular una hoja de calculo que tengo en un drive a la cual se le van agregando registros de acuerdo a un formulario asociado. Esta hoja de cálculo no se puede subir a la web para poder llamarla directamente desde excel.

    Debo vincular esta hoja de calculo de drive con un libro excel que se vaya actualizando a medida que van ingresando los datos. Esto con el fin de manejar de manera mas eficiente los datos y no se me pegue el drive.

    No se, pensaba buscar la opción de vincularla a sql server y de ahí trabajar.

    Quedo atento si me puedes guiar en esta solución.

    1. Hola Francisco, no sé si he sabido entender realmente el problema que planteas: ¿la hoja de cálculo que tenéis “en un Drive” es una hoja de cálculo nativa de Drive (Google Sheets) o es un excel que habéis subido a Drive?

      Salu2

      1. Es una hoja que se va llenando de acuerdo a información le vayan ingresando mediante un formulario.
        No se si me explico. Dame tu contacto para poder explicarte mejor si asi lo necesitas.
        Muchas gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.