Как создать уникальный идентификатор из неуникальных записей в Google BigQuery - PullRequest
0 голосов
/ 04 мая 2018

У меня есть таблица в BigQuery с 5 столбцами, ни один из которых не является столбцом уникального идентификатора. Я хочу проверить, есть ли какие-либо дубликаты строк в этой таблице. В настоящее время я делаю это с помощью запроса, как показано ниже:

SELECT conc, COUNT(*) AS total FROM (SELECT CONCAT(CAST(col1 AS STRING), CAST(col2 AS STRING), CAST(col3 AS STRING), CAST(col4 AS STRING), CAST(col5 AS STRING)) AS conc FROM <table>) GROUP BY conc HAVING total > 1

Есть ли более простой способ сделать это? Потому что я действительно хочу сделать это для таблицы с десятками столбцов.

1 Ответ

0 голосов
/ 04 мая 2018

Я хочу проверить, есть ли в этой таблице повторяющиеся строки

TO_JSON_STRING() полезно в таких случаях

#standardSQL
SELECT TO_JSON_STRING(t) AS row, COUNT(1) AS total
FROM `project.dataset.your_table` t
GROUP BY row
HAVING total > 1

Обновление

Я думаю, что использование Hash Functions может улучшить производительность. Например

#standardSQL
SELECT 
  MD5(TO_JSON_STRING(t)) AS id, 
  ANY_VALUE(TO_JSON_STRING(t)) AS row, 
  COUNT(1) AS total
FROM `project.dataset.your_table` t
GROUP BY id
HAVING total > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...