Ce document explique comment créer des vues dans BigQuery.
Vous pouvez créer une vue dans BigQuery de différentes manières :
- En utilisant Cloud Console
- En exécutant la commande
bq mk
de l'outil de ligne de commandebq
- En appelant la méthode API
tables.insert
- En utilisant les bibliothèques clientes
- En soumettant une instruction LDD (langage de définition de données)
CREATE VIEW
Dénomination des vues
Lorsque vous créez une vue dans BigQuery, son nom doit être unique pour chaque ensemble de données. Le nom de la vue peut contenir les éléments suivants :
- Jusqu'à 1 024 caractères
- Lettres (majuscules ou minuscules), chiffres et traits de soulignement
Limites associées aux vues
Les vues BigQuery font l'objet des limites suivantes :
- Les vues sont en lecture seule. Vous ne pouvez pas exécuter de requêtes LMD (insertion, mise à jour, suppression) sur une vue.
- L'ensemble de données contenant la vue et celui contenant les tables référencées par celle-ci doivent se trouver dans le même emplacement.
- Vous ne pouvez pas exécuter une tâche BigQuery qui exporte des données à partir d'une vue.
- Vous ne pouvez pas utiliser la méthode d'API JSON
TableDataList
pour extraire des données d'une vue. Pour en savoir plus, consultez la page sur la méthode Tabledata.list. - Lorsque vous utilisez des vues, vous ne pouvez pas combiner des requêtes en SQL standard et en ancien SQL. Une requête en SQL standard ne peut pas référencer une vue définie à l'aide d'une syntaxe en ancien SQL.
- Vous ne pouvez pas référencer les paramètres de requête dans les vues.
- Les schémas des tables sous-jacentes sont stockés avec la vue lors de la création de celle-ci. Si des colonnes sont par exemple ajoutées ou supprimées après la création de la vue, le schéma indiqué sera inexact jusqu'à ce que la vue soit mise à jour. Même avec un schéma inexact, toutes les requêtes soumises produisent des résultats corrects.
- Vous ne pouvez pas mettre à jour automatiquement une vue en ancien SQL vers la syntaxe SQL standard. Pour modifier la requête utilisée pour définir une vue, utilisez l'option Modifier la requête dans Cloud Console, exécutez la commande
bq update --view
dans l'outil de ligne de commandebq
, faites appel aux bibliothèques clientes ou utilisez les méthodes d'API update ou patch. - Vous ne pouvez pas inclure une fonction temporaire définie par l'utilisateur ou une table temporaire dans la requête SQL qui définit une vue.
- Vous ne pouvez pas référencer de vue dans une requête de table générique.
Pour plus d'informations sur les quotas et les limites applicables aux vues, consultez la section Limites associées aux vues.
Autorisations requises
Les vues sont traitées comme des ressources de table dans BigQuery. Par conséquent, la création d'une vue nécessite les mêmes autorisations que la création d'une table. Pour créer une vue, vous devez au minimum disposer des autorisations bigquery.tables.create
. Les rôles IAM prédéfinis suivants incluent les autorisations bigquery.tables.create
:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
En outre, si un utilisateur possède les autorisations bigquery.datasets.create
, il obtient également un accès bigquery.dataOwner
à l'ensemble de données qu'il crée.
L'accès bigquery.dataOwner
permet à l'utilisateur de créer des vues dans l'ensemble de données.
Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.
Créer une vue
Vous pouvez créer une vue en saisissant une requête SQL utilisée pour définir les données accessibles à la vue.
Pour créer une vue :
Console
Après avoir exécuté une requête, pour enregistrer celle-ci en tant que vue, cliquez sur le bouton Enregistrer l'affichage qui figure au-dessus de la fenêtre des résultats de la requête.
Dans la boîte de dialogue Enregistrer la vue :
- Comme Nom du projet, sélectionnez le projet qui servira à stocker la vue.
- Pour Nom de l'ensemble de données, choisissez l'ensemble de données qui contiendra la vue. L'ensemble de données contenant la vue et celui contenant les tables référencées par celle-ci doivent se trouver dans le même emplacement.
- Dans Nom de la table, saisissez le nom de la vue.
- Cliquez sur Enregistrer.
bq
Exécutez la commande bq mk
avec l'option --view
. Pour les requêtes SQL standards, ajoutez l'option --use_legacy_sql
et définissez-la sur false
. Les paramètres facultatifs incluent --expiration
, --description
et --label
.
Si votre requête fait référence à des ressources externes de fonction définie par l'utilisateur (UDF), stockées dans Cloud Storage ou dans des fichiers locaux, spécifiez ces ressources à l'aide de l'option --view_udf_resource
. L'option --view_udf_resource
n'est pas présentée ici. Pour en savoir plus sur l'utilisation des fonctions définies par l'utilisateur, consultez la section Fonctions définies par l'utilisateur et outil de ligne de commande bq
.
Si vous créez une vue dans un projet autre que votre projet par défaut, ajoutez l'ID du projet à la commande en utilisant l'option --project_id
.
bq mk \ --use_legacy_sql=false \ --view_udf_resource=PATH_TO_FILE \ --expiration INTEGER \ --description "DESCRIPTION" \ --label KEY:VALUE \ --view 'QUERY' \ --project_id PROJECT_ID \ DATASET.VIEW
Remplacez les éléments suivants :
PATH_TO_FILE
est le chemin de l'URI ou du système de fichiers local permettant d'accéder à un fichier de code, qui doit être chargé et évalué immédiatement en tant que ressource de fonction définie par l'utilisateur utilisée par la vue. Répétez l'option pour spécifier plusieurs fichiers.INTEGER
définit la durée de vie (en secondes) de la vue. SiINTEGER
est défini sur0
, la vue n'expire jamais. Si vous n'incluez pas l'option--expiration
, BigQuery crée la vue avec la durée de vie définie par défaut pour les tables de l'ensemble de données.DESCRIPTION
est la description du libellé.KEY:VALUE
est la paire clé-valeur qui représente un libellé. Répétez l'option--label
pour spécifier plusieurs libellés.QUERY
est une requête valide.PROJECT_ID
est l'ID de votre projet (si vous n'avez pas configuré de projet par défaut).DATASET
est un ensemble de données dans votre projet.VIEW
est le nom de la vue que vous souhaitez créer.
Exemples :
Saisissez la commande suivante pour créer une vue nommée myview
dans l'ensemble de données mydataset
au sein de votre projet par défaut. Le délai d'expiration est défini sur 3 600 secondes (une heure), la description est définie sur This is my view
et le libellé est défini sur organization:development
. La requête utilisée pour créer la vue interroge les données de l'ensemble de données public USA Name Data.
bq mk \
--use_legacy_sql=false \
--expiration 3600 \
--description "This is my view" \
--label organization:development \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC' \
mydataset.myview
Saisissez la commande suivante pour créer une vue nommée myview
dans l'ensemble de données mydataset
au sein du projet myotherproject
. La description est définie sur This is my view
, le libellé est défini sur organization:development
et le délai d'expiration de la vue est défini sur le délai d'expiration par défaut pour les tables de l'ensemble de données.
La requête utilisée pour créer la vue interroge les données de l'ensemble de données public USA Name Data.
bq mk \
--use_legacy_sql=false \
--description "This is my view" \
--label organization:development \
--project_id myotherproject \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC' \
mydataset.myview
Une fois la vue créée, vous pouvez mettre à jour son délai d'expiration, sa description et ses libellés. Pour en savoir plus, consultez la page Mettre à jour les propriétés d'une vue.
API
Appelez la méthode tables.insert
avec une ressource de table contenant une propriété view
.
Go
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery en langage Go.
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery en langage Java.
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery en langage Node.js.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Une fois la vue créée, vous l'interrogez de la même manière qu'une table.
Étapes suivantes
- Pour en savoir plus sur la création de vues autorisées, consultez la page Créer des vues autorisées.
- Pour savoir comment répertorier les vues, consultez la page Répertorier des vues.
- Pour en savoir plus sur l'obtention de métadonnées de vue, consultez la page Obtenir des informations sur les vues.
- Pour en savoir plus sur la mise à jour de vues, consultez la page Mettre à jour les propriétés d'une vue.
- Pour en savoir plus sur la gestion des vues, consultez la page Gérer les vues.