Utiliser des instructions de langage de définition des données

Les instructions LDD (langage de définition de données) vous permettent de créer et modifier des ressources BigQuery à l'aide de la syntaxe de requête SQL standard. Dans BigQuery, à l'heure actuelle, les commandes LDD vous permettent de :

Instruction CREATE TABLE

Pour créer une table dans BigQuery, utilisez l’instruction LDD CREATE TABLE.

Syntaxe

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE}
table_name
[(
  column_name column_schema[, ...]
)]
[PARTITION BY partition_expression]
[CLUSTER BY clustering_column_list]
[OPTIONS(table_option_list)]
[AS query_statement]

Où :

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE} est l’une des instructions suivantes :

  • CREATE TABLE : crée une table.
  • CREATE TABLE IF NOT EXISTS : crée une table uniquement si celle-ci n'existe pas dans l'ensemble de données spécifié.
  • CREATE OR REPLACE TABLE : crée une table et remplace une table existante du même nom dans l'ensemble de données spécifié.

Les instructions CREATE TABLE doivent respecter les règles suivantes :

  • Chaque requête ne peut contenir qu'une seule instruction CREATE.
  • La liste des colonnes, la clause as query_statement, ou les deux doivent être présentes.
  • Lorsque la liste des colonnes et la clause as query_statement sont toutes deux présentes, BigQuery ignore les noms figurant dans la clause as query_statement et met les colonnes en correspondance avec leur position dans la liste de colonnes.
  • Lorsque seule la clause as query_statement est spécifiée, BigQuery détermine le nom et le type des colonnes à l'aide de la clause as query_statement.
  • Les noms des colonnes doivent être spécifiés soit avec la liste de colonnes, soit à l'aide de la clause as query_statement.
  • Les noms de colonnes en double ne sont pas autorisés.

table_name

table_name est le nom de la table que vous créez. Le nom de la table doit être unique pour chaque ensemble de données. Le nom de la table peut :

  • contenir jusqu'à 1 024 caractères ;
  • contenir des lettres (majuscules ou minuscules), des chiffres et des traits de soulignement.

column_name et column_schema

(column_name column_schema[, ...]) contient les informations de schéma de la table dans une liste d'éléments séparés par des virgules :

  • column_name est le nom de la colonne. Un nom de colonne :
    • ne doit contenir que des lettres (a-z, A-Z), des chiffres (0-9) ou des traits de soulignement (_) ;
    • doit commencer par une lettre ou un trait de soulignement ;
    • peut contenir jusqu'à 128 caractères.
  • column_schema est semblable à un type de données, mais il accepte une contrainte NOT NULL facultative pour les types autres que ARRAY. column_schema accepte également des options sur les colonnes de premier niveau et sur les champs STRUCT.
column_schema :=
   {simple_type [NOT NULL] |
    STRUCT<field_list> [NOT NULL] |
    ARRAY<array_element_schema>}
   [OPTIONS(column_option_list)]

field_list := field_name column_schema [, ...]

array_element_schema := {simple_type | STRUCT<field_list>} [NOT NULL]

simple_type correspond à tout type de données accepté, à l'exception de STRUCT et ARRAY.

field_name est le nom du champ "struct". Les noms de champs "struct" sont soumis aux mêmes restrictions que les noms de colonnes.

Lorsque la contrainte NOT NULL est présente pour une colonne ou un champ, la colonne ou le champ sont créés avec le mode REQUIRED. Inversement, lorsque la contrainte NOT NULL est absente, la colonne ou le champ sont créés avec le mode NULLABLE.

Les colonnes et les champs de type ARRAY n'acceptent pas le modificateur NOT NULL. Par exemple, un column_schema correspondant à ARRAY<INT64> NOT NULL n'est pas valide, car les colonnes ARRAY présentent le mode REPEATED et peuvent être vides, mais elles ne peuvent pas être NULL. Dans une table, un élément de tableau ne peut jamais être NULL, que la contrainte NOT NULL soit spécifiée ou non. Par exemple, ARRAY<INT64> est équivalent à ARRAY<INT64 NOT NULL>.

L'attribut NOT NULL du champ column_schema d'une table n'est pas répercuté dans le reste de la table par les requêtes. Par exemple, si la table T contient une colonne déclarée comme x INT64 NOT NULL, CREATE TABLE dataset.newtable AS SELECT x FROM T crée une table appelée dataset.newtable dans laquelle x est NULLABLE.

column_schema ne peut être utilisé que dans la liste des définitions de colonnes des instructions CREATE TABLE. Il ne peut pas être utilisé comme type à l'intérieur des expressions. Par exemple, CAST(1 AS INT64 NOT NULL) n'est pas valide.

partition_expression

PARTITION BY est une clause facultative qui contrôle le partitionnement des tables. partition_expression est une expression qui détermine comment partitionner la table. L'expression de partition peut contenir les valeurs suivantes :

  • PARTITION BY DATE(_PARTITIONTIME) : partitionne la table en utilisant l'horodatage basé sur la date dans la pseudo-colonne _PARTITIONTIME pseudo column. Cette syntaxe n'est acceptée avec CREATE TABLE que lorsque la clause AS query_statement est absente.
  • PARTITION BY DATE(<timestamp_column>) : partitionne la table en utilisant la date de la colonne TIMESTAMP.
  • PARTITION BY <date_column> : partitionne la table en utilisant la colonne DATE.

clustering_column_list

CLUSTER BY est une clause facultative qui contrôle le clustering des tables. clustering_column_list est une liste d'éléments séparés par des virgules qui détermine comment procéder au clustering de la table. Cette liste peut contenir jusqu'à quatre noms de colonnes à mettre en cluster.

table_option_list

La liste d'options vous permet de définir des options de table, telles qu'une étiquette et une date/heure d'expiration. Vous pouvez inclure plusieurs options dans une liste d'éléments séparés par des virgules.

Spécifiez les listes d'options de table au format suivant :

NAME=VALUE, ...

NAME et VALUE doivent être utilisées selon l’une des combinaisons suivantes :

NAME VALUE Description
expiration_timestamp TIMESTAMP

Exemple : expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC"

Cette propriété est équivalente à la propriété de ressource de table expirationTime.

partition_expiration_days

FLOAT64

Exemple : partition_expiration_days=7

Cette propriété est équivalente à la propriété de ressource de table timePartitioning.expirationMs mais utilise des jours au lieu de millisecondes. Un jour équivaut à 86 400 000 millisecondes, soit 24 heures.

Cette propriété ne peut être définie que si la table est partitionnée.

require_partition_filter

BOOL

Exemple : require_partition_filter=true

Cette propriété est équivalente à la propriété de ressource de table timePartitioning.requirePartitionFilter.

Cette propriété ne peut être définie que si la table est partitionnée.

kms_key_name

STRING

Exemple : kms_key_name="projects/project_id/locations/location/keyRings/keyring/cryptoKeys/key"

Cette propriété est équivalente à la propriété de ressource de table encryptionConfiguration.kmsKeyName.

En savoir plus sur la protection des données avec des clés Cloud KMS.

friendly_name

STRING

Exemple : friendly_name="my_table"

Cette propriété est équivalente à la propriété de ressource de table friendlyName.

description

STRING

Exemple : description="a table that expires in 2020"

Cette propriété est équivalente à la propriété de ressource de table description.

labels

ARRAY<STRUCT<STRING, STRING>>

Exemple : labels=[("org_unit", "development")]

Cette propriété est équivalente à la propriété de ressource de table labels.

VALUE est une expression constante ne contenant que des littéraux, des paramètres de requête et des fonctions scalaires. Si l'expression constante renvoie la valeur null, l'option NAME correspondante est ignorée.

L'expression constante ne peut pas contenir les éléments suivants :

  • Une référence à une table
  • Des sous-requêtes ou des instructions SQL telles que SELECT, CREATE et UPDATE
  • Des fonctions personnalisées, des fonctions d'agrégation ou des fonctions d'analyse
  • Les fonctions scalaires suivantes :
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

column_option_list

Dans column_schema, column_option_list vous permet de spécifier des options de colonnes ou de champs facultatives. Les options de colonnes ont la même syntaxe et les mêmes exigences que les options de tables, mais une liste différente de NAME et de VALUE :

NAME VALUE Description
description

STRING

Exemple : description="a unique id"

Cette propriété est équivalente à la propriété de ressource de table schema.fields[].description.

query_statement

La clause AS query_statement spécifie la requête à partir de laquelle la table doit être créée. Reportez-vous à la documentation de référence sur la syntaxe SQL pour connaître le format accepté pour query_statement.

Limites connues

  • Il n'est pas possible de créer une table partitionnée par temps d'ingestion à partir du résultat d'une requête. Au lieu de cela, créez la table avec une instruction LDD CREATE TABLE, puis insérez-y des données à l'aide d'une instruction LMD INSERT.
  • Il n'est pas possible de remplacer une table par un type de partitionnement différent à l'aide du modificateur OR REPLACE. Au lieu de cela, supprimez (DROP) la table, puis recréez-la avec une instruction CREATE TABLE ... AS SELECT ....

Exemples CREATE TABLE

Créer une table

L'instruction LDD CREATE TABLE crée une table avec les options spécifiées. Si le nom de la table existe dans l'ensemble de données, l'erreur suivante est renvoyée :

Already Exists: [PROJECT]:[DATASET].[TABLE]

L'exemple suivant crée une table partitionnée appelée newtable dans mydataset. Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.newtable`.

La table est partitionnée à l'aide de la partition_expression suivante : PARTITION BY DATE(_PARTITIONTIME). Cette expression partitionne la table à l'aide de l'horodatage basé sur la date inscrit dans la pseudo-colonne _PARTITIONTIME.

Le schéma de la table contient deux colonnes :

  • x : un entier, avec la description "Un champ INTEGER facultatif"
  • y : un type de données STRUCT contenant deux colonnes :

    • a : un tableau de chaînes, avec la description "Un champ STRING répété"
    • b : une valeur booléenne

La liste d'options de table spécifie :

  • les date et heure d'expiration de la table : 1er janvier 2020 à 00:00:00 UTC ;
  • le délai d'expiration de la partition : 1 jour ;
  • la description : une table qui expire en 2020 ;
  • l'étiquette : org_unit = development.

Pour créer une table à l'aide du LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE mydataset.newtable
     (
       x INT64 OPTIONS(description="An optional INTEGER field"),
       y STRUCT<
         a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
         b BOOL
       >
     )
     PARTITION BY DATE(_PARTITIONTIME)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       partition_expiration_days=1,
       description="a table that expires in 2020, with each partition living for 24 hours",
       labels=[("org_unit", "development")]
     )
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE mydataset.newtable
     (
       x INT64 OPTIONS(description="An optional INTEGER field"),
       y STRUCT<
         a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
         b BOOL
       >
     )
     PARTITION BY DATE(_PARTITIONTIME)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       partition_expiration_days=1,
       description="a table that expires in 2020, with each partition living for 24 hours",
       labels=[("org_unit", "development")]
     )
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.newtable
(
  x INT64 OPTIONS(description="An optional INTEGER field"),
  y STRUCT<
    a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
    b BOOL
  >
)
PARTITION BY DATE(_PARTITIONTIME)
OPTIONS(
  expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
  partition_expiration_days=1,
  description="a table that expires in 2020, with each partition living for 24 hours",
  labels=[("org_unit", "development")]
)'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer une table à partir d'une table existante

L'instruction LDD CREATE TABLE ... AS SELECT crée une table à partir d’une requête. Si le nom de la table existe dans l'ensemble de données, l'erreur suivante est renvoyée :

Already Exists: [PROJECT]:[DATASET].[TABLE]

L'exemple suivant crée une table appelée top_words dans mydataset. Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.rainy_days`.

Le schéma de la table contient deux colonnes :

  • corpus : nom d'un corpus de Shakespeare ;
  • top_words : un tableau (ARRAY) de structures (STRUCT) contenant deux champs : word (une chaîne (STRING)) et word_count (un type de données INT64 représentant le nombre de mots).

La liste d'options de table spécifie :

  • la description : dix mots principaux par corpus de Shakespeare.

Pour créer une table à l'aide du LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count) ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM bigquery-public-data.samples.shakespeare
     GROUP BY corpus;

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count) ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM bigquery-public-data.samples.shakespeare
     GROUP BY corpus;

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count)
                 ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM `bigquery-public-data.samples.shakespeare`
     GROUP BY corpus;'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer une table seulement si la table n'existe pas

L'instruction LDD CREATE TABLE IF NOT EXISTS crée une table avec les options spécifiées seulement si ce nom de table n'existe pas déjà dans l'ensemble de données. Si ce nom de table existe dans l'ensemble de données, aucune erreur n'est renvoyée et aucune mesure n'est prise.

L'exemple suivant crée une table appelée newtable dans mydataset seulement si aucune table du nom de newtable n'existe déjà dans mydataset. Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.newtable`.

Le schéma de la table contient deux colonnes :

  • x : un entier
  • y : un type de données STRUCT contenant a (un tableau de chaînes) et b (une valeur booléenne)

La liste d'options de table spécifie :

  • les date et heure d'expiration : 1er janvier 2020 à 00:00:00 UTC ;
  • la description : une table qui expire en 2020 ;
  • l'étiquette : org_unit = development.

Pour créer une table à l'aide du LDD seulement si ce nom de table n'existe pas déjà dans l'ensemble de données :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
 OPTIONS(
   expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
   description="a table that expires in 2020",
   labels=[("org_unit", "development")]
 )'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer ou remplacer une table

L'instruction LDD CREATE OR REPLACE TABLE crée une table avec les options spécifiées. Si le nom de la table existe déjà dans l'ensemble de données, la table est remplacée par une table vide.

L'exemple suivant crée une table appelée newtable dans mydataset. Si newtable existe déjà dans mydataset, elle est remplacée par la nouvelle table. Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.newtable`.

Le schéma de la table contient deux colonnes :

  • x : un entier
  • y : un type de données STRUCT contenant a (un tableau de chaînes) et b (une valeur booléenne)

La liste d'options de table spécifie :

  • les date et heure d'expiration : 1er janvier 2020 à 00:00:00 UTC ;
  • la description : une table qui expire en 2020 ;
  • l'étiquette : org_unit = development.

Pour créer une table à l'aide du LDD et remplacer une table du même nom :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
 OPTIONS(
   expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
   description="a table that expires in 2020",
   labels=[("org_unit", "development")]
 )'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer une table avec des colonnes REQUIRED

Le modificateur NOT NULL dans la liste de définitions de colonnes d'une instruction CREATE TABLE spécifie qu'une colonne ou un champ est créé en mode REQUIRED.

L'exemple suivant crée une table appelée newtable dans mydataset. Si le nom de la table existe dans l'ensemble de données, l'erreur suivante est renvoyée :

Already Exists: [PROJECT]:[DATASET].[TABLE]

Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.newtable`.

Le schéma de la table contient trois colonnes :

  • x : un entier REQUIRED
  • y : un type de données STRUCT REQUIRED contenant a (un tableau de chaînes), b (une valeur booléenne REQUIRED) et c (un nombre à virgule flottante NULLABLE)
  • z : une chaîne NULLABLE

Pour créer une table avec les colonnes REQUIRED à l'aide du LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE my_dataset.new_table (
       x INT64 NOT NULL,
       y STRUCT<
         a ARRAY<STRING>,
         b BOOL NOT NULL,
         c FLOAT64
       > NOT NULL,
       z STRING
     )
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE my_dataset.new_table (
       x INT64 NOT NULL,
       y STRUCT<
         a ARRAY<STRING>,
         b BOOL NOT NULL,
         c FLOAT64
       > NOT NULL,
       z STRING
     )
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
 CREATE TABLE my_dataset.new_table (
   x INT64 NOT NULL,
   y STRUCT<
     a ARRAY<STRING>,
     b BOOL NOT NULL,
     c FLOAT64
   > NOT NULL,
   z STRING
 )'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer une table partitionnée

L'exemple suivant crée une table partitionnée sur la base d'une colonne DATE, appelée newtable dans mydataset. Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.newtable`.

Le schéma de la table contient deux colonnes :

  • transaction_id : un entier
  • date_transaction : une date

La liste d'options de table spécifie :

  • le délai d'expiration de la partition : trois jours ;
  • la description : une table partitionnée par transaction_date.

Pour créer une table à l'aide du LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
     PARTITION BY transaction_date
     OPTIONS(
       partition_expiration_days=3,
       description="a table partitioned by transaction_date"
     )
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
     PARTITION BY transaction_date
     OPTIONS(
       partition_expiration_days=3,
       description="a table partitioned by transaction_date"
     )
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
PARTITION BY transaction_date
OPTIONS(
  partition_expiration_days=3,
  description="a table partitioned by transaction_date"
)'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer une table partitionnée à partir d'un résultat de requête

L'exemple suivant crée une table partitionnée sur la base d'une colonne DATE, appelée days_with_rain dans mydataset. Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.newtable`.

Le schéma de la table contient deux colonnes :

  • date : la DATE de collecte des données
  • station_name : le nom de la station météo sous forme de chaîne (STRING)
  • prcp : la quantité de précipitations en pouces, au format FLOAT64

La liste d'options de table spécifie :

  • le délai d'expiration de la partition : un an ;
  • la description : stations météorologiques avec précipitations, partitionnées par jour.

Pour créer une table à l'aide du LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE mydataset.days_with_rain
     PARTITION BY date
     OPTIONS (
       partition_expiration_days=365,
       description="weather stations with precipitation, partitioned by day"
     ) AS
     SELECT
       DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
       (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
        WHERE stations.usaf = stn) AS station_name,  -- Stations may have multiple names
       prcp
     FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
     WHERE prcp != 99.9  -- Filter unknown values
       AND prcp > 0      -- Filter stations/days with no precipitation
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE mydataset.days_with_rain
     PARTITION BY date
     OPTIONS (
       partition_expiration_days=365,
       description="weather stations with precipitation, partitioned by day"
     ) AS
     SELECT
       DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
       (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
        WHERE stations.usaf = stn) AS station_name,  -- Stations may have multiple names
       prcp
     FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
     WHERE prcp != 99.9  -- Filter unknown values
       AND prcp > 0      -- Filter stations/days with no precipitation
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.days_with_rain
PARTITION BY date
OPTIONS (
  partition_expiration_days=365,
  description="weather stations with precipitation, partitioned by day"
) AS
SELECT
  DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
  (SELECT ANY_VALUE(name) FROM \`bigquery-public-data.noaa_gsod.stations\` AS stations
   WHERE stations.usaf = stn) AS station_name,  -- Stations may have multiple names
  prcp
FROM \`bigquery-public-data.noaa_gsod.gsod2017\` AS weather
WHERE prcp != 99.9  -- Filter unknown values
  AND prcp > 0      -- Filter stations/days with no precipitation
'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer une table en cluster

Exemple 1

L'exemple suivant crée une table en cluster appelée myclusteredtable dans mydataset. La table est une table partitionnée suivant une colonne TIMESTAMP et mise en cluster par une colonne STRING appelée customer_id.

Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.myclusteredtable`.

Le schéma de la table contient trois colonnes :

  • timestamp : heure de la collecte des données sous forme d'horodatage (TIMESTAMP)
  • customer_id : ID client sous forme de chaîne (STRING)
  • transaction_amount : montant de la transaction au format numérique (NUMERIC)

La liste d'options de table spécifie :

  • le délai d'expiration de la partition : trois jours ;
  • la description ; "une table mise en cluster par customer_id".

Pour créer une table en cluster à l'aide d'une instruction LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD CREATE TABLE dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. Cliquez sur Afficher les options.

  5. (Facultatif) Dans le champ Zone de traitement, cliquez sur Non spécifiée et sélectionnez l'emplacement de vos données.

  6. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
(
  timestamp TIMESTAMP,
  customer_id STRING,
  transaction_amount NUMERIC
)
PARTITION BY DATE(timestamp)
CLUSTER BY customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Exemple 2

L'exemple suivant crée une table en cluster appelée myclusteredtable dans mydataset. La table est une table partitionnée par temps d'ingestion.

Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.myclusteredtable`.

Le schéma de la table contient trois colonnes :

  • timestamp : heure de la collecte des données sous forme d'horodatage (TIMESTAMP)
  • customer_id : ID client sous forme de chaîne (STRING)
  • transaction_amount : montant de la transaction au format numérique (NUMERIC)

La liste d'options de table spécifie :

  • le délai d'expiration de la partition : trois jours ;
  • la description ; "une table mise en cluster par customer_id".

Pour créer une table en cluster à l'aide d'une instruction LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(_PARTITIONTIME)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD CREATE TABLE dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(_PARTITIONTIME)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. Cliquez sur Afficher les options.

  5. (Facultatif) Dans le champ Zone de traitement, cliquez sur Non spécifiée et sélectionnez l'emplacement de vos données.

  6. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
(
  timestamp TIMESTAMP,
  customer_id STRING,
  transaction_amount NUMERIC
)
PARTITION BY DATE(_PARTITIONTIME)
CLUSTER BY
  customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer une table en cluster à partir d'un résultat de requête

L'exemple suivant crée une table en cluster appelée myclusteredtable dans mydataset en utilisant le résultat d'une requête. La table est une table partitionnée suivant une colonne TIMESTAMP.

Si aucun projet par défaut n'est configuré, ajoutez-le au nom de l'ensemble de données au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.myclusteredtable`.

Le schéma de la table contient trois colonnes :

  • timestamp : heure de la collecte des données sous forme d'horodatage (TIMESTAMP)
  • customer_id : ID client sous forme de chaîne (STRING)
  • transaction_amount : montant de la transaction au format numérique (NUMERIC)

La liste d'options de table spécifie :

  • le délai d'expiration de la partition : trois jours ;
  • la description ; "une table mise en cluster par customer_id".

Pour créer une table en cluster à l'aide d'une instruction LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )
     AS SELECT * FROM mydataset.myothertable

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD CREATE TABLE dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )
     AS SELECT * FROM mydataset.myothertable

  4. Cliquez sur Afficher les options.

  5. (Facultatif) Dans le champ Zone de traitement, cliquez sur Non spécifiée et sélectionnez l'emplacement de vos données.

  6. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
  (
    timestamp TIMESTAMP,
    customer_id STRING,
    transaction_amount NUMERIC
  )
PARTITION BY DATE(timestamp)
CLUSTER BY
  customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)
AS SELECT * FROM mydataset.myothertable'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Instruction CREATE VIEW

Pour créer une vue dans BigQuery, utilisez l'instruction LDD CREATE VIEW.

Syntaxe

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW}
view_name
[OPTIONS(view_option_list)]
AS query_expression

Où :

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW} est l’une des instructions suivantes :

  • CREATE VIEW : crée une vue.
  • CREATE VIEW IF NOT EXISTS : crée une vue uniquement si celle-ci n'existe pas déjà dans l'ensemble de données spécifié.
  • CREATE OR REPLACE VIEW : crée une vue et remplace une vue existante du même nom dans l'ensemble de données spécifié.

view_name est le nom de la vue que vous créez. Le nom de la vue doit être unique pour chaque ensemble de données. Le nom de la vue peut :

  • contenir jusqu'à 1 024 caractères ;
  • contenir des lettres (majuscules ou minuscules), des chiffres et des traits de soulignement.

view_option_list vous permet de spécifier des options supplémentaires de création de vues telles qu'une étiquette et une date/heure d'expiration.

Les instructions CREATE VIEW doivent respecter les règles suivantes :

  • Chaque requête ne peut contenir qu'une seule instruction CREATE.

query_expression est l'expression de requête SQL standard utilisée pour définir la vue.

view_option_list

La liste d'options vous permet de définir des options de vue, telles qu'une étiquette et une date/heure d'expiration. Vous pouvez inclure plusieurs options dans une liste d'éléments séparés par des virgules.

Spécifiez les listes d'options de vue au format suivant :

NAME=VALUE, ...

NAME et VALUE doivent être utilisées selon l’une des combinaisons suivantes :

NAME VALUE Description
expiration_timestamp TIMESTAMP

Exemple : expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC"

Cette propriété est équivalente à la propriété de ressource de table expirationTime.

friendly_name

STRING

Exemple : friendly_name="my_view"

Cette propriété est équivalente à la propriété de ressource de table friendlyName.

description

STRING

Exemple : description="a view that expires in 2020"

Cette propriété est équivalente à la propriété de ressource de table description.

labels

ARRAY<STRUCT<STRING, STRING>>

Exemple : labels=[("org_unit", "development")]

Cette propriété est équivalente à la propriété de ressource de table labels.

VALUE est une expression constante ne contenant que des littéraux, des paramètres de requête et des fonctions scalaires. Si l'expression constante renvoie la valeur null, l'option NAME correspondante est ignorée.

L'expression constante ne peut pas contenir les éléments suivants :

  • Une référence à une table
  • Des sous-requêtes ou des instructions SQL telles que SELECT, CREATE et UPDATE
  • Des fonctions personnalisées, des fonctions d'agrégation ou des fonctions d'analyse
  • Les fonctions scalaires suivantes :
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

Exemples

Créer une vue

L'instruction LDD CREATE VIEW crée une vue avec les options spécifiées. Si le nom de la vue existe déjà dans l'ensemble de données, l'erreur suivante est renvoyée :

Already Exists: [PROJECT]:[DATASET].[VIEW]

L'exemple suivant crée une vue appelée newview dans mydataset. Lorsque vous créez une vue avec une instruction LDD, vous devez spécifier le projet, l'ensemble de données et la vue au format suivant : `[PROJECT].[DATASET].[VIEW]` (accents graves inclus) ; par exemple, `myproject.mydataset.newview`.

La vue est définie à l'aide de la requête SQL standard suivante :

SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable

La liste d'options de vue spécifie :

  • les date/heure d'expiration : 48 heures à partir de la création de la vue ;
  • le nom descriptif : newview ;
  • la description : une vue qui expire dans deux jours ;
  • l'étiquette : org_unit = development.

Pour créer une vue à l'aide du LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE TABLE `myproject.mydataset.newview`
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

JAVA

Appelez la méthode BigQuery.create() pour lancer une tâche de requête. Appelez la méthode Job.waitFor() pour attendre la fin de la requête LDD.

// import com.google.cloud.bigquery.*;
// String projectId = "my-project";
// String datasetId = "my_dataset";
// String tableId = "new_view";
// BigQuery bigquery = BigQueryOptions.getDefaultInstance().toBuilder()
//     .setProjectId(projectId)
//     .build().getService();

String sql =
    String.format(
        "CREATE VIEW `%s.%s.%s`\n"
            + "OPTIONS(\n"
            + "  expiration_timestamp=TIMESTAMP_ADD(\n"
            + "    CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),\n"
            + "  friendly_name=\"new_view\",\n"
            + "  description=\"a view that expires in 2 days\",\n"
            + "  labels=[(\"org_unit\", \"development\")]\n"
            + ")\n"
            + "AS SELECT name, state, year, number\n"
            + "  FROM `bigquery-public-data.usa_names.usa_1910_current`\n"
            + "  WHERE state LIKE 'W%%';\n",
        projectId, datasetId, tableId);

// Make an API request to run the query job.
Job job = bigquery.create(JobInfo.of(QueryJobConfiguration.newBuilder(sql).build()));

// Wait for the query to finish.
job = job.waitFor();

QueryJobConfiguration jobConfig = (QueryJobConfiguration) job.getConfiguration();
System.out.printf(
    "Created new view \"%s.%s.%s\".\n",
    jobConfig.getDestinationTable().getProject(),
    jobConfig.getDestinationTable().getDataset(),
    jobConfig.getDestinationTable().getTable());

PYTHON

Appelez la méthode Client.query() pour démarrer une tâche de requête. Appelez la méthode QueryJob.result() pour attendre la fin de la requête LDD.

# from google.cloud import bigquery
# project = 'my-project'
# dataset_id = 'my_dataset'
# table_id = 'new_view'
# client = bigquery.Client(project=project)

sql = """
CREATE VIEW `{}.{}.{}`
OPTIONS(
    expiration_timestamp=TIMESTAMP_ADD(
        CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
    friendly_name="new_view",
    description="a view that expires in 2 days",
    labels=[("org_unit", "development")]
)
AS SELECT name, state, year, number
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE state LIKE 'W%'
""".format(
    project, dataset_id, table_id
)

job = client.query(sql)  # API request.
job.result()  # Waits for the query to finish.

print(
    'Created new view "{}.{}.{}".'.format(
        job.destination.project,
        job.destination.dataset_id,
        job.destination.table_id,
    )
)

Créer une vue seulement si la vue n'existe pas déjà

L'instruction LDD CREATE VIEW IF NOT EXISTS crée une vue avec les options spécifiées seulement si ce nom de vue n'existe pas déjà dans l'ensemble de données. Si ce nom de vue existe déjà dans l'ensemble de données, aucune erreur n'est renvoyée et aucune mesure n'est prise.

L'exemple suivant crée une vue appelée newview dans mydataset seulement si aucune vue du nom de newview n'existe déjà dans mydataset. Lorsque vous créez une vue avec une instruction LDD, vous devez spécifier le projet, l'ensemble de données et la vue au format suivant : `[PROJECT].[DATASET].[VIEW]` (accents graves inclus) ; par exemple, `myproject.mydataset.newview`.

La vue est définie à l'aide de la requête SQL standard suivante :

SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable

La liste d'options de vue spécifie :

  • les date/heure d'expiration : 48 heures à partir de la création de la vue ;
  • le nom descriptif : newview ;
  • la description : une vue qui expire dans deux jours ;
  • l'étiquette : org_unit = development.

Pour créer une vue à l'aide du LDD seulement si ce nom de vue n'existe pas déjà dans l'ensemble de données :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Créer ou remplacer une vue

L'instruction LDD CREATE OR REPLACE VIEW crée une vue avec les options spécifiées. Si le nom de la vue existe déjà dans l'ensemble de données, la vue est remplacée à l'aide de l'expression de requête spécifiée.

L'exemple suivant crée une vue appelée newview dans mydataset. Si newview existe déjà dans mydataset, elle est remplacée par la nouvelle vue. Lorsque vous créez une vue avec une instruction LDD, vous devez spécifier le projet, l'ensemble de données et la vue au format suivant : `[PROJECT].[DATASET].[VIEW]` (accents graves inclus) ; par exemple, `myproject.mydataset.newview`.

La vue est définie à l'aide de la requête SQL standard suivante :

    SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`

La liste d'options de vue spécifie :

  • les date/heure d'expiration : 48 heures à partir de la création de la vue ;
  • le nom descriptif : newview ;
  • la description : une vue qui expire dans deux jours ;
  • l'étiquette : org_unit = development.

Pour créer une vue à l'aide du LDD et remplacer une vue du même nom :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     CREATE OR REPLACE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     CREATE OR REPLACE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête a été exécutée, la table apparaît dans le volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
CREATE OR REPLACE VIEW `myproject.mydataset.newview`
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Instruction CREATE FUNCTION

BigQuery est compatible avec les fonctions définies par l'utilisateur. Une fonction définie par l'utilisateur vous permet de créer une fonction à l'aide d'une expression SQL ou du langage JavaScript. Ces fonctions acceptent des colonnes d'entrée et effectuent des actions, puis renvoient le résultat de ces dernières sous la forme d'une valeur.

Consultez la section Fonctions définies par l'utilisateur en ancien SQL pour en savoir plus sur celles-ci.

Les fonctions définies par l'utilisateur peuvent être temporaires ou persistantes. Une fonction définie par l'utilisateur de type temporaire ne peut être utilisée que dans le cadre de la requête ou de la session en ligne de commande en cours.

Syntaxe générale des fonctions définies par l'utilisateur

Dans BigQuery, les fonctions définies par l'utilisateur exploitent la syntaxe générale suivante :

CREATE { [TEMPORARY | TEMP] FUNCTION | OR REPLACE [TEMPORARY | TEMP] FUNCTION |
    [TEMPORARY | TEMP] FUNCTION IF NOT EXISTS }
    function_name ([named_parameter[, ...]])
  [RETURNS data_type]
  { [LANGUAGE language AS """body"""] | [AS (function_definition)] }
[OPTIONS (library = library_array)];

named_parameter:
  param_name param_type

Cette syntaxe comprend les composants suivants :

  • CREATE { [TEMPORARY | TEMP] FUNCTION | OR REPLACE [TEMPORARY | TEMP] FUNCTION | [TEMPORARY | TEMP] FUNCTION IF NOT EXISTS }. Crée une fonction. Cette fonction peut contenir plusieurs paramètres nommés (named_parameter) ou aucun. Pour rendre la fonction temporaire, utilisez le mot clé TEMP ou TEMPORARY. Pour remplacer une fonction existante portant le même nom, utilisez le mot clé OR REPLACE. Pour traiter la requête comme ayant abouti et n'effectuer aucune action s'il existe déjà une fonction portant le même nom, utilisez la clause IF NOT EXISTS.
  • named_parameter : consiste en une paire param_name/param_type séparée par une virgule. La valeur de param_type est un type de données BigQuery. Dans une fonction SQL définie par l'utilisateur, la valeur de param_type peut également être ANY TYPE.
  • [RETURNS data_type] : spécifie le type de données renvoyé par la fonction. Si la fonction est définie en SQL, la clause RETURNS est facultative et BigQuery infère le type de résultat à partir du corps de la fonction SQL. Si la fonction est définie en JavaScript, la clause RETURNS est obligatoire. Consultez la section Types de données compatibles avec les fonctions définies par l'utilisateur pour en savoir plus sur les valeurs autorisées pour data_type.
  • [LANGUAGE language AS """body"""] : spécifie le langage JavaScript pour la fonction et le code qui la définit.
  • AS (function_definition) : spécifie le code SQL qui définit la fonction. function_definition est une expression SQL.
  • [OPTIONS (library = library_array)] : pour une fonction définie par l'utilisateur écrite en JavaScript, spécifie un tableau de bibliothèques JavaScript à inclure dans la définition de la fonction.

Structure des fonctions SQL définies par l'utilisateur

Vous pouvez créer des fonctions SQL définies par l'utilisateur à l'aide de la structure suivante :

CREATE { [TEMPORARY | TEMP] FUNCTION | OR REPLACE [TEMPORARY | TEMP] FUNCTION |
    [TEMPORARY | TEMP] FUNCTION IF NOT EXISTS } function_name ([named_parameter[, ...]])
  [RETURNS data_type]
  AS (sql_expression)

named_parameter:
  param_name param_type

Paramètres modélisés des fonctions SQL définies par l'utilisateur

Un paramètre modélisé peut correspondre à plus d'un type d'argument au moment de l'appel de la fonction. Si une signature de fonction inclut un paramètre modélisé, BigQuery autorise les appels de fonction à transmettre l'un des types d'argument à la fonction.

Les signatures de fonction SQL définie par l'utilisateur peuvent contenir la valeur param_type modélisée suivante :

  • ANY TYPE : la fonction accepte une entrée de n'importe quel type pour cet argument. Si plusieurs paramètres possèdent le type ANY TYPE, BigQuery n'applique aucune relation entre ces arguments au moment de la création de la fonction. Toutefois, si vous transmettez des arguments de fonction possédant des types incompatibles avec la définition de la fonction, une erreur est générée lors de l'appel.

Exemples de fonctions SQL définies par l'utilisateur

L'exemple suivant permet de créer une fonction définie par l'utilisateur.

CREATE FUNCTION mydataset.multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
LANGUAGE js AS """
  return x*y;
""";

WITH numbers AS
  (SELECT 1 AS x, 5 as y
  UNION ALL
  SELECT 2 AS x, 10 as y
  UNION ALL
  SELECT 3 as x, 15 as y)
SELECT x, y, mydataset.multiplyInputs(x, y) as product
FROM numbers;

L'exemple ci-dessus produit le résultat suivant :

+-----+-----+--------------+
| x   | y   | product      |
+-----+-----+--------------+
| 1   | 5   | 5            |
| 2   | 10  | 20           |
| 3   | 15  | 45           |
+-----+-----+--------------+

Vous pouvez rendre cette fonction temporaire à l'aide des mots clés TEMP ou TEMPORARY.

L'exemple suivant montre une fonction définie par l'utilisateur qui emploie une fonction SQL :

CREATE TEMP FUNCTION addFourAndDivide(x INT64, y INT64) AS ((x + 4) / y);

WITH numbers AS
  (SELECT 1 as val
  UNION ALL
  SELECT 3 as val
  UNION ALL
  SELECT 4 as val
  UNION ALL
  SELECT 5 as val)
SELECT val, addFourAndDivide(val, 2) AS result
FROM numbers;

L'exemple ci-dessus produit le résultat suivant :

+-----+--------+
| val | result |
+-----+--------+
| 1   | 2.5    |
| 3   | 3.5    |
| 4   | 4      |
| 5   | 4.5    |
+-----+--------+

L'exemple suivant décrit une fonction SQL définie par l'utilisateur qui exploite un paramètre modélisé. La fonction obtenue accepte des arguments de divers types.

CREATE TEMP FUNCTION addFourAndDivideAny(x ANY TYPE, y ANY TYPE) AS (
  (x + 4) / y
);
SELECT addFourAndDivideAny(3, 4) AS integer_output,
       addFourAndDivideAny(1.59, 3.14) AS floating_point_output;

L'exemple ci-dessus renvoie le résultat suivant :

+----------------+-----------------------+
| integer_output | floating_point_output |
+----------------+-----------------------+
| 1.75           | 1.7802547770700636    |
+----------------+-----------------------+

L'exemple suivant montre une fonction SQL définie par l'utilisateur qui emploie un paramètre modélisé pour renvoyer le dernier élément d'un tableau de n'importe quel type.

CREATE TEMP FUNCTION lastArrayElement(arr ANY TYPE) AS (
  arr[ORDINAL(ARRAY_LENGTH(arr))]
);
SELECT
  names[OFFSET(0)] AS first_name,
  lastArrayElement(names) AS last_name
FROM (
  SELECT ['Fred', 'McFeely', 'Rogers'] AS names UNION ALL
  SELECT ['Marie', 'Skłodowska', 'Curie']
);

L'exemple ci-dessus renvoie le résultat suivant :

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Fred       | Rogers    |
| Marie      | Curie     |
+------------+-----------+

Structure des fonctions JavaScript définies par l'utilisateur

Vous pouvez créer des fonctions JavaScript définies par l'utilisateur à l'aide de la structure suivante :

CREATE { [TEMPORARY | TEMP] FUNCTION | OR REPLACE [TEMPORARY | TEMP] FUNCTION |
    [TEMPORARY | TEMP] FUNCTION IF NOT EXISTS } function_name ([named_parameter[, ...]])
  [RETURNS data_type]
  LANGUAGE js
  AS javascript_code

Exemples de fonctions JavaScript définies par l'utilisateur

CREATE TEMP FUNCTION multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS """
  return x*y;
""";

WITH numbers AS
  (SELECT 1 AS x, 5 as y
  UNION ALL
  SELECT 2 AS x, 10 as y
  UNION ALL
  SELECT 3 as x, 15 as y)
SELECT x, y, multiplyInputs(x, y) as product
FROM numbers;

L'exemple ci-dessus renvoie le résultat suivant :

+-----+-----+--------------+
| x   | y   | product      |
+-----+-----+--------------+
| 1   | 5   | 5            |
| 2   | 10  | 20           |
| 3   | 15  | 45           |
+-----+-----+--------------+

Vous pouvez créer plusieurs fonctions définies par l'utilisateur avant une requête. Exemple :

CREATE TEMP FUNCTION multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS """
  return x*y;
""";

CREATE TEMP FUNCTION divideByTwo(x FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS """
  return x / 2;
""";

WITH numbers AS
  (SELECT 1 AS x, 5 as y
  UNION ALL
  SELECT 2 AS x, 10 as y
  UNION ALL
  SELECT 3 as x, 15 as y)
SELECT x,
  y,
  multiplyInputs(x, y) as product,
  divideByTwo(x) as half_x,
  divideByTwo(y) as half_y
FROM numbers;

L'exemple ci-dessus renvoie le résultat suivant :

+-----+-----+--------------+--------+--------+
| x   | y   | product      | half_x | half_y |
+-----+-----+--------------+--------+--------+
| 1   | 5   | 5            | 0.5    | 2.5    |
| 2   | 10  | 20           | 1      | 5      |
| 3   | 15  | 45           | 1.5    | 7.5    |
+-----+-----+--------------+--------+--------+

Vous pouvez transmettre le résultat d'une fonction définie par l'utilisateur en tant qu'entrée d'une autre fonction définie par l'utilisateur. Exemple :

CREATE TEMP FUNCTION multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS """
  return x*y;
""";

CREATE TEMP FUNCTION divideByTwo(x FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS """
  return x/2;
""";

WITH numbers AS
  (SELECT 1 AS x, 5 as y
  UNION ALL
  SELECT 2 AS x, 10 as y
  UNION ALL
  SELECT 3 as x, 15 as y)
SELECT x,
  y,
  multiplyInputs(divideByTwo(x), divideByTwo(y)) as half_product
FROM numbers;

L'exemple ci-dessus renvoie le résultat suivant :

+-----+-----+--------------+
| x   | y   | half_product |
+-----+-----+--------------+
| 1   | 5   | 1.25         |
| 2   | 10  | 5            |
| 3   | 15  | 11.25        |
+-----+-----+--------------+

L'exemple suivant additionne les valeurs de tous les champs nommés "foo" dans la chaîne JSON fournie.

CREATE TEMP FUNCTION SumFieldsNamedFoo(json_row STRING)
  RETURNS FLOAT64
  LANGUAGE js
  AS """
  function SumFoo(obj) {
    var sum = 0;
    for (var field in obj) {
      if (obj.hasOwnProperty(field) &amp;&amp; obj[field] != null) {
        if (typeof obj[field] == "object") {
          sum += SumFoo(obj[field]);
        } else if (field == "foo") {
          sum += obj[field];
        }
      }
    }
    return sum;
  }
  var row = JSON.parse(json_row);
  return SumFoo(row);
  """;

WITH Input AS (
  SELECT STRUCT(1 AS foo, 2 AS bar, STRUCT('foo' AS x, 3.14 AS foo) AS baz) AS s, 10 AS foo UNION ALL
  SELECT NULL, 4 AS foo UNION ALL
  SELECT STRUCT(NULL, 2 AS bar, STRUCT('fizz' AS x, 1.59 AS foo) AS baz) AS s, NULL AS foo
)
SELECT
  TO_JSON_STRING(t) AS json_row,
  SumFieldsNamedFoo(TO_JSON_STRING(t)) AS foo_sum
FROM Input AS t;

L'exemple ci-dessus renvoie le résultat suivant :

+---------------------------------------------------------------------+---------+
| json_row                                                            | foo_sum |
+---------------------------------------------------------------------+---------+
| {"s":{"foo":1,"bar":2,"baz":{"x":"foo","foo":3.14}},"foo":10}       | 14.14   |
| {"s":null,"foo":4}                                                  | 4       |
| {"s":{"foo":null,"bar":2,"baz":{"x":"fizz","foo":1.59}},"foo":null} | 1.59    |
+---------------------------------------------------------------------+---------+

Types de données compatibles avec les fonctions JavaScript définies par l'utilisateur

BigQuery accepte les types de données suivants pour les fonctions JavaScript définies par l'utilisateur :

  • ARRAY
  • BOOL
  • BYTES
  • DATE
  • FLOAT64
  • NUMERIC
  • STRING
  • STRUCT
  • TIMESTAMP

Encodage des types SQL en JavaScript

Certains types SQL sont directement mappés à des types JavaScript, tandis que d'autres non.

Comme JavaScript n'est pas compatible avec les types entiers de 64 bits, INT64 n'est pas accepté en tant que type d'entrée pour les fonctions JavaScript définies par l'utilisateur. Utilisez plutôt FLOAT64 pour représenter les valeurs entières sous forme de nombre, ou STRING pour les représenter sous forme de chaîne.

BigQuery accepte toutefois INT64 comme type renvoyé dans les fonctions JavaScript définies par l'utilisateur. Dans ce cas, le corps de la fonction JavaScript peut renvoyer un type NUMBER ou STRING JavaScript. BigQuery convertit ensuite l'un de ces types au format INT64.

BigQuery représente les types de la manière suivante :

Type de données BigQuery Type de données JavaScript
ARRAY ARRAY
BOOL BOOLEAN
BYTES STRING avec un encodage en base64
FLOAT64 NUMBER
NUMERIC Si une valeur NUMERIC peut être exactement représentée comme une valeur à virgule flottante au format IEEE 754 et ne comporte aucune fraction, elle est encodée au format NUMBER. Ces valeurs sont comprises dans la plage [-253, 253]. Dans le cas contraire, la valeur est encodée au format STRING.
STRING STRING
STRUCT OBJECT dans lequel chaque champ STRUCT est un champ nommé
TIMESTAMP DATE avec un champ de microseconde contenant la fraction microsecond de l'horodatage
DATE DATE

Règles relatives aux guillemets

Vous devez placer le code JavaScript entre guillemets. Pour les extraits de code simples ne comprenant qu'une ligne, vous pouvez utiliser une chaîne standard entre guillemets :

CREATE TEMP FUNCTION plusOne(x FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS "return x+1;";

SELECT val, plusOne(val) AS result
FROM UNNEST([1, 2, 3, 4, 5]) AS val;

L'exemple ci-dessus renvoie le résultat suivant :

+-----------+-----------+
| val       | result    |
+-----------+-----------+
| 1         | 2         |
| 2         | 3         |
| 3         | 4         |
| 4         | 5         |
| 5         | 6         |
+-----------+-----------+

Dans le cas où l'extrait contient des guillemets ou se compose de plusieurs lignes, utilisez des blocs entre guillemets triples :

CREATE TEMP FUNCTION customGreeting(a STRING)
RETURNS STRING
LANGUAGE js AS """
  var d = new Date();
  if (d.getHours() &lt; 12) {
    return 'Good Morning, ' + a + '!';
  } else {
    return 'Good Evening, ' + a + '!';
  }
  """;
SELECT customGreeting(names) as everyone
FROM UNNEST(["Hannah", "Max", "Jakob"]) AS names;

L'exemple ci-dessus produit le résultat suivant :

+-----------------------+
| everyone              |
+-----------------------+
| Good Morning, Hannah! |
| Good Morning, Max!    |
| Good Morning, Jakob!  |
+-----------------------+

Inclure des bibliothèques JavaScript

Vous pouvez étendre vos fonctions JavaScript définies par l'utilisateur à l'aide de la section OPTIONS. Cette section vous permet de spécifier des bibliothèques de code JavaScript pour la fonction définie par l'utilisateur.

CREATE TEMP FUNCTION myFunc(a FLOAT64, b STRING)
  RETURNS STRING
  LANGUAGE js AS
  """
      // Assumes 'doInterestingStuff' is defined in one of the library files.
      return doInterestingStuff(a, b);
  """
OPTIONS (
  library="gs://my-bucket/path/to/lib1.js",
  library=["gs://my-bucket/path/to/lib2.js", "gs://my-bucket/path/to/lib3.js"]
);

SELECT myFunc(3.14, 'foo');</code></pre>

Dans l'exemple précédent, le code des bibliothèques lib1.js, lib2.js et lib3.js est accessible par le code présent dans la section javascript_code de la fonction définie par l'utilisateur. Notez que vous pouvez spécifier des fichiers de bibliothèque à l'aide d'une syntaxe à élément unique ou à tableau.

Fonctions définies par l'utilisateur et interface utilisateur Web

Vous pouvez utiliser l'UI Web de BigQuery pour exécuter des requêtes à l'aide d'une ou de plusieurs fonctions définies par l'utilisateur.

Exécuter une requête avec une fonction définie par l'utilisateur

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction de fonction définie par l'utilisateur dans la zone de texte de l'éditeur de requête. Exemple :

      CREATE TEMPORARY FUNCTION timesTwo(x FLOAT64)
      RETURNS FLOAT64
        LANGUAGE js AS """
        return x*2;
      """;
    
  4. Sous la déclaration de fonction définie par l'utilisateur, saisissez votre requête. Exemple :

      SELECT timesTwo(numbers) as doubles
      FROM UNNEST([1, 2, 3, 4, 5]) AS numbers;
    
  5. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  6. Cliquez sur Exécuter.

Fonctions définies par l'utilisateur et outil de ligne de commande bq

Vous pouvez utiliser l'outil de ligne de commande bq du SDK Google Cloud pour exécuter une requête contenant une ou plusieurs fonctions définies par l'utilisateur.

Utilisez la syntaxe suivante pour exécuter une requête avec une fonction définie par l'utilisateur :

bq query <statement_with_udf_and_query>

Bonnes pratiques relatives aux fonctions JavaScript définies par l'utilisateur

Préfiltrer votre entrée

Si votre entrée peut facilement être filtrée avant d'être transmise à une fonction JavaScript définie par l'utilisateur, votre requête sera probablement plus rapide et plus économique.

Éviter les états modifiables persistants

Veillez à ne pas stocker les états modifiables sur les appels de fonction JavaScript définie par l'utilisateur ni à y accéder.

Utiliser efficacement la mémoire

L'environnement de traitement JavaScript dispose d'une quantité de mémoire disponible limitée par requête. Les requêtes de fonction JavaScript définies par l'utilisateur qui accumulent trop d'états locaux peuvent échouer en raison de l'épuisement de la mémoire.

Limites

Les limites suivantes s'appliquent aux fonctions temporaires et persistantes définies par l'utilisateur :

  • Les objets DOM Window, Document et Node, ainsi que les fonctions qui les utilisent, ne sont pas compatibles.
  • Les fonctions JavaScript basées sur du code natif ne sont pas compatibles.
  • En raison de leur nature non déterministe, les requêtes appelant des fonctions définies par l'utilisateur ne peuvent pas utiliser des résultats mis en cache.
  • Vous ne pouvez pas référencer une table dans une fonction définie par l'utilisateur.
  • Les vues ne peuvent pas appeler de fonctions définies par l'utilisateur.
  • Quantité de données générées par votre fichier UDF JavaScript lors du traitement d'une seule ligne : environ 5 Mo ou moins.
  • Limite de débit simultané pour les requêtes en ancien SQL contenant des fonctions définies par l'utilisateur : 6 requêtes simultanées.
  • La limite de débit simultané pour les requêtes en ancien SQL contenant des fonctions définies par l'utilisateur inclut des requêtes interactives et des requêtes par lots. Les requêtes interactives contenant des fonctions définies par l'utilisateur sont également comptabilisées dans la limite de débit simultané pour les requêtes interactives. Cette limite ne s'applique pas aux requêtes en SQL standard.

  • Nombre maximal de ressources de fonctions JavaScript définies par l'utilisateur dans une tâche de requête, telles que des blobs de code intégrés ou des fichiers externes : 50.
  • Taille maximale de chaque blob de code intégré : 32 Ko.
  • Taille maximale de chaque ressource de code externe : 1 Mo.

Les limites suivantes s'appliquent aux fonctions persistantes définies par l'utilisateur.
  • Longueur maximale d'un nom de fonction : 256 caractères.
  • Nombre maximal d'arguments : 256.
  • Longueur maximale d'un nom d'argument : 128 caractères.
  • Profondeur maximale d'une chaîne de référence de fonction définie par l'utilisateur : 16.
  • Profondeur maximale d'argument ou d'une sortie de type STRUCT : 15.
  • Nombre maximal de champs dans un argument ou une sortie de type STRUCT par fonction définie par l'utilisateur : 1 024.
  • Nombre maximal de fonctions uniques définies par l'utilisateur plus références de table par requête : 1 000. Après développement complet, chaque fonction définie par l'utilisateur peut référencer jusqu'à 1 000 tables et fonctions définies par l'utilisateur uniques combinées.
  • Nombre maximal de bibliothèques JavaScript dans une instruction CREATE FUNCTION : 50.
  • Longueur maximale des chemins d'accès aux bibliothèques JavaScript incluses : 5 000 caractères.
  • Taux maximal de mise à jour par fonction définie par l'utilisateur : 5 par intervalle de 10 secondes. Une fois la fonction créée, vous pouvez la mettre à jour jusqu'à 5 fois par intervalle de 10 secondes.
  • Chaque blob de code en ligne est limité à une taille maximale de 32 Ko.
  • La taille maximale de chaque ressource de code externe est de 1 Mo.
  • Les opérations bit à bit en JavaScript ne traitent que les 32 bits les plus significatifs.
  • Chaque projet ne peut contenir qu’une seule fonction persistante définie par l'utilisateur portant le nom function_name. Cependant, vous pouvez créer une fonction définie par l'utilisateur dont le nom function_name est identique au nom d'une table dans le projet en cours.
  • Lorsque vous référencez une fonction persistante définie par l'utilisateur depuis une autre fonction persistante définie par l'utilisateur ou depuis une vue logique, vous devez qualifier la référence à l'aide du nom du projet. Exemple :
    CREATE FUNCTION mydataset.referringFunction() AS (myproject.mydataset.referencedFunction());

Les limites suivantes s'appliquent aux fonctions temporaires définies par l'utilisateur.

  • Lorsque vous créez une fonction temporaire définie par l'utilisateur, function_name ne peut pas contenir de caractères "point".
  • Les requêtes qui font référence à des fonctions temporaires définies par l'utilisateur ne peuvent pas être enregistrées en tant que vues.

Instruction ALTER TABLE SET OPTIONS

Pour définir les options d'une table dans BigQuery, exécutez l’instruction LDD ALTER TABLE SET OPTIONS.

Syntaxe

{ALTER TABLE | ALTER TABLE IF EXISTS}
table_name
SET OPTIONS(table_set_options_list)

Où :

{ALTER TABLE | ALTER TABLE IF EXISTS} est l’une des instructions suivantes :

  • ALTER TABLE : modifie les options d'une table existante.
  • ALTER TABLE IF EXISTS : modifie les options d'une table seulement si elle existe déjà.

table_name est le nom de la table que vous modifiez.

table_set_options_list

La liste d'options vous permet de définir des options de table, telles qu'une étiquette et une date/heure d'expiration. Vous pouvez inclure plusieurs options dans une liste d'éléments séparés par des virgules.

Spécifiez les listes d'options de table au format suivant :

NAME=VALUE, ...

NAME et VALUE doivent être utilisées selon l’une des combinaisons suivantes :

NAME VALUE Description
expiration_timestamp TIMESTAMP

Exemple : expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC"

Cette propriété est équivalente à la propriété de ressource de table expirationTime.

partition_expiration_days

FLOAT64

Exemple : partition_expiration_days=7

Cette propriété est équivalente à la propriété de ressource de table timePartitioning.expirationMs mais utilise des jours au lieu de millisecondes. Un jour équivaut à 86 400 000 millisecondes, soit 24 heures.

Cette propriété ne peut être définie que si la table est partitionnée.

require_partition_filter

BOOL

Exemple : require_partition_filter=true

Cette propriété est équivalente à la propriété de ressource de table timePartitioning.requirePartitionFilter.

Cette propriété ne peut être définie que si la table est partitionnée.

kms_key_name

STRING

Exemple : kms_key_name="projects/project_id/locations/location/keyRings/keyring/cryptoKeys/key"

Cette propriété est équivalente à la propriété de ressource de table encryptionConfiguration.kmsKeyName.

En savoir plus sur la protection des données avec des clés Cloud KMS.

friendly_name

STRING

Exemple : friendly_name="my_table"

Cette propriété est équivalente à la propriété de ressource de table friendlyName.

description

STRING

Exemple : description="a table that expires in 2020"

Cette propriété est équivalente à la propriété de ressource de table description.

labels

ARRAY<STRUCT<STRING, STRING>>

Exemple : labels=[("org_unit", "development")]

Cette propriété est équivalente à la propriété de ressource de table labels.

VALUE est une expression constante ne contenant que des littéraux, des paramètres de requête et des fonctions scalaires. Si l'expression constante renvoie la valeur null, l'option NAME correspondante est ignorée.

L'expression constante ne peut pas contenir les éléments suivants :

  • Une référence à une table
  • Des sous-requêtes ou des instructions SQL telles que SELECT, CREATE et UPDATE
  • Des fonctions personnalisées, des fonctions d'agrégation ou des fonctions d'analyse
  • Les fonctions scalaires suivantes :
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

Lorsque l'option VALUE est définie, la valeur existante de cette option de table est remplacée, le cas échéant. Si l'option VALUE est définie sur NULL, la valeur de la table qui correspondait à cette option est effacée.

Exemples

Définir l'horodatage d'expiration et la description d'une table

L'exemple suivant définit d'une part l'horodatage d'expiration d'une table à sept jours à compter de l'heure d'exécution de l'instruction ALTER TABLE, et d'autre part la description de la table :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="Table that expires seven days from now"
     )
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="Table that expires seven days from now"
     )
     

  4. Cliquez sur Exécuter la requête. Une fois la requête terminée, la propriété est définie dans la table.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
ALTER TABLE mydataset.mytable
SET OPTIONS (
  expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
  description="Table that expires seven days from now"
)'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Définir l'attribut de filtrage de partition requis sur une table partitionnée

L'exemple suivant définit l'attribut timePartitioning.requirePartitionFilter sur une table partitionnée. Lorsque cet attribut est défini sur "true", les requêtes faisant référence à cette table doivent utiliser un filtre sur la colonne de partitionnement, faute de quoi BigQuery renverra une erreur. En définissant cette option sur "true", vous pouvez éviter d'interroger par erreur davantage de données que vous ne l'aviez prévu :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     ALTER TABLE mydataset.mypartitionedtable
     SET OPTIONS (require_partition_filter=true)
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     ALTER TABLE mydataset.mypartitionedtable
     SET OPTIONS (require_partition_filter=true)
     

  4. Cliquez sur Exécuter la requête. Une fois la requête terminée, la propriété est définie dans la table.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
ALTER TABLE mydataset.mypartitionedtable
SET OPTIONS (require_partition_filter=true)'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Effacer l'horodatage d'expiration sur une table

L'exemple suivant efface l'horodatage d'expiration sur une table afin qu'elle n'expire jamais :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (expiration_timestamp=NULL)
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (expiration_timestamp=NULL)
     

  4. Cliquez sur Exécuter la requête. Lorsque la requête est terminée, la table n'a plus de délai d'expiration.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
ALTER TABLE mydataset.mytable
SET OPTIONS (expiration_timestamp=NULL)'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Instruction ALTER VIEW SET OPTIONS

Pour définir les options d'une vue dans BigQuery, exécutez l’instruction LDD ALTER VIEW SET OPTIONS.

Syntaxe

{ALTER VIEW | ALTER VIEW IF EXISTS}
view_name
SET OPTIONS(view_set_options_list)

Où :

{ALTER VIEW | ALTER VIEW IF EXISTS} est l’une des instructions suivantes :

  • ALTER VIEW : modifie les options d'une vue existante.
  • ALTER VIEW IF EXISTS : modifie les options d'une vue seulement si elle existe déjà.

view_name est le nom de la vue que vous modifiez.

view_set_options_list

La liste d'options vous permet de définir des options de vue, telles qu'une étiquette et une date/heure d'expiration. Vous pouvez inclure plusieurs options dans une liste d'éléments séparés par des virgules.

Spécifiez les listes d'options de vue au format suivant :

NAME=VALUE, ...

NAME et VALUE doivent être utilisées selon l’une des combinaisons suivantes :

NAME VALUE Description
expiration_timestamp TIMESTAMP

Exemple : expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC"

Cette propriété est équivalente à la propriété de ressource de table expirationTime.

friendly_name

STRING

Exemple : friendly_name="my_view"

Cette propriété est équivalente à la propriété de ressource de table friendlyName.

description

STRING

Exemple : description="a view that expires in 2020"

Cette propriété est équivalente à la propriété de ressource de table description.

labels

ARRAY<STRUCT<STRING, STRING>>

Exemple : labels=[("org_unit", "development")]

Cette propriété est équivalente à la propriété de ressource de table labels.

VALUE est une expression constante ne contenant que des littéraux, des paramètres de requête et des fonctions scalaires. Si l'expression constante renvoie la valeur null, l'option NAME correspondante est ignorée.

L'expression constante ne peut pas contenir les éléments suivants :

  • Une référence à une table
  • Des sous-requêtes ou des instructions SQL telles que SELECT, CREATE et UPDATE
  • Des fonctions personnalisées, des fonctions d'agrégation ou des fonctions d'analyse
  • Les fonctions scalaires suivantes :
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

Lorsque l'option VALUE est définie, la valeur existante de cette option de vue est remplacée, le cas échéant. Si l'option VALUE est définie sur NULL, la valeur de la vue qui correspondait à cette option est effacée.

Exemples

Définir l'horodatage d'expiration et la description d'une vue

L'exemple suivant définit d'une part l'horodatage d'expiration d'une vue à sept jours à compter de l'heure d'exécution de l'instruction ALTER TABLE, et d'autre part la description de la vue :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     ALTER VIEW mydataset.myview
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="View that expires seven days from now"
     )
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     ALTER VIEW mydataset.myview
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="View that expires seven days from now"
     )
     

  4. Cliquez sur Exécuter la requête. Une fois la requête terminée, la propriété est définie dans la vue.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
ALTER VIEW mydataset.myview
SET OPTIONS (
  expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
  description="View that expires seven days from now"
)'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Instruction DROP TABLE

Pour supprimer une table dans BigQuery, utilisez l’instruction LDD DROP TABLE.

Syntaxe

{DROP TABLE | DROP TABLE IF EXISTS}
table_name

Où :

{DROP TABLE | DROP TABLE IF EXISTS} est l’une des instructions suivantes :

  • DROP TABLE : supprime une table de l'ensemble de données spécifié.
  • DROP TABLE IF EXISTS : supprime une table seulement si celle-ci existe déjà dans l'ensemble de données spécifié.

table_name est le nom de la table que vous supprimez.

Exemples

Supprimer une table

L'instruction LDD DROP TABLE supprime une table de l'ensemble de données spécifié. Si ce nom de table n'existe pas déjà dans l'ensemble de données, l'erreur suivante est renvoyée :

Error: Not found: Table myproject:mydataset.mytable

Si vous supprimez une table dans un autre projet, vous devez spécifier le projet, l'ensemble de données et la table au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.mytable`.

Pour supprimer une table à l'aide du LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     DROP TABLE mydataset.mytable
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     DROP TABLE mydataset.mytable
     

  4. Cliquez sur Exécuter la requête. Une fois la requête terminée, la table est supprimée du volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
DROP TABLE mydataset.mytable'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Supprimer une table seulement si cette table existe déjà

L'instruction LDD DROP TABLE IF EXISTS supprime une table de l'ensemble de données spécifié seulement si cette table existe déjà. Si ce nom de table n'existe pas déjà dans l'ensemble de données, aucune erreur n'est renvoyée et aucune mesure n'est prise.

Si vous supprimez une table dans un autre projet, vous devez spécifier le projet, l'ensemble de données et la table au format suivant : `[PROJECT].[DATASET].[TABLE]` (accents graves inclus) ; par exemple, `myproject.mydataset.mytable`.

Pour supprimer une table à l'aide du LDD seulement si cette table existe déjà :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     DROP TABLE IF EXISTS mydataset.mytable
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     DROP TABLE IF EXISTS mydataset.mytable
     

  4. Cliquez sur Exécuter la requête. Une fois la requête terminée, la table est supprimée du volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
DROP TABLE IF EXISTS mydataset.mytable'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Instruction DROP VIEW

Pour supprimer une vue dans BigQuery, utilisez l’instruction LDD DROP VIEW.

Syntaxe

{DROP VIEW | DROP VIEW IF EXISTS}
view_name

Où :

{DROP VIEW | DROP VIEW IF EXISTS} est l’une des instructions suivantes :

  • DROP VIEW : supprime une vue de l'ensemble de données spécifié.
  • DROP VIEW IF EXISTS : supprime une vue seulement si celle-ci existe déjà dans l'ensemble de données spécifié.

view_name est le nom de la vue que vous supprimez.

Exemples

Supprimer une vue

L'instruction LDD DROP VIEW supprime une vue de l'ensemble de données spécifié. Si ce nom de vue n'existe pas déjà dans l'ensemble de données, l'erreur suivante est renvoyée :

Error: Not found: Table myproject:mydataset.myview

Si vous supprimez une vue dans un autre projet, vous devez spécifier le projet, l'ensemble de données et la vue au format suivant : `[PROJECT].[DATASET].[VIEW]` (accents graves inclus) ; par exemple, `myproject.mydataset.myview`.

Pour supprimer une vue à l'aide du LDD :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     DROP VIEW mydataset.myview
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     DROP VIEW mydataset.myview
     

  4. Cliquez sur Exécuter la requête. Une fois la requête terminée, la vue est supprimée du volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
DROP VIEW mydataset.myview'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Supprimer une vue seulement si cette table vue existe déjà

L'instruction LDD DROP VIEW IF EXISTS supprime une vue de l'ensemble de données spécifié seulement si cette vue existe déjà. Si ce nom de vue n'existe pas déjà dans l'ensemble de données, aucune erreur n'est renvoyée et aucune mesure n'est prise.

Si vous supprimez une vue dans un autre projet, vous devez spécifier le projet, l'ensemble de données et la vue au format suivant : `[PROJECT].[DATASET].[VIEW]` (accents graves inclus) ; par exemple, `myproject.mydataset.myview`.

Pour supprimer une vue à l'aide du LDD seulement si cette vue existe déjà :

Console

  1. Ouvrez l'UI Web de BigQuery dans la console GCP.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Compose new query (Saisir une nouvelle requête).

    Saisir une nouvelle requête

  3. Saisissez l'instruction LDD dans la zone de texte de l'éditeur de requête. Exemple :

     #standardSQL
     DROP VIEW IF EXISTS mydataset.myview
     

  4. (Facultatif) Pour modifier l'emplacement de traitement des données, cliquez sur Plus, puis sur Paramètres de requête. Dans le champ Zone de traitement, cliquez sur Sélection automatique et choisissez l'emplacement de vos données. Cliquez ensuite sur Enregistrer pour mettre à jour les paramètres de la requête.

  5. Cliquez sur Exécuter. Lorsque la requête a été exécutée, la table apparaît dans le volet des ressources.

UI classique

  1. Accédez à l'interface utilisateur Web de BigQuery.

    Accéder à l'UI Web de BigQuery

  2. Cliquez sur Saisir une requête.

  3. Saisissez votre instruction LDD dans la zone de texte Nouvelle requête.

     #standardSQL
     DROP VIEW IF EXISTS mydataset.myview
     

  4. Cliquez sur Exécuter la requête. Une fois la requête terminée, la table est supprimée du volet de navigation.

Ligne de commande

Saisissez la commande bq query et indiquez l'instruction LDD comme paramètre de requête.

bq query --use_legacy_sql=false '
DROP VIEW IF EXISTS mydataset.myview'

API

Appelez la méthode jobs.query et indiquez l'instruction LDD dans la propriété de requête du corps de la requête.

La fonctionnalité LDD complète les informations renvoyées par une ressource de tâches. statistics.query.statementType inclut les valeurs supplémentaires suivantes pour assurer la compatibilité avec le LDD :

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query contient deux champs supplémentaires :

  • ddlOperationPerformed : opération LDD effectuée, éventuellement dépendante de l'existence de la cible LDD. Les valeurs actuelles incluent :
    • CREATE : la requête a créé la cible LDD.
    • SKIP : no-op. Exemples : CREATE TABLE IF NOT EXISTS a été envoyé et la table existe. Ou alors DROP TABLE IF EXISTS a été envoyé et la table n'existe pas.
    • REPLACE : la requête a remplacé la cible LDD. Exemple : CREATE OR REPLACE TABLE a été envoyé et la table existe déjà.
    • DROP : la requête a supprimé la cible LDD.
  • ddlTargetTable : lorsque vous envoyez une instruction CREATE TABLE/VIEW ou une instruction DROP TABLE/VIEW, la table cible est renvoyée sous forme d'objet avec trois champs :
    • "projectId" : chaîne
    • "datasetId" : chaîne
    • "tableId" : chaîne

Instruction DROP FUNCTION

Syntaxe

DROP FUNCTION [ IF EXISTS ] [`project_name`.]dataset_name.function_name

Description

Supprime la fonction function_name dans l'ensemble de données dataset_name.

Clauses facultatives

IF EXISTS Supprime la fonction uniquement si celle-ci existe dans l'ensemble de données spécifié.

project_name. Spécifie le projet contenant la fonction. Si la fonction ne se trouve pas dans le projet actuel, project_name doit être inclus.

Exemples

L'exemple d'instruction suivant supprime la fonction parseJsonAsStruct figurant dans l'ensemble de données mydataset.

DROP FUNCTION mydataset.parseJsonAsStruct;

L'exemple d'instruction suivant supprime la fonction parseJsonAsStruct figurant dans l'ensemble de données sample_dataset du projet other_project.

DROP FUNCTION `other_project`.sample_dataset.parseJsonAsStruct;
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.