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 en una base de datos. Esto 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 con 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, es posible que quieras modelar los nombres de usuario en Looker que se recopilaron mediante 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 entrega agrega una fila en 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 APIs de Drive y de Sheets estén habilitadas para tu proyecto.
  4. Crea una tabla en 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 podrías haber recopilado, como las ubicaciones de los usuarios. También puedes utilizar 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.

A continuación, se muestra 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 crear vistas y paneles que muestren métricas sobre todos los nombres de usuario que recopilaste en Formularios de Google e ingresaste en la hoja de cálculo de Google, así como otra información sobre cada usuario individual.