8 мин чтенияМиграция

Экспорт данных коротких ссылок: четыре вещи, которые можно забрать с собой

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

Sasha Ehrlich
Compliance · EU residency
Четыре класса данных, которые хранит сокращатель URL - таблица ссылок, агрегированные клики, необработанные события, метаданные аккаунта - каждый оценен по тому, можно ли его экспортировать

Сокращатель URL хранит четыре вида данных, и только один переносится без потерь, когда вы уходите. Таблица ссылок - слаги, конечные адреса, теги и домены, на которых они размещены, - это то, для чего любой серьезный поставщик позволяет экспортировать данные коротких ссылок, обычно в виде CSV или через API, потому что схема простая, а каждой платформе нужен базовый импортер, чтобы переманивать новых клиентов. Агрегированные подсчеты кликов тоже обычно доступны, хотя детализация различается. Необработанные события кликов - запись на каждый клик с меткой времени, реферером, устройством и IP - исключение: большинство поставщиков никогда их не открывают, потому что поверхность экспорта никогда не строилась для выгрузки полной истории. Метаданные аккаунта - теги, домены, пользователи - находятся посередине: их можно выгрузить по частям, но не одной цельной выгрузкой.

Относитесь к таблице ссылок как к единственному классу данных, на перенос которого можно рассчитывать, закладывайте полную потерю истории необработанных кликов и получайте письменный ответ по агрегированным подсчетам до того, как что-либо подпишете. Это не еще одна история о миграции - переход уже описан в руководстве по миграции с Bitly. Это постоянная привычка забирать свои собственные данные - мигрируете вы или нет.

Что на самом деле хранит платформа коротких ссылок

Любой сокращатель построен вокруг одних и тех же четырех классов данных. То, знаете ли вы, что есть что, до момента, когда понадобится экспорт, решает, займет ли миграция или аудит один день или целый квартал.

  • Таблица ссылок: слаг, конечный URL, дата создания, теги, папка и кастомный домен, к которому привязана ссылка.
  • Агрегированные подсчеты кликов: пожизненный итог по каждой ссылке, иногда разбивка по дням, изредка - по странам или реферерам.
  • Необработанные события кликов: одна строка на каждый клик, с меткой времени, IP, user agent и реферером, который его породил.
  • Метаданные аккаунта: настройки рабочего пространства, записи кастомных доменов, список участников команды, API-ключи, таксономия тегов.
Четыре строки, сравнивающие таблицу ссылок, агрегированные подсчеты кликов, необработанные события кликов и метаданные аккаунта по тому, насколько каждый из них переносим на практике, и что стоит спросить у поставщика

Эти четыре класса открыты не в равной степени, и разрыв между ними - это и есть тема всего поста.

Почему таблица ссылок переносится, а история кликов - как правило, нет

Таблица ссылок переносима, потому что ее схема нарочно скучная. Слаг, конечный адрес, горстка необязательных полей - каждый поставщик поддерживает импорт CSV, чтобы переманивать новых клиентов, а значит, у каждого поставщика есть и та или иная форма экспорта CSV, хотя бы для того, чтобы маркетинговая страница конкурента могла обещать "переход за один день". Руководство по типичным сбоям при переходе с Bitly описывает, что на самом деле ломается при переносе этой таблицы - регистр слага, конечные слэши, коллизии путей у диплинков. Этот пост - о другом моменте: о рутинной выгрузке, которую вы делаете независимо от того, стоит ли миграция в календаре.

История кликов - совсем другое дело. Агрегированный экспорт, если поставщик вообще его предлагает, дает вам пожизненный счетчик или грубый дневной итог - полезно для заголовочной цифры, но бесполезно, когда нужна детализация по дням или по реферерам. Собственный экспорт Bitly - показательный пример: он выдает пожизненный счетчик по каждой ссылке и ничего на уровне отдельных событий, и это закономерность, характерная для большей части категории, а не особенность именно Bitly. Как только экспорт теряет эту детализацию, она пропадает навсегда.

Куда пропадают необработанные события кликов

Необработанные события кликов пропадают по структурной причине, а не из-за жадности поставщика. Хранилища событий кликов строятся для запросов внутри собственного дашборда поставщика, а не для массовой выгрузки. API-поверхность, которая позволила бы клиенту постранично пролистать миллионы отдельных строк кликов, - это совсем другое инженерное обязательство, чем график в дашборде, и большинство поставщиков никогда его не строят, потому что большинство клиентов никогда не спрашивают об этом, пока не понадобится.

Последствие простое и жесткое: как только аккаунт выходит за окно хранения необработанных событий, или понижение тарифа отрезает уровень API, который их открывал, эти данные пропадают навсегда. Таблица ссылок обычно переживает изменение аккаунта; история кликов под ней - нет. Даже там, где API для необработанных событий существует, выгрузка полной истории упирается в ту же механику, что управляет любым крупным вызовом к API сокращателя - о том, как выстроить темп многодневной выгрузки, не упершись в лимитер, рассказывает статья ограничения скорости, повторы и идемпотентность в API сокращателя ссылок. Если история кликов - это то, что ваша команда постоянно запрашивает, а не просто архивирует, аналитика ссылок Elido устроена так, что большая часть таких запросов вообще обходится без экспорта.

Вопросы, которые стоит задать поставщику перед подписанием

Задайте эти вопросы до подписания, а не после того, как придет уведомление о понижении тарифа. Поставщику, который письменно отвечает на все шесть вопросов уже на этапе продажи, можно доверять и через год.

ВопросПочему это важноТревожный ответ
В каком формате выгружается экспорт?CSV/JSON против проприетарного формата определяет объем работы по повторному импорту"Экспорт предоставляется по запросу"
Доступны ли вообще необработанные события кликов?Определяет, реален ли экспорт истории кликов или это просто график в дашборде"Это можно увидеть в дашборде"
Какие ограничения скорости действуют на полную выгрузку?Выгрузка полной истории на низкой скорости может занять дни для крупного аккаунтаОпубликованного лимита нет, либо он слишком низкий, чтобы завершить выгрузку
Каково окно хранения данных о кликах?Экспорт не может восстановить необработанное событие, которое уже устарелоВ документации не указана политика хранения
Включает ли экспорт удаленные или архивированные ссылки?Для аудита нужна полная инвентаризация, а не только активные ссылкиЭкспорт незаметно отбрасывает все неактивное
Привязан ли доступ к экспорту к активному платному тарифу?Определяет, успеете ли вы сделать последний экспорт до потери доступаЭкспорт требует того тарифа, с которого вы уходите

Если ничего из этого нигде не зафиксировано в документации поставщика, это молчание и есть ответ на первый вопрос. API и SDK Elido публикуют эндпоинты экспорта, ограничения скорости и окно хранения в тех же справочных документах, что и все остальное - получение собственных данных обратно никогда не должно требовать обращения в поддержку.

Регулярный экспорт как привычка, которая сохраняет независимость

Решение - это привычка, а не разовый проект. Делайте полный экспорт по расписанию, до того как понижение тарифа или спор по оплате вынудит вас заняться этим вопросом, - и вы перестанете быть заложником того, что поставщик в этом квартале решит считать достойным вашего тарифа.

Регулярный экспорт из четырех шагов: запланировать выгрузку, хранить копию вне системы поставщика, проверить количество строк и сохранять последнюю заведомо исправную копию

Запланируйте выгрузку. Раз в неделю для активного рабочего пространства, раз в месяц - для тихого. Запланированная задача, обращающаяся к эндпоинтам таблицы ссылок и агрегированных подсчетов, - это несколько строк скрипта; суть в том, что она работает без вмешательства человека.

Храните ее вне системы поставщика. В месте, которое контролируете вы, а не в папке внутри продукта, из которого вы экспортируете, - в собственном хранилище, на общем диске, в репозитории. Если сокращатель исчезнет завтра, экспорт должен это пережить. Та же структура таблицы, что используется для массового импорта ссылок кампании из таблицы, одинаково хорошо работает и в обратную сторону - одна строка на ссылку.

Проверьте количество строк. Сравните количество строк в свежем экспорте с количеством ссылок, которое показывает дашборд. Расхождение меньше одного-двух процентов - это нормально: архивированные ссылки, которые вы намеренно исключили. Большее расхождение означает, что экспорт что-то упустил.

Сохраняйте последнюю заведомо исправную копию. Держите две-три последние выгрузки, а не только самую свежую. Поврежденный экспорт, перезаписывающий вашу единственную копию, сводит на нет весь смысл регулярной выгрузки аналитики по ссылкам.

Эта привычка закрывает и более тихую угрозу - обычное протухание ссылок. Конечные адреса за вашими слагами разрушаются по собственному расписанию независимо от того, что делает ваш сокращатель - о стороне обнаружения этой проблемы рассказывает статья предотвращение протухания ссылок в кампаниях с короткими URL. Регулярный экспорт дает вам инвентарь, по которому можно запускать такое обнаружение, независимо от того, за какой дашборд вы платите в этом году.

Что на самом деле охватывает GDPR Article 20

Переносимость данных о ссылках постоянно всплывает в разговорах о закупках, и точность в том, на что эта статья действительно распространяется, меняет ход переговоров.

Article 20 GDPR дает субъекту данных право получить персональные данные, которые он предоставил контролеру, в структурированном, машиночитаемом формате, и передать их другому контролеру - но только для обработки на основании согласия или договора, и только автоматизированными средствами. Рекомендации WP29 по переносимости данных сужают это еще больше: право распространяется на данные, предоставленные напрямую или сгенерированные в результате собственного использования сервиса субъектом, а не на данные, выведенные о нем.

Отсюда следуют два вывода. Во-первых, это право отдельного человека против контролера, а не право бизнеса на собственную агрегированную аналитику - никакое право по GDPR не отдает вашей маркетинговой команде историю кликов по первому запросу. Во-вторых, отслеживание кликов на уровне кампаний в большинстве случаев работает на основании законного интереса, а не согласия или договора, как подробно описывает основополагающий материал о GDPR для сокращателей ссылок, а Article 20 не применяется к обработке на этом основании, независимо от того, чьи это данные. Получение истории кликов от поставщика - это вопрос закупки, который решается контрактом и API экспорта, описанными выше, а не статьей о защите данных. Является ли лежащий в основе IP-адрес или данные об устройстве персональными данными вообще, и как долго вы вправе их хранить, отдельно рассматривается в статье хранение данных о кликах.

Как проверить экспорт, прежде чем ему доверять

Непроверенный экспорт - это слух, а не запись. Прежде чем куда-либо его подшить или удалить исходник, выполните три проверки.

Посчитайте строки и сравните с общим числом ссылок в дашборде; любое расхождение больше одного-двух процентов требует разбирательства. Откройте файл в том инструменте, в котором собираетесь реально с ним работать - CSV-экспорт, который выглядит нормально в текстовом редакторе, все еще может содержать сломанный разделитель или проблему с кодировкой, которую таблица проявит только при разборе, поэтому образец стоит сверить с RFC 4180, а не полагаться на предположения. Выборочно проверьте несколько известных ссылок, намеренно включив хотя бы одну архивированную или удаленную, поскольку незаметное исключение неактивных ссылок - самый частый способ, которым экспорт выглядит полным, но таким не является.

Я видела, как проверка на соответствие требованиям застряла на неделю из-за экспорта, в котором отсутствовали все ссылки, созданные до повышения тарифа восемнадцать месяцев назад - никто не сообщил инструменту, что эти ссылки существуют под другим внутренним ID. Тридцать минут проверки количества строк выявили бы это еще до начала проверки.

Связанные темы в блоге

Частые вопросы

Какие данные на самом деле можно экспортировать из сокращателя URL?

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

Можно ли экспортировать необработанные данные на уровне отдельных кликов, а не только итоги?

Обычно нет. Большинство платформ-сокращателей строят дашборд на хранилище необработанных событий, но никогда не открывают путь для массовой выгрузки из него, поэтому вы получаете агрегированный подсчет, а не отдельные строки кликов. Если экспорт на уровне кликов важен для вашего сценария, убедитесь, что он вообще существует, и попросите показать пример файла, прежде чем полагаться на него - график в дашборде не доказывает наличие API экспорта.

Дает ли GDPR право экспортировать аналитику по моим ссылкам?

Не так, как это обычно предполагают в разговорах о закупках. Article 20 - это право, принадлежащее субъекту данных - то есть конкретному человеку - в отношении данных, которые он предоставил на основании согласия или договора, а не право бизнеса на собственную агрегированную аналитику. Получение истории кликов от поставщика - это вопрос контракта и функциональности продукта, а не право, вытекающее из GDPR, даже если на эту статью ссылаются так, будто она решает вопрос.

Что происходит с данными о ссылках при понижении тарифа или отмене подписки?

Это полностью зависит от того, что написано в условиях поставщика, а в большинстве условий не написано ничего конкретного. Понижение тарифа может немедленно отрезать доступ к историческим данным о кликах через API, даже если таблица ссылок остается нетронутой, а отмена подписки может запустить отсчет до удаления, за которым вы никогда не соглашались следить. Решение - регулярный экспорт, сделанный заранее, а не запрос, поданный после того, как пришло уведомление.

В каком формате должен быть экспорт данных о ссылках?

Структурированном и машиночитаемом - CSV или JSON, а не PDF-отчет или скриншот дашборда. Практический ориентир - экспорт в CSV, который открывается без ошибок, с одной строкой на ссылку и согласованными столбцами, а RFC 4180 - это ближайший аналог стандарта, описывающего, как должен выглядеть корректно сформированный CSV-файл.

Как понять, что экспорт ссылок полный?

Сравните количество строк в файле с количеством ссылок, которое показывает дашборд, и любое расхождение больше одного-двух процентов считайте необъясненным, пока не разберетесь в его причине. Затем выборочно проверьте несколько известных ссылок, включая хотя бы одну архивированную или удаленную, потому что незаметное исключение неактивных ссылок по умолчанию - самый частый способ, которым экспорт выглядит полным, но таким не является.

Попробуйте Elido

Вставьте URL - получите короткую ссылку

Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.

Бесплатно, без регистрации · 2 в день

Попробуйте Elido

URL-сокращатель с хостингом в ЕС: собственные домены, глубокая аналитика, открытый API. Бесплатный тариф - без банковской карты.

Теги
export short link data
export links
click history export
link data portability
download link analytics
csv export

Читать дальше