Обновить
78.03

SQL *

Формальный непроцедурный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

От неизвестной схемы до защищённой БД: полный цикл защиты данных в Tantor Certified 17

Время на прочтение22 мин
Охват и читатели4.6K

«Поднятие» унаследованного Postgres без специнструментов быстро превращается в головную боль: вас ждет ручной разбор схем, перелопачивание десятков таблиц и прочая невеселая археология - где лежат персональные данные, что за колонки, как это всё соотносится с 152-ФЗ… Один неверный шаг – и можно запросто упустить что-то важное. Встроенного защитного преобразования данных на диске нет, приходится либо городить огород на уровне приложений, либо создавать триггеры. Хранить ключи, тестировать производительность, поддерживать это всё, руками выставлять фильтры, думать, куда писать логи, как следить за аномалиями и так далее. Всё, что связано с безопасностью – проверять вручную. Любое изменение схемы — снова садись и аудируй заново. Времени уходить будет очень много, и неизвестно, какие грабли вылезут.

В СУБД Tantor Certified то, что обычно делается на коленке, превращается в понятный и безопасный процесс, который подробно описывается в статье.

Читать далее

Новости

EXPLAIN ANALYZE: как находить узкие места в запросах PostgreSQL

Уровень сложностиПростой
Время на прочтение23 мин
Охват и читатели6.5K

В этой статье мы разберём, как PostgreSQL обрабатывает запросы, изучим работу планировщика запросов и освоим анализ отчётов EXPLAIN ANALYZE — важнейшего инструмента оптимизации запросов. Эти знания помогут вам находить и устранять узкие места в производительности, оптимизировать запросы и предотвращать проблемы, из-за которых СУБД может работать медленнее.

Читать далее

SQL для аналитика в ритейле: разбор 4 задач с данными (от простого к сложному)

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.9K

SQL для аналитика: разбор 4 задач со скриптами и примерами данных

Собрала 4 задачи, которые решала на старте карьеры на реальных проектах, и показываю:
- как обычный GROUP BY превращается в полноценный ABC-анализ;
- как оконные функции помогают увидеть динамику, которую в Excel считать часами;
- как найти неэффективные категории (даже если по цифрам всё "нормально");
- как построить прогноз на паре оконных функций.

Внутри:
- Скрипты с пояснениями;
- Сгенерированные данные (можно скопировать и проверить);
- Пример бизнес-вывода к каждому запросу.

Статья для аналитиков, которые хотят прокачать SQL и понимать, что на самом деле происходит в их данных.

Читать далее

CJM для аналитика: что это, зачем нужно и как строить на данных (с примерами SQL скриптов)

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели7.5K

CJM в аналитике: почему ваши клиенты уходят и как это увидеть в данных

Вы наверняка видели красивые CJM-картинки с эмоциями, лицами и стрелочками, это красиво, но бесполезно, потому что настоящая карта пути клиента строится на данных, CJM – это не про «нарисовать портрет клиента», это про цифры, воронки и узкие места.

В этой статье я рассказываю:
- Что такое CJM с точки зрения данных (и почему это не про эмоции);
- SQL-скрипты для построения воронки, расчета времени между этапами и анализа переходов;
- Как искать узкие места, где клиенты реально страдают (и теряются деньги).

👉 Без абстракций, с кодом и готовыми данными для проверки.

Читать далее

SQL для QA: 10 задач, которые реально дают на собеседованиях

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.3K

Привет, Хабр! Это четвёртая статья из серии про QA собеседования. Уже разобрали тест-дизайнAPI и Security и System Design. Теперь — SQL. На собеседованиях SQL задают чаще, чем многие ожидают. Не уровня DBA, но и не SELECT * FROM users. Обычно дают таблицу и просят написать запрос прямо на доске или в Google Docs. Если впадаете в ступор при слове JOIN — эта статья для вас.

Читать далее

Компактная нотация для сложных SQL-подобных выражений

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели7.9K

Статья представляет компактную математическую нотацию для SQL-препроцессора, разработанную для формирования сложных условных выражений из JSON-конфигураций. Нотация позволяет кратко записывать операции с множествами и интервалами: комбинированные операторы (>=[18,65]), стрелочные символы для интервалов (>> — BETWEEN, >< — NOT BETWEEN) и логическое отрицание через знак минус. Цель — создать интуитивно понятный, непротиворечивый и расширяемый язык запросов. Практическое применение — генерация SQL-кода в препроцессорах, DSL для построителей запросов, компактные фильтры в JSON-API. Рассматриваются сильные стороны и потенциальные проблемы нотации, сравнительный анализ с аналогами (Quist, SQL++, PRQL), выявляется уникальность подхода. Автор приглашает к обсуждению и предлагает сотрудничество.

Читать далее

SQL: Разбор задачи «Анализ покупательской корзины» на примере ритейла

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.4K

В статье разберем реальную задачу аналитика ассортимента в ритейле: «Какие товары люди покупают вместе», на учебных данных, с кодом SQL, со всей необходимой математикой и с примером выводов.

Читать далее

SQL для ритейла: пример 5 задач, которые я решала как аналитик ассортимента

Время на прочтение8 мин
Охват и читатели10K

Когда я решила стать аналитиком, я не знала про SQL вообще ничего, совсем, базовое образование у меня экономическое и в университете SQL нам никто не преподавал.

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

Читать далее

Интересный хак для упрощения сложных SELECT в Postgres

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели15K

Если вы пишете сложный SELECT, в котором одно и тоже вычисляется несколько раз, например, для массовой обработки данных пачками, то наверняка вам хотелось завести локальную переменную

вот пример:

SELECT
price * quantity AS total_price,
(price * quantity) * 0.15 AS tax,
((price * quantity) + ((price * quantity) * 0.15)) AS grand_total
...

Здесь price * quantity вычисляется несколько раз, и tax вычисляется дважды. Но это выглядит еще ок, в реальности это зачастую всякие монструозные свитч-кейсы с NULLIF, COALESCE и прочими ребятами.

Но не суть, вам хочется один раз вычислить значение, без дублирования кода.

Long story short, это делается так:

Читать далее

Ох уж эти join-ы: 4 способа ускорить ваши запросы в 10 раз

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели13K

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

В этой статье давайте посмотрим, можно ли реально обойдись без join и в каких ситуациях? А также 4 способа, которые кратно ускорят ваши запросы.

Читать далее

Отказоустойчивый PostgreSQL для почты RuPost: Patroni + etcd + HAProxy за три ВМ

Уровень сложностиСложный
Время на прочтение6 мин
Охват и читатели6.2K

Когда почта ложится — ложится всё. Переписка, задачи, согласования, доступы — всё завязано на почтовый сервер. А если под ним единственный PostgreSQL без резервирования, то между вами и катастрофой — один сбойный диск или зависший процесс.

В этой статье — пошаговый рецепт: собираем отказоустойчивый кластер PostgreSQL на базе Patroni, используем etcd для консенсуса и HAProxy как единую точку входа. Три виртуальные машины — и ваша почта RuPost переживёт падение ноды без потери писем и без ручного вмешательства.

Читать далее

BI-аналитик: стартовый пакет необходимых навыков

Время на прочтение7 мин
Охват и читатели6.9K

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

Читать далее

Keepalived и Orchestrator: реализуем сценарии отказоустойчивости

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели5K

Привет, Хабр!

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

Краткое содержание первой серии части (гиперссылка) нашего мануала:

мы развернули двухузловой кластер MySQL с асинхронной репликацией по GTID, улучшенной полу-синхронностью, и добавили два уровня отказоустойчивости: на уровне сервиса IP и роли БД.

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

Читать далее

Ближайшие события

Путь в аналитику данных: базовый минимум для старта

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели13K

📊 Хотите стать аналитиком данных, но не знаете, с какой стороны подойти?

Я собрала чек-лист для старта в 2026 году, никакой воды - только то, что реально спросят на собеседовании:
🛠 Что учить: SQL (с оконными функциями), Python (Pandas), BI-системы.
🧠 Важный софт-скилл, о котором молчат курсы — управление ожиданиями заказчика.
🔮 Бонус: что нужно знать про DWH и ML, чтобы выделяться среди других джунов.

Читать далее

Стоп-слова, исключения и словоформы в Manticore

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели3.7K

Теперь Manticore Search поддерживает прямое указание настроек токенизации непосредственно в команде CREATE TABLE. Таким образом, исчезает необходимость создавать внешние файлы при настройке стоп-слов, исключений, словоформ и слов без позиции, делая создание таблиц проще и удобнее для развертывания.

Читать далее

Как организовать тестовую среду, сохраняя покой владельца данных

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели4.8K

Привет, сообществу Habr!

Хочу поделиться опытом с коллегами -  как мы решили одну из наболевших проблем нашей команды разработки – отсутствие полноты данных для тестирования реализованного функционала в условиях ограниченного доступа к реальным данным компании. Если вы работаете с персональными данными, то наверняка сталкивались с такой проблемой.

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

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

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

Читать далее

Правила DATEADD в DAX

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.1K

Привет, Хабр! Важной составной частью Time Intelligence в DAX являются функции работы со временем, в частности, DATEADD, т.к. она является базовой для других (например, SAMEPERIODLASTYEAR является псевдонимом DATEADD('Date'[Date], -1, YEAR)) и возвращает таблицу (в отличие, например, от EDATE , которая возвращает только скаляр), и также может использоваться в качестве фильтра в CALCULATE.

Информацию о DATEADD приходится собирать из разных источников. Часть описано в официальной документации DATEADD, что-то есть в DAX Guide, что-то есть в материалах SQL BI, поэтому картина составляется по частям, хотя логика функции неочевидна и велики риски ошибок при использовании DATEADD в случае некорректного её использования.

Интересующимся правилами DATEADD для обеспечения Time Intelligence в DAX — добро пожаловать под кат :)

Читать далее

AI и Data engineering: Что реально происходит с профессией?

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.7K

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

AI, как и везде, конечно классно справляется с некоторыми задачами, но всю ответственность по-прежнему несет человек. Весь контекст не передашь через промпт, и AI не делает компромиссных решений. Большинство систем не выходят из строя, потому что было сложно написать код. Выходят потому что решения по разработке были приняты поспешно, и без четкого понимания, кто и как этими системами будет пользоваться. И AI еще быстрее за нас принимает решения, но все те же риски «непонимания контекста» остаются.

Читать далее

SQL за одну статью: от «SELECT *» до оконных функций и сложных JOIN-ов

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели22K

Кажется, что в ИТ всё меняется каждые пару лет. Фреймворки рождаются и умирают, архитектурные подходы сменяют друг друга, но SQL стабильно остается на месте. Он спокойно пережил хайп вокруг NoSQL, эпоху Big Data и повсеместное внедрение нейросетей.

Сегодня SQL давно перестал быть узким «языком админов». Это универсальный стандарт общения с данными, который жизненно необходим бэкендерам, аналитикам, QA-инженерам и даже продакт-менеджерам.

В этой статье мы пропустим скучную академическую теорию и разберем только то, что реально нужно в работе. Мы пройдем путь от анатомии таблиц и базовых джоинов до оконных функций. А в конце заглянем под капот базы данных и разберем логический порядок выполнения запроса — секретный ингредиент, который навсегда избавит вас от вопроса: «Почему эта строчка не работает?!».

Читать далее

Строковые константы в MS SQL

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.2K

Строковые константы в MS SQL кажутся очень простыми в использовании. Но эта простота не всегда очевидна и порой приводит к тяжело выявляемым ошибкам в коде.

По этой причине данная статья может оказаться полезной не только новичкам, но и тем, кто уже использует T-SQL в своей работе.

Документация явно описывает два типа констант: обычные строковые и юникодные. Но на самом деле ситуация несколько сложнее, что и будет рассмотрено ниже.

Читать далее
1
23 ...