#sql #google-bigquery
#sql #google-bigquery
Вопрос:
В настоящее время у меня есть таблица, которая использует составные столбцы для уникальной идентификации каждой строки данных.. Таким образом, мы получаем повторяющиеся строки. У меня есть оператор слияния, который копирует данные из исходной таблицы в целевую. В любое время у нас есть повторяющиеся строки в исходной таблице. Оператор слияния копирует дубликат вместе с другими строками данных в пункт назначения. Оператор слияния
MERGE `project.dataset.destination` T
USING `project.dataset.source` S
ON (T.department = S.department OR T.department IS NULL and S.department IS NULL) AND
(T.category = S.category OR T.category IS NULL AND S.category IS NULL) AND
(T.subcategory = S.subcategory OR T.subcategory IS NULL AND S.subcategory IS NULL) AND
(T.subset = S.subset OR T.subset IS NULL AND S.subset IS NULL) AND
(T.country = S.country OR T.country IS NULL AND S.country IS NULL) AND
(T.state = S.state OR T.state IS NULL AND S.state IS NULL) AND
(T.county = S.county OR T.county IS NULL AND S.country IS NULL) AND
(T.date = S.date OR T.date IS NULL AND S.date IS NULL)
WHEN NOT MATCHED AND ((department = "SPORT" AND subcategory IN ("FOOTBALL", "PONG")) AND
(country IN("USA", "CANADA") )) THEN
INSERT ROW
WHEN NOT MATCHED BY SOURCE THEN
DELETE
Мой вопрос в том, могу ли я каким-либо образом обработать вставку дубликатов в целевую таблицу?
Или, если строки дубликатов вставляются в пункт назначения. когда этот оператор слияния выполняется на следующий день; могу ли я в любом случае изменить этот оператор слияния, чтобы удалить любой дубликат, найденный в таблице назначения?
Заранее спасибо
Комментарии:
1. что такое дубликат? Я имею в виду, что определяет дублирование в вашем сценарии?
2. Вы пытаетесь заменить строку в таблице новым значением?
3. Дубликат @eshirvana означает, что одна и та же строка данных отображается более чем в одной исходной таблице… не является уникальным
4. @GordonLinoff я пытаюсь вставить данные из источника в пункт назначения.. но я не хочу дублировать данные
5. Почему бы вам не запланировать дополнительный BQ-SQL для обработки повторяющихся записей в соответствии с вашими требованиями.
Ответ №1:
Общие рекомендации для хорошего вопроса SQL: предоставьте пример исходной таблицы и таблицы dest, а затем ожидаемые результаты.
Тем не менее, основываясь на комментариях, «дублировать» здесь означает:
если в исходной таблице одна и та же строка данных отображается более одной
Дедупликация исходной таблицы может произойти в подзапросе, например
MERGE `project.dataset.destination` T
USING (
SELECT ...
FROM `project.dataset.source`
GROUP BY <your_unique_key>
) S
ON ...