Я пытаюсь завершить путь пользователя в BigQuery, но борюсь с некоторыми сложностями в проблеме.
Исходные данные выглядят так для одного пользователя:
Каждая сглаженная кавычка представляет отдельную конверсию (кавычка = конверсия), поэтому мне нужно 3 отдельных путешествия пользователя.
Путешествие 1: «Платный поиск - чистый бренд> Платный поиск - бренд Hyrbid> Конверсия»
Путешествие 2: «Платный поиск - Чистый бренд> Платный поиск - Бренд Hyrbid> Конверсия» ( пользователь получает 2 цитаты за один сеанс, поэтому путешествие 1 и путешествие 2 представляют 2 отдельных конверсии с одинаковым путем )
Путешествие 3: «Платный поиск - Pure Brand> Платный поиск - Brand Hyrbid» > Organi c Search> Conversion "
Было бы также хорошо, если бы путешествие 3 выглядело так:
Journey 3:" Платный поиск - Pure Brand> Платный поиск - Brand Hyrbid> Конверсия> Орган c Поиск> Конверсия "
На данный момент самое близкое, что у меня есть:
Проблема здесь, что хотя 2 обращения происходят во время посещения № 2, они перечислены здесь последовательно. Это означает, что когда вы разделяете каждое преобразование, я получаю:
Четвертая строка не так важна, как могла бы быть упал, но мне нужны строки 2 и 3 для включения предыдущих посещений.
Вот код, с которым я работаю:
with table_a as (SELECT date, fullVisitorId, visitnumber, visitid, clientId, istruedirect, number_of_pages_in_session, flattened_quote, CASE WHEN flattened_quote IS NOT NULL THEN REPLACE(channel, channel, CONCAT(channel, " > Conversion abcdef10")) ELSE channel END as channel
FROM `source_table`
ORDER BY fullVisitorId, date, visitnumber),
table_b as (SELECT
fullVisitorId,
#flattened_quote,
STRING_AGG(channel, ' > ') AS channelgrouping_path,
ARRAY_AGG (
STRUCT(flattened_quote)
) AS Values
FROM table_a
GROUP BY fullVisitorId)
select SPLIT(channelgrouping_path, "abcdef10") as split_into_each_journey
from table_b
where fullvisitorid = "1004040222968994500" # this is just using one visitor ID for validation, will be removed
Если у кого-нибудь есть какие-либо советы о том, как GROUP BY по-другому или что-то, чтобы достичь этого, я был бы очень признателен.