2015-10-27 3 views
1

У меня есть BigQuery таблица, содержащие данные, как показано ниже:BigQuery - удаление конкретных повторяющиеся записи

date hits_eventInfo_Category hits_eventInfo_Action session_id user_id hits_time hits_eventInfo_Label 

20151021 Air Search 1445001 A232 1952 CurrentLocation 
20151021 Air Search 1445001 A232 1952 CurrentLocation 
20151021 Air Search 1445001 A232 1952 CurrentLocation 
20151021 Air Select 1445001 A232 7380 Vendor 
20151021 Air Select 1445001 A232 7380 Vendor 
20151021 Air Select 1445001 A232 7380 Vendor 

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

date hits_eventInfo_Category hits_eventInfo_Action session_id user_id hits_time hits_eventInfo_Label 

20151021 Air Search 1445001 A232 1952 CurrentLocation 
20151021 Air Select 1445001 A232 7380 Vendor 

Как бы это сделать?

Заранее благодарен!

ответ

3

Вы можете либо использовать DISTINCT положение, или группу ваших данных. Они будут агрегировать данные, возвращенные в одну строку для каждой уникальной записи.

SELECT DISTINCT [date], [hits_eventInfo_Category], [hits_eventInfo_Action], [session_id], [user_id], [hits_time], [hits_eventInfo_Label] 
FROM [BigQuery] 

--OR 

SELECT [date], [hits_eventInfo_Category], [hits_eventInfo_Action], [session_id], [user_id], [hits_time], [hits_eventInfo_Label] 
FROM [BigQuery] 
GROUP BY [date], [hits_eventInfo_Category], [hits_eventInfo_Action], [session_id], [user_id], [hits_time], [hits_eventInfo_Label] 

Примечание: Это не приведет к удалению повторяющихся данных, оно просто не будет отображаться в результатах вашего оператора select. Если вы хотите, чтобы повторяющиеся записи удалялись permenantely, используйте ответ @singhsac, используя функции окна.

+2

второй запрос работает с BigQuery :) –

1

Вы можете группировать дубликаты. Держите одну строку, и удалите оставшиеся из дубликата группы:

Попробуйте это (я предполагал, имя таблицы и другие поля)

;WITH rmvDuplicate 
     AS (SELECT ROW_NUMBER() OVER (PARTITION BY [date], [hits_eventInfo_Category], [hits_eventInfo_Action], [session_id], [user_id], [hits_time], [hits_eventInfo_Label] 
             ORDER BY (SELECT 0)) dup 
      FROM BigQuery_table) 
    DELETE FROM rmvDuplicate 
    WHERE dup > 1 
+0

Разделите все столбцы, которые, по вашему мнению, повторяют значение в таблице. – singhsac

+0

не подходит для bigquery, который только append-https://cloud.google.com/bigquery/docs/tables?hl=ru#deletingrows –

Смежные вопросы