Поиск одинаковых последовательностей для всех пользователей - PullRequest
0 голосов
/ 05 июня 2019

Я хочу получить одинаковые пути (с количеством) всех пользователей

Привет всем, Хочу, чтобы вопрос был коротким, и, надеюсь, понятно, чего я хочу. У меня есть таблица в BigQuery. Там у меня есть следующие столбцы

- UserID
- Timestamp
- Domain
- some other columns (but I guess they are unimportant)

Я понятия не имею, как это исправить!

Итак, я хочу найти одинаковые пути для всех пользователей и посчитать, сколько пользователей имеют одинаковую последовательность доменов.

Проблема: Речь идет о 129 000 пользователей и около 5 ТБ данных. Я думаю, я должен ограничить количество длины пути или что-то еще.

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

EDIT: Я попробовал следующее, чтобы оценить посещения доменов:

SELECT
    guid,
    domain AS channel,
    timestamp,
    RANK() OVER (PARTITION BY guid ORDER BY timestamp ASC ) AS rank
  FROM
data.all

Моя проблема сейчас: как сопоставить одинаковые пути после слияния каждого «шага» в этом путешествии?

1 Ответ

0 голосов
/ 05 июня 2019

Это может помочь или, по крайней мере, помочь вам начать работу:

select domains, count(*)
from (select userid, string_agg(domain order by timestamp, ',') as domains
      from t
      group by userid
     ) u
group by domains;

Я бы предпочел использовать массивы для хранения самого пути, но BigQuery (пока) не поддерживает массивы как GROUP BY ключи.

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