Как запросить таблицу Google BigQuery и удалить дубликаты на основе подмножества столбцов? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть запрос, который объединяет две таблицы Google и создает таблицу с 6 столбцами (a, b, c, d, e, f).Затем я перемещаю эту таблицу в корзину Google, а затем загружаю эту корзину Google в группу CSV.Наконец, я вставляю эти CVS в таблицу базы данных postgres, которая имеет 2 первичных ключа: a и b.

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

SELECT
  DISTINCT A.a,
           A.b,
           A.c AS c, 
           A.d AS d,
           B.c AS e,
           B.d AS f
FROM
  `my_proj.my_table_A` A
FULL OUTER JOIN
  `my_proj.my_table_B` B
ON
  A.a = B.a
  AND A.b = B.b

... но он по-прежнему позволяет a и b иметь дубликаты, если, например, f отличается.Мне нужен только один из дубликатов строк, и не важно, какой.

Как удалить дубликаты только на основе a и b?

Ответы [ 2 ]

0 голосов
/ 12 июля 2018

Этот пост может быть дубликатом поста [1].В ответе с наибольшим количеством голосов не использовалось предложение GROUP BY, которое вы ищете в своем BigQuery SQL.

[1] Дедупликация BigQuery для двух столбцов в качестве уникального ключа .

0 голосов
/ 06 июня 2018

Используйте GROUP BY с ANY_VALUE:

SELECT
  A.a,
  A.b,
  ANY_VALUE(A.c) AS c, 
  ANY_VALUE(A.d) AS d,
  ANY_VALUE(B.c) AS e,
  ANY_VALUE(B.d) AS f
FROM
  `my_proj.my_table_A` A
FULL OUTER JOIN
  `my_proj.my_table_B` B
ON
  A.a = B.a
  AND A.b = B.b
GROUP BY
  A.a,
  A.b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...