Я пытаюсь использовать DELETE
, чтобы удалить дубликаты записей из моей таблицы BigQuery.
Я нашел несколько решений вышеуказанного вопроса, но большинство из них используют CREATE
, REPLACE
или SELECT
.
Ближайшее решение с использованием DELETE
, которое я нашел, было:
BigQuery - оператор DELETE для удаления дубликатов
BigQuery Standard SQL: Удалить дубликаты из таблицы
У меня есть дополнительные вопросы по приведенному ниже решению:
#standardSQL
DELETE FROM `yourproject.yourdataset.duplicates`
WHERE STRUCT(id, loadTime) NOT IN (
SELECT AS STRUCT id, MAX(loadTime) loadTime
FROM `yourproject.yourdataset.duplicates` where id= '123'
GROUP BY id)
Этот оператор удаляет все записи из таблицы, которая не удовлетворяет NOT IN
состояние. Например, если моя таблица выглядит следующим образом:
Id Loadtime
123 5
123 4
456 2
321 1
Приведенный выше запрос удаляет все записи, кроме первой строки. Как я могу изменить запрос так, чтобы он удалял только 2-ю строку, т.е. он удаляет только группу по идентификатору?
Окончательный результат должен быть:
Id Loadtime
123 5
456 2
321 1