Feuilles de calcul en direct dans les bases de données

L'équipe BigQuery a développé la possibilité de traiter une feuille de calcul Google comme une table dans une base de données. Vous pouvez ainsi joindre une table BigQuery d'un 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 les données ponctuelles ou de comparer des chiffres à jour à vos derniers objectifs et projections.

Exemple

Par exemple, vous pouvez modéliser dans Looker les noms d'utilisateur 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. Chaque formulaire envoyé génère une ligne dans la feuille.
  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 via un lien (lecture seule).
  3. Assurez-vous que les API Drive et Sheets sont activées pour votre projet.
  4. Créez une table à partir de l'interface BigQuery qui récupère son contenu à partir 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 la localisation 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 de surcharger la feuille de calcul.

Voici un exemple de ce à quoi peut ressembler le 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 avec vos données, et concevoir des visages 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 Sheets, ainsi que d'autres informations sur chaque utilisateur.