Quelqu'un sait-il s'il est prévu d'ajouter un support pour supprimer des parties de données d'une table dans Google Bigquery? Le problème que nous avons actuellement est que nous l'utilisons pour analyser les points de données que nous recueillons au fil du temps. Nous voulons exécuter les requêtes sur les X derniers jours de données. Toutefois, après les X derniers jours de données, nous n'avons plus besoin de stocker les données dans BigQuery.
Le seul moyen actuellement auquel nous pouvons penser pour supprimer les données serait de supprimer la table de données entière, puis de la recréer et de la charger avec un nombre X de jours de données. Cela exigerait cependant que nous stockions nos données dans des fichiers CSV quotidiens également, ce qui n’est pas optimal.
Des recommandations sur la façon de traiter ce problème ou si une requête de suppression de lignes est imminente?
Mise à jour 2016: BigQuery peut supprimer et mettre à jour des lignes maintenant - Fh
https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax
Merci d'avoir décrit votre cas d'utilisation. BigQuery est conçu uniquement pour l'ajout. Nous ne prenons actuellement pas en charge la suppression de lignes simples ou d'un lot de lignes d'un jeu de données existant.
Actuellement, pour mettre en place un système de journalisation "en rotation", vous devez soit: 1. Créez une nouvelle table chaque jour (et supprimez les anciennes si nécessaire) 2. Ajouter vos données à une table et interroger par heure/date
En fait, je recommanderais de créer une nouvelle table pour chaque jour. Etant donné que BigQuery facture en fonction de la quantité de données interrogées, cela serait plus économique pour vous, plutôt que d'avoir à interroger à chaque fois des ensembles de données volumineux.
Au fait, comment collectez-vous vos données actuellement?
Pour supprimer des enregistrements dans une requête volumineuse, vous devez d'abord activer le SQL standard.
Étapes à suivre pour activer SQL standard
Cela permettra au langage DML (BigQuery Data Manipulation Language) de mettre à jour, d'insérer et de supprimer des données des tables BigQuery.
Maintenant, vous pouvez écrire la requête SQL en clair pour supprimer le ou les enregistrements.
DELETE [FROM] target_name [alias] WHERE condition
Vous pouvez consulter: https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#delete_statement
De plus, le cas échéant, vous pouvez essayer OMIT RECORD IF de BigQuery pour renvoyer tous les éléments, sauf ce que vous souhaitez supprimer. Ensuite, créez une nouvelle table à partir de ce résultat de requête.
(exemple tiré des documents de référence de Google)}
SELECT * FROM
publicdata:samples.github_nested
OMIT RECORD IF
COUNT(payload.pages.page_name) <= 80;
Ceci n'est pertinent que si vous utilisez Legacy SQL.
Vous pouvez essayer ce qui suit:
DELETE FROM {dataset}.{table} WHERE {constraint}