L'équipe BigQuery a développé une fonctionnalité permettant de traiter une Google Sheet comme une table dans une base de données. Cela signifie que vous pouvez joindre une table BigQuery comportant 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:
- À l'aide de Google Forms, collectez les données dans une feuille de calcul Google Sheets. Chaque envoi ajoute une ligne dans la feuille.
- Partagez la feuille de calcul avec le compte de service que vous utilisez pour vous connecter à Looker ou accordez l'accès aux utilisateurs à l'aide d'un lien (lecture seule).
- Assurez-vous que les API Drive et Sheets sont activées pour votre projet.
- Créez une table à partir de l'interface BigQuery qui récupère son contenu à partir de la feuille de calcul.
- Dans votre projet Looker, générez un modèle de données qui associe la table de la feuille de calcul à d'autres données utilisateur que vous avez peut-être déjà collectées, comme les données des utilisateurs emplacements. 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 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, ainsi que des présentations et des tableaux de bord affichant des métriques sur tous les noms d'utilisateur que vous avez collectés à l'aide de Google Forms et que vous avez saisis dans la feuille de calcul Google Sheet, ainsi que d'autres informations sur chaque utilisateur.