Accéder aux données de l'historique
BigQuery vous permet d'interroger et de restaurer les données stockées dans BigQuery qui ont été modifiées ou supprimées au cours de votre période de fonctionnalité temporelle.
Interroger les données à un moment précis
Vous pouvez interroger les données historiques d'une table à tout moment dans la fenêtre temporelle en utilisant une clause FOR SYSTEM_TIME AS OF. Cette clause prend une expression d'horodatage constante et fait référence à la version de la table active à cet horodatage. La table doit être stockée dans BigQuery. Il ne peut pas s'agir d'une table externe. Lorsque vous utilisez SYSTEM_TIME AS OF, la taille de la table n'est pas limitée.
Par exemple, la requête suivante renvoie une version historique de la table d'une heure écoulée :
SELECT *
FROM `mydataset.mytable`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
Si l'horodatage spécifie une heure antérieure à la fenêtre de fonctionnalité temporelle ou avant la création de la table, la requête échoue et renvoie une erreur semblable à celle-ci :
Invalid snapshot time 1601168925462 for table myproject:mydataset.table1@1601168925462. Cannot read before 1601573410026.
Après avoir remplacé une table existante à l'aide de l'instruction CREATE OR REPLACE TABLE, vous pouvez utiliser FOR SYSTEM_TIME AS OF pour interroger la version précédente de la table.
Si la table a été supprimée, la requête échoue et renvoie une erreur semblable à celle-ci :
Not found: Table myproject:mydataset.table was not found in location LOCATION
Restaurer une table à partir d'un moment précis
Vous pouvez restaurer une table à partir des données de l'historique en copiant les données de l'historique dans une nouvelle table. La copie des données historiques fonctionne même si la table a été supprimée ou a expiré, tant que vous la restaurez pendant la durée de la fenêtre de fonctionnalité temporelle.
Lorsque vous restaurez une table à partir de données historiques, les tags de la table source ne sont pas copiés dans la table de destination. Les informations de partitionnement de la table ne sont pas non plus copiées dans la table de destination. Pour recréer le schéma de partitionnement de la table d'origine, vous pouvez consulter la demande de création de table initiale dans Cloud Logging et utiliser ces informations pour partitionner la table restaurée.
Vous pouvez restaurer une table supprimée, mais toujours dans la fenêtre temporelle, en copiant la table dans une nouvelle table, à l'aide du décorateur d'heure @<time>.
Vous ne pouvez pas interroger une table supprimée, même si vous utilisez un décorateur d'heure. Vous devez d'abord le restaurer.
Utilisez la syntaxe suivante avec le décorateur de temps @<time> :
tableid@TIME, oùTIMEest le nombre de millisecondes écoulées depuis l'époque Unix.tableid@-TIME_OFFSET, oùTIME_OFFSETest le décalage relatif par rapport à l'heure actuelle, en millisecondes.tableid@0: spécifie les données de l'historique les plus anciennes disponibles.
Pour restaurer une table, sélectionnez l'une des options suivantes :
Console
Vous ne pouvez pas annuler la suppression d'une table à l'aide de la console Cloud de Confiance .
bq
-
In the Cloud de Confiance console, activate Cloud Shell.
At the bottom of the Cloud de Confiance console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Pour restaurer une table, commencez par déterminer un horodatage UNIX (en millisecondes) correspondant à la période d'existence de la table. Vous pouvez utiliser la commande Linux
datepour générer l'horodatage Unix à partir d'une valeur d'horodatage standard :date -d '2023-08-04 16:00:34.456789Z' +%s000
Exécutez ensuite la commande
bq copyavec le décorateur de fonctionnalité temporelle@<time>pour effectuer l'opération de copie de table.Par exemple, saisissez la commande suivante pour copier la table
mydataset.mytableau moment1418864998000dans une nouvelle tablemydataset.newtable.bq cp mydataset.mytable@1418864998000 mydataset.newtable
(Facultatif) Spécifiez l'option
--locationet définissez la valeur correspondant à votre emplacement.Vous pouvez également spécifier un décalage relatif. L'exemple suivant copie la version d'une table d'il y a une heure :
bq cp mydataset.mytable@-3600000 mydataset.newtable
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.
Si vous prévoyez de restaurer une table ultérieurement à ce qui est autorisé par la fenêtre temporelle, créez un instantané de la table. Pour en savoir plus, consultez la page Présentation des instantanés de table.
Vous ne pouvez pas restaurer directement une vue logique. Pour en savoir plus, consultez Restaurer une vue.
Étapes suivantes
- En savoir plus sur les instantanés de table.
- En savoir plus sur la conservation des données avec la fonctionnalité temporelle et de sécurité
- En savoir plus sur la gestion des tables