Hojas de cálculo activas en bases de datos

El equipo de BigQuery desarrolló la capacidad de tratar una hoja de cálculo de Google como una tabla en una base de datos. Eso significa que puedes unir una tabla de BigQuery de mil millones de filas con una tabla de asignación de 100 filas que puedes escribir en una hoja de cálculo en una sola consulta.

Esta función te permite configurar modelos de datos, crear una canalización de datos para datos ad hoc o comparar cifras actualizadas con tus objetivos y proyecciones más recientes.

Ejemplo

Por ejemplo, tal vez quieras modelar en Looker los nombres de usuario que se recopilaron con un formulario de Google.

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

  1. Con Formularios de Google, recopila los datos en una hoja de cálculo de Google. Cada envío agrega una fila a la hoja.
  2. Comparte la hoja de cálculo con la cuenta de servicio que usas para conectarte a Looker o otorga acceso a los usuarios con un vínculo (solo lectura).
  3. Asegúrate de que las API de Drive y de Hojas de cálculo estén habilitadas para 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 una la tabla de la hoja de cálculo con otros datos del usuario que quizás ya hayas recopilado, como los datos ubicaciones. También puedes usar SQL para normalizar los nombres que provienen de la base de datos. Los datos se pueden almacenar en caché en BigQuery para evitar una carga pesada en la hoja de cálculo.

El siguiente es un ejemplo de cómo podría verse 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 compilar aspectos y paneles que muestren métricas sobre todos los nombres de usuario que recopilaste de Formularios de Google y que ingresaste en la Hoja de cálculo de Google, así como otra información sobre cada usuario individual.