Короткий ответ
UTM-метки — параметры URL, например utm_source и utm_campaign, которые помогают классифицировать переходы в отчётах. Извлекайте каждое значение по имени параметра, чтобы порядок параметров не влиял на разбивку.
Как это работает подробнее
В URL параметры следуют за вопросительным знаком и разделяются амперсандами; каждый параметр содержит ключ и значение. Разделение всей строки только по позиции ненадёжно: параметры могут идти в разном порядке, отсутствовать или иметь URL-кодированные символы, поэтому извлекайте значения по ключам.
- Нормализация. Сведите варианты написания источников и каналов к согласованным значениям до группировки.
- Пустые значения. Отличайте отсутствующий параметр от буквального значения (not set) и фиксируйте некорректные URL отдельно.
Пример кода
parse_utm.py
from urllib.parse import parse_qs, urlparse
url = "https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=spring"
params = parse_qs(urlparse(url).query)
source = params.get("utm_source", [""])[0]
medium = params.get("utm_medium", [""])[0]
campaign = params.get("utm_campaign", [""])[0]
print(source, medium, campaign)Что использовать на практике
- Табличный процесс. Используйте SPLIT для предварительного разбиения параметров, а затем извлекайте именно ключи utm_source, utm_medium и utm_campaign.
- Контроль. Посчитайте строки с пустым источником и проверьте их исходные URL до включения в отчёт.
Подводные камни
- Порядок параметров. Не предполагайте, что utm_source всегда первый после знака вопроса.
- Атрибуция. UTM описывают параметры перехода, но сами по себе не доказывают инкрементальный эффект рекламы и могут теряться при редиректах.