Как обеспечить уникальность при объединении отдельных наборов данных в Snowflake - PullRequest
0 голосов
/ 06 марта 2020

Итак, я пытаюсь объединить два одинаковых набора данных в один набор данных в Snowflake, обеспечивая уникальность в объединенном наборе данных ..

Набор данных1 - Набор данных цели GA

Столбцы:

ID        Unique ID for each record in the dataset
UserID    ID for each user in the dataset
URL       URL the Goal occurrred on
Time      DateTime, aggregated to the nearest minute, that the exit goal occured in
Goals     Number of goals triggered by the row

Набор данных2 - внутренний веб-трафик c набор данных

Столбцы:

ID        Unique ID for each record in the dataset
UserID    ID for each user in the dataset
URL       URL of the pageview/pageload event
Time      DateTime, to nanosecond, that the pageview/pageload event occurred

Известные условия

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

Цель для третьего набора данных

Создать набор данных, содержащий:

Dataset1.ID
Dataset2.ID
  • ГДЕ нет дублирование Dataset1.ID

  • ГДЕ нет дублирования DATAset2.ID

  • ГДЕ каждый экземпляр Dataset1.ID и каждый экземпляр Dataset2 .ID включен в Dataset3, независимо от того, есть ли совпадение в другом наборе данных.

Что я пробовал до сих пор:

Я начал с Dataset1, и присоединился к этому в Dataset2 на основе:

UserID
URL
Time (where the time in Dataset2 was within 4 minutes of Dataset1 - this is due to the systems running on different servers and platforms, which introduces a time difference in addition to the aggregated time issue).

Где я получаю несколько попаданий, я выбираю min ID для Набор данных 2 для каждого идентификатора в наборе данных 1.

Это привело к случаям, когда нескольким идентификаторам из набора данных 1 был присвоен один и тот же идентификатор из набора данных2, который я хочу предотвратить.

Я не использовал построить это, но единственное решение, которое я могу придумать, чтобы преодолеть это, состоит в том, чтобы обрабатывать каждую запись в Dataset1 индивидуально и идентифицировать идентификатор из Dataset1 - когда есть совпадение, выберите самый низкий идентификатор и запишите его в новый столбец в Набор данных 1, затем также запишите идентификатор из набора данных1 во вновь сопоставленный идентификатор из набора данных 2 в новый столбец в наборе данных 2. Затем, когда я возьму следующую строку из Dataset1, попытайтесь связать его только с Dataset2, где Dataset1 еще не установлен в Dataset2.

Надеюсь, это имеет смысл ...

Заранее спасибо Скотт

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Вы можете подойти к вашему решению с помощью обычной вставки / добавления. При просмотре с максимальной (временной) группой по идентификатору ответ будет установлен на уникальный идентификатор. Вы также можете вставить двоичное значение для каждой системы в дополнительную строку; скажем, 1 для системы 1 и 2 для системы два. Суммирование этого столбца покажет вам, откуда поступили ваши данные: 1 только в системе 1, 2 только в системе 2 и 3 для обеих систем.

0 голосов
/ 06 марта 2020

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

первый набор данных: 1, 1, 2, 3, 3, 4

второй: 1, 1, 1, 3, 3, 3

поэтому вы заказываете их:

первый набор данных: 1 (1), 1 (2), 2 (1), 3 (1), 3 (2), 4 (1)

второе: 1 (1), 1 (2), 1 (3), 3 (1), 3 (2), 3 (3)

и совпадение:

1(1)-1(1)
1(2)-1(2)
null-1(3)
2(1)-null
3(1)-3(1)
3(2)-3(2)
null-3(3)
4(1)-null

is это результат, который вы ищете?

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