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?

15 comentarios en “Lanzar consultas SQL en Google Drive

  1. Carlos dijo:

    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. Luis Eduardo dijo:

    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. Lucy Caicedo dijo:

    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

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 )

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 )

Google+ photo

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

Conectando a %s