Décorateurs de table en ancien SQL

Ce document explique en détail comment utiliser les décorateurs de table dans une syntaxe de requête en ancien SQL. La syntaxe de requête privilégiée par BigQuery est le langage SQL standard. Les décorateurs de table ne sont pas compatibles avec le SQL standard pour le moment, mais vous pouvez obtenir une sémantique de décorateur de table en SQL standard en appliquant un filtre à la pseudo-colonne _TABLE_SUFFIX. Pour en savoir plus, consultez la section Décorateurs et caractères génériques de table dans le guide de migration SQL standard.

En temps normal, BigQuery effectue une analyse complète des colonnes lors de l'exécution d'une requête. Vous pouvez utiliser des décorateurs de table en ancien SQL pour effectuer une requête plus économique sur un sous-ensemble de vos données. Cela est possible chaque fois qu'une table est lue, par exemple lorsque vous copiez une table, exportez une table ou répertoriez des données à l'aide de tabledata.list.

Les décorateurs de table sont compatibles avec les valeurs <time> relatives et absolues. Les valeurs relatives sont indiquées par un nombre négatif et les valeurs absolues par un nombre positif. Par exemple, -3600000 indique la dernière heure écoulée en millisecondes, par rapport à l'heure actuelle, et 3600000 indique une heure en millisecondes après le 01/01/1970.

Décorateurs d'instantané

Syntaxe

@<time>
  • Référence un instantané de la table au moment <time>, en millisecondes depuis l'epoch.
  • <time> doit être compris dans les sept derniers jours avec une valeur supérieure ou égale à l'heure de création de la table.
  • @0 est un cas particulier qui référence l'instantané le plus ancien de la table : soit sept jours en arrière, soit à l'heure de création de la table si elle a été créée il y a moins de sept jours.

Vous pouvez utiliser des décorateurs d'instantané pour annuler la suppression d'une table dans les deux jours suivant la suppression.

Exemples

Pour obtenir un instantané de la table lors de la dernière heure écoulée :

Exemple de valeur relative

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]

Exemple de valeur absolue

  1. Obtenez <time> pour la dernière heure écoulée :

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. Ensuite, remplacez <time> dans la requête ci-dessous :

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
    

Décorateurs de plage

Syntaxe

@<time1>-<time2>
  • Référence des données de table ajoutées entre <time1> et <time2>, en millisecondes depuis l'epoch.
  • <time1> et <time2> doivent se trouver dans les sept derniers jours.
  • <time2> est facultatif et défini par défaut sur "now" (maintenant).

Exemples

Exemples de valeurs relatives

Pour obtenir des données de table ajoutées entre la dernière heure et la dernière demi-heure écoulées :

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]

Pour obtenir les données des 10 dernières minutes :

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]

Exemple de valeur absolue

Pour obtenir des données de table ajoutées entre la dernière heure et la dernière demi-heure écoulées :

  1. Obtenez <time1> de la dernière heure écoulée :

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. Obtenez <time2> de la dernière demi-heure écoulée :

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
    
  3. Remplacez <time1> et <time2> dans la requête suivante :

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]
    
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

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