Удаление повторяющихся значений без использования различных - PullRequest
0 голосов
/ 17 февраля 2020

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

select
      replace(article, ' - paper', '') as p,
      pageviews,
      login_clicks,
      paywall_clicks
    from analytics.article_action_week

Ответы [ 3 ]

1 голос
/ 17 февраля 2020

Вы можете использовать агрегацию в BigQuery для удаления дубликатов:

select replace(article, ' - paper', '') as p,
       any_value(struct(pageviews, login_clicks, paywall_clicks)
                ).*
from analytics.article_action_week aaw
group by p; 

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

select replace(article, ' - paper', '') as p,
       sum(pageviews) as pageviews,
       sum(login_clicks) as login_clicks, 
       sum(paywall_clicks) as paywall_clicks
from analytics.article_action_week aaw
group by p;

Это сложит меры по разным строкам.

0 голосов
/ 17 февраля 2020

группировка по функциям может быть полезна.

select
  replace(article, ' - paper', '') as p,
  pageviews,
  login_clicks,
  paywall_clicks
from analytics.article_action_week group by article
0 голосов
/ 17 февраля 2020

Вы можете проверить, используя row_number():

select replace(wk.article, ' - paper', '') as p, wk.pageviews, wk.login_clicks, wk.paywall_clicks, 
       row_number() over (partition by replace(wk.article, ' - paper', '') order by ?) as seq
from analytics.article_action_week wk;

Вы можете отфильтровать seq с помощью 1, чтобы получить уникальные строки. Вместо этого используйте столбец заказа ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...