MiddlePython Developer > Основы Python > Реляционная модель данных
Короткий ответ JSONB уместен для действительно полуструктурированных или часто меняющихся по составу данных, когда заранее неизвестна или нестабильна схема, а не как универсальная замена нормализованных таблиц; для ускорения поиска по ключам/значениям внутри JSONB создают GIN-индекс. Как это работает подробнее JSONB хранит данные в бинарном разложенном виде, что ускоряет выборочный доступ к ключам и позволяет строить GIN-индекс, поддерживающий операторы @>, ?, ?& и поиск по пути jsonb_path_ops. Пример кода Что использовать на практике Практика. Типичный баланс — вынести стабильные, часто фильтруемые атрибуты в обычные колонки/таблицы, а вариативные или редко запрашиваемые — в JSONB; злоупотребление JSONB усложняет валидацию, JOIN и миграции данных внутри самого JSON. Подводные камни Ошибка. Хранят в JSONB данные, которые по сути реляционные и регулярно участвуют в JOIN/агрегации, что затрудняет аналитические запросы; создают обычный B-tree индекс на JSONB-колонку целиком вместо GIN-индекса.
constraintsdata-modeling
MiddleSMM Manager > Общее > Рекламные платформы и медиазакупка
Короткий ответ Переход целесообразен, когда накоплен достаточный объём данных по конверсиям (обычно от нескольких десятков целевых действий за период, в зависимости от площадки) и когда ручное управление уже не даёт заметного преимущества перед алгоритмом; риск — временное ухудшение результата в период повторного обучения и потеря части прямого контроля над распределением показов. Как это работает подробнее автостратегии оптимизируют показы на основе машинного обучения по историческим и текущим данным, что при достаточном объёме данных обычно превосходит ручные корректировки по стабильности результата. Что использовать на практике Подход. переход лучше делать плавно и в период низкой нагрузки или сезонности, фиксируя период на тест без резких правок, чтобы корректно сравнить результат до и после. Пример. Кампания с ручными ставками 3 месяца стабильно даёт CPA около 400 руб. Переход на автостратегию «минимальная цена за результат» тестируется в низкий сезон на 2 недели параллельно со старой группой объявлений
campaign-optimizationpaid-media
JuniorData Analyst > SQL и данные > Python для анализа данных
Короткий ответ dropna() уместен, когда пропусков мало и они распределены случайно относительно анализа; если пропусков много или они связаны с конкретным сегментом, удаление строк может сильно искажать выборку. Как это работает подробнее dropna() по умолчанию удаляет строку, если хотя бы в одном столбце есть NaN (how='any'); параметр subset ограничивает проверку конкретными столбцами, а how='all' удаляет строку только если все значения пропущены. Пример кода Что использовать на практике На практике: перед удалением стоит посчитать, какую долю строк это затронет, и проверить, не концентрируются ли пропуски в конкретном сегменте (например, в одной стране или у новых пользователей) — тогда удаление введёт систематическое смещение, а не просто уменьшит шум. Проверка: до удаления 4 строки, после — 2; если удалённые строки относятся к конкретному сегменту (например, все без страны оказались новыми пользователями), стоит явно отметить это ограничение в выводах. Подводные камни Частые ошибки: удаляют все строки с про
dropnamissing-data
MiddleDevOps Engineer > Контейнеры и доставка > Облачные платформы
Короткий ответ VPC peering работает один-к-одному и не транзитивен, поэтому при росте числа сетей, которые должны видеть друг друга, число необходимых соединений растёт квадратично; hub-and-spoke через центральный транзитный шлюз даёт каждой сети одно подключение к хабу вместо множества, превращая рост в линейный и централизуя маршрутизацию и политики. Как это работает подробнее при N сетях, которым нужна полная связность через peering, потребуется порядка N×(N-1)/2 соединений; транзитный шлюз выступает центральным маршрутизатором, к которому каждая сеть подключается один раз, а дальнейшую маршрутизацию решают таблицы маршрутизации на нём. Пример кода Что использовать на практике Рекомендация. переход на hub-and-spoke рассматривают, когда число сетей превышает единицы-десятки и нужна транзитивная связность; хаб также упрощает централизованный инспекционный firewall и единую точку применения сетевых политик. Проверка. добавление шестой сети в hub-and-spoke требует одного нового подключения к transit gateway, т
cloud-networkinghub-and-spoke
MiddlePerformance Marketer > Google Ads > Специфика рекламных площадок и каналов
Короткий ответ Нужно оценить долю трафика, не давшего согласие на cookie, или использующего браузеры с усиленной защитой от трекинга (ITP), сопоставить эти доли с размером расхождения между кабинетами и CRM, и там, где возможно, перейти на серверный трекинг (CAPI/S2S, Consent Mode с моделированием конверсий) как дополнение к клиентскому. Как это работает подробнее при отказе от cookie теги на стороне браузера не устанавливают файлы cookie и не передают полноценные данные, что не позволяет корректно связать клик и конверсию; ITP в Safari сокращает срок жизни cookie, установленных через JS, что критично для окон атрибуции длиннее нескольких дней — конверсия может произойти позже, чем cookie «доживёт». Что использовать на практике На практике. Consent Mode с поведенческим моделированием восстанавливает часть «потерянных» конверсий статистически, но работает только при достаточном объёме данных; серверный трекинг снижает зависимость от cookie браузера, но требует технической интеграции с CRM и корректной обработк
conversion-trackingcookie-consent
MiddleSMM Manager > Общее > Контент-стратегия
Короткий ответ Нужно проверить структуру воронки контента: вероятно, план перегружен контентом этапа awareness и почти не содержит conversion-контента с понятным путём к покупке, либо сам путь от соцсетей до покупки неудобен (нет ссылок, сложная навигация); рост лайков — это vanity-метрика, которая не заменяет бизнес-метрики продаж. Как это работает подробнее лайки и подписчики показывают интерес к контенту, но не измеряют намерение купить — для этого нужен отдельный анализ доли conversion-контента и реального пути пользователя от поста до покупки. Что использовать на практике На практике. проводят аудит доли постов по этапам воронки за последние месяцы и проверяют техническую часть (работают ли ссылки, легко ли найти способ купить), прежде чем менять контент-стратегию целиком. Пример. Аудит показывает 90% контента на этапе awareness и всего 10% на conversion за 3 месяца, при этом ссылка на каталог в профиле неактуальна. Решение: пересобрать план с увеличением доли conversion-контента до 25–30% и обновить ссы
content-operationscontent-strategy
JuniorData Analyst > SQL и данные > Аналитическое мышление
Короткий ответ Не подтверждаю цифру вслепую — прошу источник и метод расчёта, сам быстро пересчитываю её независимым запросом, и только после совпадения подтверждаю, сообщив при необходимости о расхождении. Как это работает подробнее просьба «срочно подтвердить» уже принятое решение создаёт давление пропустить проверку, но если цифра неверна, это обнаружится позже и будет дороже стоить репутационно, чем короткая задержка сейчас. Что использовать на практике Порядок действий. прошу прислать запрос/источник, которым коллега получил цифру; делаю собственный независимый расчёт по тем же данным; сравниваю результаты. Если цифры сходятся — подтверждаю быстро; если нет — сообщаю о расхождении и предлагаю разобраться до презентации, а не после. Подводные камни Частые ошибки. подтверждать цифру только потому, что коллега уверен и торопит; не документировать, каким методом цифра была перепроверена; молчать о найденном расхождении, чтобы не создавать конфликт, хотя это куда дороже для репутации аналитики.
data-qualitydata-validation
JuniorData Analyst > SQL и данные > Коммуникация с бизнесом
Короткий ответ Сначала сам проверю базовые причины расхождения — разные фильтры, часовой пояс, статус заказа (оплачен/создан), включены ли возвраты — и только затем, если причина не найдена, сообщу стейкхолдеру с описанием того, что уже проверено. Как это работает подробнее расхождения между дашбордом и источником почти всегда объясняются разными определениями одной и той же метрики (разные фильтры по статусу, разный часовой пояс, разный момент снятия снэпшота), а не ошибкой в данных. Пример кода Что использовать на практике Применение. проверяю по порядку: совпадают ли фильтры (период, статус, страна), совпадает ли определение метрики (валовая или чистая выручка, с НДС или без), не стоит ли на дашборде кэш/устаревшее обновление, не отличается ли часовой пояс агрегации суток. Проверка или пример. Дашборд при этом мог агрегировать по created_at и включать заказы со статусом pending. Проверка: сравниваю SQL-определение метрики на дашборде (если доступно) с ручным запросом к источнику за один конкретный день; ес
dashboarddata-quality
MiddleData Analyst > SQL и данные > Инструменты и инженерные практики
Короткий ответ Расхождение чаще всего вызвано разными версиями библиотек (например, pandas 1.x vs 2.x меняет поведение некоторых операций), незафиксированным random seed при сэмплировании/разбиении данных, или использованием другой версии самого файла; для воспроизводимости нужно фиксировать версии окружения, seed и источник данных. Как это работает подробнее Как это работает: разные версии pandas могут по-разному обрабатывать типы данных (например, nullable integer vs float при наличии пропусков), сортировку при группировке или поведение groupby с NaN в ключах; если в коде есть df.sample(), train_test_split или любая случайность без фиксированного random_state/seed, результат будет меняться от запуска к запуску даже на одном компьютере. Пример кода Что использовать на практике На практике: воспроизводимость обеспечивается связкой: файл с зафиксированными версиями пакетов (requirements.txt с точными версиями или environment.yml), явный random_state=42 везде, где есть случайность, и неизменность входных данных
dependenciespandas
JuniorData Analyst > SQL и данные > Инструменты и инженерные практики
Короткий ответ Нужно посмотреть историю версий файла (File → Version history) и найти, кто и когда изменил формулу или исходные данные, а для защиты — разграничить права доступа, защитить диапазоны с формулами от редактирования и отделить «сырые» данные от расчётного листа. Как это работает подробнее Как это работает: Google Sheets хранит полную историю версий документа с привязкой к пользователю и времени правки; «Защищённые диапазоны» (Protect ranges) позволяют запретить редактирование определённых ячеек всем, кроме выбранных пользователей, даже если у остальных есть доступ на редактирование всего файла. Что использовать на практике На практике: лист с формулами и итоговыми метриками стоит защитить от прямого редактирования, а ввод исходных данных делать на отдельном листе или через форму; перед тем как разбираться в причинах расхождения, полезно сравнить текущую версию с версией на вчерашнюю дату через историю версий, а не гадать. Пример и проверка. Открыв историю версий (Файл → История версий → Смотреть и
access-controldata-quality