Cela fonctionne totalement bien pour que je trouve des dupes dans une table dans Google Big Query.
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY KeyReport,Analytics,Description,AsOfDate) row_number FROM `corp-analytics.Reports.Metrics` ) WHERE row_number > 1 AND AsOfDate IN('01-03-2019','01-17-2019')
3 Réponses :
Tout d'abord, votre appel à Row_Number CODE> a beaucoup de sens, car vous n'avez jamais fourni de clause code> par code>. Sans cela, vous disez fondamentalement à BigQuery que vous ne vous souciez pas vraiment de l'ordre utilisé pour déterminer le numéro de ligne. Cela de côté, voici une requête que vous pouvez essayer de supprimer vos enregistrements:
DELETE
FROM corp-analytics.Reports.Metrics AS c
WHERE
(SELECT ROW_NUMBER() OVER (PARTITION BY KeyReport, Analytics, Description, AsOfDate
ORDER BY some_column)
FROM corp-analytics.Reports.Metrics AS c2
WHERE d.id = d2.id) = 1 AND
AsOfDate IN ('01-03-2019', '01-17-2019');
Il n'y a pas d'identifiant unique dans la table. Comment puis-je modifier le SQL pour tenir compte de cela? En outre, je ne peux pas supprimer les disques Dupe en place? En quelque sorte, cela crée une nouvelle table, appelée «mises à jour». Il doit y avoir une sorte de réglage qui contrôle cela parce que je ne lui dis pas explicitement de le faire.
Il s'agit d'une erreur sur un caractère incorrect "('. Cela ne peut pas être Droite. P>
C'est parfaitement correct. L'analyseur s'attend à voir le nom de la table après, il voit plutôt «(» et lancer une erreur. Voir Tim Biegeleisen Répondez à la modification de votre SQL. P>
https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax a> p>
xxx pré> blockQuote>
Vous aurez peut-être besoin d'une existence là-bas: p>
Supprimer De corp-analytics.reports.meports comme c Où existe (Sélectionnez Row_Number () Over (Partition par KeyReport, Analytics, Description, AsofDate Commander par certains_column) De corp-analytics.reports.metrics comme c2 Où d.id = d2.id) = 1 et Asofdate dans ('01 -03-2019 ', '01 -17-2019'); p>