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?

31 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

        Me gusta

        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 😉👍🏻

          Me gusta

  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?

    Me gusta

  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.

    Me gusta

  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

    Me gusta

  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

    Me gusta

  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

    Me gusta

    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 👍🏻

      Me gusta

  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.

    Me gusta

      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

        Me gusta

  7. Hola.
    Gracias por toda la enseñanza entregada… y lo mejor poder compartirla.

    Estoy en un trabajo con Google Sheets y lo trabajo a través de formularios.
    Me gustaria de lleno, si se puede obtener informacion de SQL server y mostrarlo en mis planillas
    Sheets, tal cual como lo hace excel al enlazarse con SQL server medianto un ODBC.

    Sabes como se hace…

    Gracias

    Saludos
    Edü 🙂

    Me gusta

    1. Directamente no he oído que se pueda pues no existe una forma de establecer conexiones (ni ODBC ni JDBC ni similar) desde un documento de Google Sheets

      A «bote pronto», lo más parecido que se me ocurre (y no digo que sea sencillo ni seguro), es hacer uso de las funciones importXXX de Sheets; en su día hablamos de IMPORTRANGE(…) pero hay otras realmente interesantes (y algunas de las cuales tengo pendiente un artículo) como:

      • importXml()
      • importFeed()
      • importData()
      • importHtml()

      Me gusta

  8. Si ya hice un formulario y las respuestas se quedaron en la hoja de calculo, puedo seguir alimentando la misma hoja de calculo con otro formulario?, me explico imagina que tengo que hacer dos bitacoras de dos lugares diferentes, entonces hago un formulario para crear la bitácora con los datos que yo creo necesario y se guarda en la hoja de calculo, pero de ahí en fuera necesito alimentar esa base de datos diario con las incidencias de cada día y poder ver también las incidencias de los días anteriores, se podrá hacer algo parecido desde esta plataforma.

    Saludos y gracias

    Me gusta

    1. Hola Adrián

      No sé si entendí correctamente el problema pero siempre puede hacer que los diferentes formularios rellenen hojas distintas de un mismo documento.

      Si necesita que esté todo en el mismo sitio, siempre puede «fusionar» los datos de las diferentes hojas para poder trabajar sobre un único conjunto de información.

      Espero haber entendido el problema

      Me gusta

Replica a CarlosSanz Cancelar la respuesta

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.