Дедупликация строк в BigQuery на основе условия - PullRequest
0 голосов
/ 02 марта 2020

В настоящее время я пытаюсь дедуплицировать строки в Google BigQuery для одной из моих таблиц. По сути, у меня есть таблица, в которой есть строки, содержащие повторяющиеся значения, за исключением одного столбца. Один из примеров:

enter image description here

Обратите внимание, что все столбцы, кроме столбца "Название группы объявлений", совпадают. Я хотел бы сделать следующее: сохранить одну строку (неважно, какая), если все столбцы одинаковы , но название группы объявлений столбцов отличается .

Я думал о создании разделов и использовании функции ранга для обозначения различных значений в этом разделе. Что-то вроде:

RANK() OVER (PARTITION BY Adgroup ID, date, Sales, Cost ORDER BY Ad group name) AS rank

Теоретически (хе-хе) это должно привести к чему-то вроде:

enter image description here

Используя это, я мог бы отфильтровать новый подзапрос с использованием WHERE Rank = 1. В этом случае все дублирующиеся строки будут удалены.

Однако я обнаружил, что BigQuery не поддерживает использование FLOAT64 для разделения, поэтому мое решение не работает. Кроме того, я думаю, что есть лучший способ сделать это, но я не могу понять, как это сделать. Какую функцию в BigQuery я могу использовать специально для этого?

1 Ответ

2 голосов
/ 02 марта 2020

Вы можете использовать group by для этой цели:

select Adgroup ID, date, Sales, Cost, any_value(ad_group_name)
from t
group by Adgroup ID, date, Sales, Cost;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...