Présentation de SQL dans BigQuery
Ce document offre un aperçu des instructions et des dialectes SQL compatibles avec BigQuery.
Présentation
GoogleSQL est un langage de requête structuré (SQL) conforme à la norme ANSI, qui inclut les types d'instructions compatibles suivants :
- Les instructions de requête, également appelées instructions de langage de requête de données (Data Query Language), constituent la méthode principale d'analyse des données dans BigQuery. Elles analysent une ou plusieurs tables ou expressions, et renvoient des lignes de calculs de résultats.
- Les instructions de langage procédural sont des extensions procédurales de GoogleSQL qui vous permettent d'exécuter plusieurs instructions SQL dans une seule requête. Les instructions procédurales peuvent utiliser des variables et des instructions de flux de contrôle, et peuvent avoir des effets secondaires.
- Les instructions LDD (langage de définition de données) vous permettent de créer et de modifier des objets de base de données, tels que des tables, des vues, des fonctions et des règles d'accès au niveau des lignes.
- Les instructions LMD (langage de manipulation de données) vous permettent de mettre à jour, d'insérer et de supprimer des données dans vos tables BigQuery.
- Les instructions LDD (langage de contrôle de données) vous permettent de contrôler les ressources système BigQuery telles que l'accès et la capacité.
- Les instructions TCL (Transaction Control Language) vous permettent de gérer les transactions pour les modifications de données.
- Les autres instructions fournissent des fonctionnalités supplémentaires, telles que l'exportation de données.
Dialectes BigQuery SQL
BigQuery est compatible avec le dialecte GoogleSQL, mais un ancien dialecte SQL est également disponible. Si vous débutez sur BigQuery, vous devez utiliser le langage GoogleSQL, car il offre un large éventail de fonctionnalités. Par exemple, des fonctionnalités telles que les instructions LDD et LMD ne sont compatibles qu'avec le langage GoogleSQL. L'ancien SQL est conservé pour assurer la rétrocompatibilité. Nous vous recommandons d'effectuer la migration si vous utilisez l'ancien SQL.
Changer le dialecte par défaut
L'interface que vous utilisez pour interroger vos données détermine le dialecte de requête par défaut. Pour basculer d'un dialecte à l'autre :
Console
Le dialecte par défaut de la console Google Cloud est le dialecte GoogleSQL. Pour remplacer le dialecte par l'ancien SQL, procédez comme suit :
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, cliquez sur le bouton Plus > Paramètres de requête.
Dans la section Options avancées, pour Dialecte SQL, cliquez sur Ancien, puis sur Enregistrer. Cela définit l'ancien dialecte SQL comme dialecte à utiliser pour cette requête. Si vous cliquez sur Saisir une nouvelle requête pour rédiger une autre requête, vous devrez à nouveau définir l'option d'ancien SQL.
SQL
Le dialecte SQL par défaut est le dialecte GoogleSQL.
Vous pouvez définir le dialecte SQL en incluant le préfixe #standardSQL
ou #legacySQL
dans votre requête.
Ces préfixes de requête ne sont pas sensibles à la casse. Ils doivent précéder la requête et en être séparés par un caractère de retour à la ligne. L'exemple suivant définit le dialecte en ancien SQL et interroge l'ensemble de données de natalité :
Dans Google Cloud Console, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
#legacySQL SELECT weight_pounds, state, year, gestation_weeks FROM [bigquery-public-data:samples.natality] ORDER BY weight_pounds DESC LIMIT 10;
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Le dialecte de requête par défaut de l'outil de ligne de commande bq
est l'ancien dialecte SQL. Pour basculer vers le dialecte GoogleSQL, ajoutez l'option --use_legacy_sql=false
ou --nouse_legacy_sql
à votre instruction de ligne de commande.
Passer au dialecte GoogleSQL
Pour utiliser la syntaxe GoogleSQL dans un job de requête, définissez le paramètre use_legacy_sql
sur false
.
bq query \
--use_legacy_sql=false \
'SELECT
word
FROM
`bigquery-public-data.samples.shakespeare`'
Définissez GoogleSQL comme dialecte par défaut.
Vous pouvez définir le dialecte GoogleSQL comme dialecte par défaut pour l'outil de ligne de commande et le shell interactif en modifiant le fichier de configuration de l'outil de ligne de commande : .bigqueryrc
.
Pour plus d'informations sur .bigqueryrc
, consultez la section Définir des valeurs par défaut pour les indicateurs spécifiques aux commandes.
Pour définir --use_legacy_sql=false
dans .bigqueryrc
, procédez comme suit :
- Ouvrez
.bigqueryrc
dans un éditeur de texte. Par défaut,.bigqueryrc
devrait figurer dans votre répertoire utilisateur, par exemple$HOME/.bigqueryrc
. Ajoutez ce qui suit au fichier. Cet exemple définit le langage GoogleSQL comme syntaxe par défaut pour les requêtes et pour la commande
mk
(utilisée lors de la création d'une vue). Si vous avez déjà configuré des valeurs par défaut pour les indicateurs de commandequery
oumk
, il n'est pas nécessaire d'ajouter à nouveau[query]
ou[mk]
.[query] --use_legacy_sql=false [mk] --use_legacy_sql=false
Enregistrez et fermez le fichier.
Si vous utilisez le shell interactif, vous devez en sortir et la redémarrer pour que les modifications soient appliquées.
Pour plus d'informations sur les options de ligne de commande disponibles, consultez la documentation de référence sur l'outil de ligne de commande bq.
C#
Avant d'essayer cet exemple, suivez les instructions de configuration pour C# du 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 pour C#.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Par défaut, la bibliothèque C# utilise le dialecte GoogleSQL.Passer à l'ancien dialecte SQL
Pour utiliser l'ancienne syntaxe SQL dans une tâche de requête, définissez le paramètre UseLegacySql
sur true
.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du 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 pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Par défaut, la bibliothèque Go utilise le dialecte GoogleSQL.Passer à l'ancien dialecte SQL
Pour utiliser l'ancienne syntaxe SQL dans une tâche de requête, définissez la propriété UseLegacySQL
dans la configuration de la requête sur true
.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du 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 pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Par défaut, la bibliothèque Java utilise le dialecte GoogleSQL.Passer à l'ancien dialecte SQL
Pour utiliser l'ancienne syntaxe SQL dans une tâche de requête, définissez le paramètre useLegacySql
sur true
.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du 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 pour Node.js.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Par défaut, la bibliothèque cliente Node.js utilise le dialecte GoogleSQL.Passer à l'ancien dialecte SQL
Pour utiliser l'ancienne syntaxe SQL dans une tâche de requête, définissez le paramètre useLegacySql
sur true
.
PHP
Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP du 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 pour PHP.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Par défaut, la bibliothèque cliente PHP utilise le dialecte GoogleSQL.Passer à l'ancien dialecte SQL
Pour utiliser l'ancienne syntaxe SQL dans une tâche de requête, définissez le paramètre useLegacySql
sur true
.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du 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 pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Par défaut, la bibliothèque cliente Python utilise le dialecte GoogleSQL.Passer à l'ancien dialecte SQL
Pour utiliser l'ancienne syntaxe SQL dans une tâche de requête, définissez le paramètre use_legacy_sql
sur True
.
Ruby
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby du 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 pour Ruby.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Par défaut, la bibliothèque cliente Ruby utilise le dialecte GoogleSQL.Passer à l'ancien dialecte SQL
Pour utiliser l'ancienne syntaxe SQL dans une tâche de requête, transmettez l'option legacy_sql: true
avec votre requête.
Étapes suivantes
- Pour en savoir plus sur l'exécution d'une requête SQL dans BigQuery, consultez la page Exécuter des tâches de requête interactives et par lot.
- Pour en savoir plus sur l'optimisation des requêtes en général, consultez la page Présentation de l'optimisation des performances des requêtes.
- Pour en savoir plus sur la syntaxe GoogleSQL permettant d'interroger des données dans BigQuery, consultez la page Syntaxe des requêtes.