Feuilles de calcul actives dans les bases de données

L'équipe BigQuery a développé la capacité de traiter une Google Sheet comme un tableau dans une base de données. Cela signifie que vous pouvez joindre une table BigQuery de 1 milliard de lignes à une table de mappage de 100 lignes que vous saisissez dans une feuille de calcul en une seule requête.

Cette fonctionnalité vous permet de configurer des modèles de données, de créer un pipeline de données pour des données ad hoc ou de comparer des chiffres à jour avec vos derniers objectifs et projections.

Exemple

Par exemple, vous pouvez modéliser les noms d'utilisateur dans Looker collectés à l'aide d'un formulaire Google.

Pour collecter et modéliser les informations dans Looker, procédez comme suit:

  1. À l'aide de Google Forms, collectez les données dans une feuille de calcul Google Sheets. Une ligne est ajoutée à la feuille à chaque envoi.
  2. Partagez la feuille de calcul avec le compte de service que vous utilisez pour vous connecter à Looker, ou accordez l'accès aux utilisateurs avec un lien (lecture seule).
  3. Assurez-vous que les API Drive et Sheets sont activées pour votre projet.
  4. Dans l'interface BigQuery, créez une table dont le contenu provient de la feuille de calcul.
  5. Dans votre projet Looker, générez un modèle de données qui joint la table de la feuille de calcul à d'autres données utilisateur que vous avez peut-être déjà collectées, telles que les positions des utilisateurs. Vous pouvez également utiliser SQL pour normaliser les noms provenant de la base de données. Les données peuvent être mises en cache dans BigQuery pour éviter une charge importante sur la feuille de calcul.

Voici un exemple de code LookML obtenu:

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"
    }
  }
}

À partir de ce modèle, vous pouvez créer des explorations à l'aide de vos données, et concevoir des présentations et des tableaux de bord qui affichent des métriques sur tous les noms d'utilisateur que vous avez collectés dans Google Forms et saisis dans la feuille de calcul Google Sheet, ainsi que d'autres informations sur chaque utilisateur.