web-dev-qa-db-fra.com

Google BigQuery Delete Rows?

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?

16
Daum

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?

21

Pour supprimer des enregistrements dans une requête volumineuse, vous devez d'abord activer le SQL standard.

Étapes à suivre pour activer SQL standard

  1. Ouvrez l'interface utilisateur Web BigQuery.
  2. Cliquez sur Compose Query.
  3. Cliquez sur Afficher les options.
  4. Décochez la case Utiliser Legacy SQL.

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

18
rahulb

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;

Source: https://cloud.google.com/bigquery/query-reference

2
Christopher Ernst

Ceci n'est pertinent que si vous utilisez Legacy SQL.

Vous pouvez essayer ce qui suit:

DELETE FROM {dataset}.{table} WHERE {constraint}
0
brettster