Hojas de cálculo activas en bases de datos

El equipo de BigQuery ha desarrollado la capacidad de tratar una hoja de cálculo de Google como una tabla de una base de datos. Esto significa que puedes combinar una tabla de BigQuery con mil millones de filas con una tabla de asignación de 100 filas que escribas en una hoja de cálculo en una sola consulta.

Esta función le permite configurar modelos de datos, crear una canalización de datos para datos puntuales o comparar cifras actualizadas con sus objetivos y proyecciones más recientes.

Ejemplo

Por ejemplo, puede que quiera modelar nombres de usuario en Looker que se hayan recogido mediante un formulario de Google.

Para recoger y modelar la información en Looker, debes seguir estos pasos:

  1. Con Formularios de Google, recoge los datos en una hoja de cálculo de Google. Cada envío añade una fila a la hoja.
  2. Comparte la hoja de cálculo con la cuenta de servicio que usas para conectarte a Looker o concede acceso a los usuarios con un enlace (solo lectura).
  3. Asegúrate de que las APIs Drive y Sheets estén habilitadas en tu proyecto.
  4. Crea una tabla desde la interfaz de BigQuery que obtenga su contenido de la hoja de cálculo.
  5. En tu proyecto de Looker, genera un modelo de datos que combine la tabla de la hoja de cálculo con otros datos de usuario que ya hayas recogido, como la ubicación de los usuarios. También puedes usar SQL para normalizar los nombres que proceden de la base de datos. Los datos se pueden almacenar en caché en BigQuery para evitar una carga excesiva en la hoja de cálculo.

A continuación, se muestra un ejemplo del aspecto que podría tener el LookML resultante:

explore: names_sheet {
  persist_for: "60 seconds"

  join: names_facts {
    sql_on: ${names_sheet.normalized_name} = ${names_facts.normalized_name} ;;
    sql_where: ${names_facts.city} ;;
    relationship: one_to_one
  }

  view_name: names_sheet {
    derived_table: {
      persist_for: "2 minutes"
      sql:
        SELECT row_number() OVER() as id, name, UPPER(CASE WHEN REGEXP_MATCH(name, r'\,')
          THEN REGEXP_EXTRACT(name, r', (\w+)')
          ELSE REGEXP_EXTRACT(name, r'^(\w+)')
          END
          ) as normalized_name FROM namesheet.names ;;
    }

    dimension: id {
      type: number
    }

    dimension: name {
      order_by_field: id    # keep the rows in the original order
    }

    dimension: normalized_name {
    }

    measure: count {
      type: count
      drill_fields: [id, name, names_facts.city]
    }

    measure: count_from_new_york_city {
      type: count
      filters: [names_facts.city: "New York City"]
    }

    measure: percentage_from_new_york_city {
      type: number
      sql: ${count_from_new_york_city}/${count} ;;
      value_format_name: percent_2
    }

    measure: average_age_median {
      type: average
      sql: ${names_facts.age_median} ;;
      value_format: "0000"
    }
  }
}

A partir de este modelo, puedes crear Exploraciones con tus datos y generar vistas y paneles de control que muestren métricas sobre todos los nombres de usuario que has recogido de Formularios de Google y has introducido en la hoja de cálculo de Google, así como otra información sobre cada usuario.