Feuilles de calcul en direct dans les bases de données
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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:
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).
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 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.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/31 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/31 (UTC)."],[],[],null,["# Live spreadsheets in databases\n\nThe BigQuery team has developed the ability to treat a Google Sheet like a table in a database. That means you can join a billion-row BigQuery table with a 100-row mapping table that you type into a spreadsheet in a single query.\n\n\nThis feature lets you configure data models, create a data pipeline for ad hoc data, or compare up-to-date numbers to your latest goals and projections.\n\nExample\n-------\n\n\nFor example, you might want to model usernames in Looker that were collected using a Google form.\n\n\nTo collect and model the information in Looker, you would perform the following steps:\n\n1. Using Google Forms, [collect the data into a Google sheet](https://support.google.com/docs/answer/2917686). Every submission adds a row in the sheet.\n2. Share the spreadsheet with the service account that you use to connect to Looker, or grant access to users with a link (view only).\n3. Make sure that the [Drive API and Sheets API are enabled for your project](https://console.developers.google.com/apis/library).\n4. Create a table from the [BigQuery interface](/bigquery) that gets its content from the spreadsheet.\n5. In your Looker project, [generate a data model](/looker/docs/generating-a-model) that joins the spreadsheet table with other user data that you might already have collected, such as users' locations. You can also use SQL to normalize the names that are coming from the database. The data can be cached in BigQuery to avoid heavy load on the spreadsheet.\n\n\nThe following is an example of what the resulting LookML might look like: \n\n```\nexplore: names_sheet {\n persist_for: \"60 seconds\"\n\n join: names_facts {\n sql_on: ${names_sheet.normalized_name} = ${names_facts.normalized_name} ;;\n sql_where: ${names_facts.city} ;;\n relationship: one_to_one\n }\n\n view_name: names_sheet {\n derived_table: {\n persist_for: \"2 minutes\"\n sql:\n SELECT row_number() OVER() as id, name, UPPER(CASE WHEN REGEXP_MATCH(name, r'\\,')\n THEN REGEXP_EXTRACT(name, r', (\\w+)')\n ELSE REGEXP_EXTRACT(name, r'^(\\w+)')\n END\n ) as normalized_name FROM namesheet.names ;;\n }\n\n dimension: id {\n type: number\n }\n\n dimension: name {\n order_by_field: id # keep the rows in the original order\n }\n\n dimension: normalized_name {\n }\n\n measure: count {\n type: count\n drill_fields: [id, name, names_facts.city]\n }\n\n measure: count_from_new_york_city {\n type: count\n filters: [names_facts.city: \"New York City\"]\n }\n\n measure: percentage_from_new_york_city {\n type: number\n sql: ${count_from_new_york_city}/${count} ;;\n value_format_name: percent_2\n }\n\n measure: average_age_median {\n type: average\n sql: ${names_facts.age_median} ;;\n value_format: \"0000\"\n }\n }\n}\n```\n\n\nFrom this model, you can create [Explores](/looker/docs/creating-and-editing-explores) with your data and build [Looks](/looker/docs/saving-and-editing-looks) and [dashboards](/looker/docs/creating-user-defined-dashboards) that show metrics about all the usernames that you've collected from Google Forms and entered into the Google Sheet, as well as other information about each individual user."]]