Содержание:
- Кто такой SQL-аналитик
- Как можно войти в профессию
- Как строится работа SQL-аналитика над проектом
- Что самое сложное в работе SQL-аналитика
- Какими навыками должен обладать SQL-аналитик
- Где учиться на SQL-аналитика
Современный бизнес получает данные из огромного числа источников, среди них не только внешние ресурсы (статистические реестры, социальные сети, новостные ленты и др.), но и внутренние процессы компаний: почтовые рассылки и переписка, презентации, техническая документация, регламенты, сведения из систем мониторинга, CRM и ERP, общение с клиентами и партнерами и др. Чем активнее развиваются технологии, чем больше путей и каналов взаимодействия с сотрудниками и партнерами, тем быстрее происходит рост количества данных.
Такие перемены не могли не отразиться на компаниях. «Сырые» данные стали рассматривать под лупой и старательно искать в них закономерности, которые помогут развитию бизнеса: определить наиболее вероятное поведение участников процессов и их предпочтения, возможности оптимизации и монетизации. Отсюда и возникла потребность в проведении анализа.
Кто такой SQL-аналитик
Начнем чуть раньше. Если утрировать, то бизнес-анализ представляет собой процесс превращения данных в информацию, а информации — в деньги. Основная цель такого процесса — повысить эффективность компании и ее конкурентоспособность.
Бизнес-аналитика применяет результаты анализа в практических целях. Бизнес-аналитик изучает потребности, проблемы, потенциальные возможности бизнеса в рамках заданных требований и рекомендует наиболее оптимальные решения, позволяющие компании достичь цели.
SQL-аналитика — это более узкая часть бизнес-аналитики, главным инструментом которой стал SQL, или Structured Query Language — язык запросов, позволяющий работать с данными из БД: «читать» их, извлекать, исследовать, обрабатывать и визуализировать.
Утрированный пример: представим таблицу (Students_data), которая содержит следующее:
- ФИО человека (student);
- номер школы (school);
- предмет (subject);
- количество баллов по ЕГЭ (points).
Как только вся информация собрана, мы получаем сущность — готовую таблицу, атрибуты — столбцы, записи — строки. Итого: некая база данных. Нам надо узнать, кто из школьников написал ЕГЭ по математике на 60 и выше баллов. И чтобы вытащить эту информацию из базы, нужно прописать на специфическом языке специальный запрос, который реализует как раз SQL:
from students_data
where subject = ‘Математика’ and points >=60
Несмотря на то, что SQL принято считать лишь одним из инструментов аналитики, он очень гибкий и достаточно обширный: на нем можно в том числе проектировать базы данных, задавать их структуру, создавать таблицы и т.д. Но мы используем в большей степени только ту часть, которая отвечает за запросы, то есть за извлечение данных из базы и их обработку.
В качестве источников данных в большинстве случаев выступают логи — данные из журналов событий информационных систем, где в хронологическом порядке зафиксированы все действия пользователя. Вспомните, где, как и в скольких программах вы работаете в течение дня, умножьте это на пару месяцев и еще на пару десятков/сотен человек. Данные получаются действительно огромными.
Отсюда вытекает основная задача SQL-аналитика: понять, как нужно извлечь, преобразовать и визуализировать нужную информацию, чтобы это было полезно для бизнес-заказчика.
Как можно войти в профессию
Я окончила бакалавриат и магистратуру по направлению «Бизнес-информатика». Всегда тяготела к точным наукам, но учеба на стыке технических и бизнес-дисциплин показалась более перспективной и интересной. Мы не ограничивались разработкой или, например, управленческими навыками, а копали глубже: изучали общую теорию систем, структуры, базы и хранилища данных, моделирование бизнес-процессов, а также их совершенствование и управление ими. Особый фокус делали на анализе данных, благодаря чему и произошло мое первое знакомство с языком SQL.
Несколько лет проработала 1С-программистом, однако после первого курса магистратуры поняла, что в жизни надо что-то менять. Вакансия «SQL-аналитик» в «Инфомаксимум» поначалу вызвала больше вопросов и опасений: а смогу ли я? Хватит ли профильных навыков и компетенций?
Собеседование, обязательное тестовое, и вот — первый рабочий день. Он прошел на удаленке: со мной связалось руководство, дали вводные относительно доступов, документов, баз знаний, представили наставника, с кем в паре предстояло изучать основные моменты.
Сложность была в том, что пришла я сразу на большой проект и все практические навыки получала на «поле боя». Постоянно спрашивала у коллег различные тонкости и много-много-много изучала самостоятельно — на курсах, в книгах и экспертных статьях.
Как строится работа SQL-аналитика над проектом
Стоит отметить, что работа SQL-аналитика начинается задолго до начала непосредственного анализа и состоит из нескольких этапов:
1) Выявление потребностей заказчика и его «боли», формализация и согласование требований.
Во многих компаниях, в том числе и у нас, клиент заполняет специальную анкету. Там описывается то, что бы он хотел проанализировать (процессы или операции), какие цели и задачи ставит. Этот этап всегда длительный и сложный.
Во-первых, клиент не всегда сразу понимает, чего хочет на самом деле, а, во-вторых, его видение часто не совпадает с нашими возможностями. Мы, прежде всего, именно исследуем и анализируем, находим перспективы и возможности для совершенствования, предлагаем какие-то пути решения найденных проблем, но итоговое слово всегда за бизнес-заказчиком.
2) Изучение и исследование регламентов бизнес-процессов компаний, юридические согласования.
Внедрение нового ПО или даже пилотный проект — всегда долгая история в больших компаниях. Много юридических моментов, согласований со службами безопасности и т.д. После этого мы начинаем изучать качество данных: определяем, насколько они полные, достоверные, точные и согласованные. Это очень важно, поскольку именно оценка качества данных и мероприятия по их повышению — важнейший этап любого проекта по аналитике, поскольку некачественные данные приводят к заведомо некорректному результату.
Если мы понимаем, что для реконструкции процесса нам не хватает каких-либо данных, приходится обсуждать возможность добавления дополнительных источников.
3) Непосредственно аналитика.
Начинаем подробно и внимательно изучать все полученные массивы данных, чтобы правильно связать все данные из полученных источников (логи, агенты, регламенты, карты и т.д.). Нам нужно найти необходимые процессы или их кусочки, чтобы корректно построить процесс. Это делается обычно тремя способами:
- При помощи автоматических алгоритмов, когда выявляются повторяющиеся цепочки событий.
- Полуавтоматически, когда вручную задаются начало и конец операции/процесса, а закономерности и связи ищет алгоритм.
- Вручную — для сложных и длинных процессов/операций, когда нужно «увязать» деятельность сотрудников из разных подразделений. Это тот случай, когда может потребоваться большое количество разных источников.
4) Подготовка итоговых презентаций для клиентов.
Четко и лаконично, исключительно на основе фактов и в доступной форме нужно рассказать о том, к чему пришли в результате анализа.
К чему должен быть готов специалист — описывать сложные вещи просто. Не все понимают специфические термины а-ля process mining, OLAP-кубы и другие. Полезную информацию нужно предоставлять в доступной форме и обязательно визуальным способом.
Что самое сложное в работе SQL-аналитика
Мыслить как бизнес-заказчик. Если технические скиллы можно проработать, то вот с бизнес-мышлением сложнее. С чего именно надо начинать анализ, что станет той самой пресловутой отправной точкой – это нелегко определить. Нужно учиться смотреть на ситуацию с точки зрения клиента.
Я назову три компонента, которые считаю основными для достижения такой цели – опыт, время и постоянная работа над собой. Классическая формула.
Какими навыками должен обладать SQL-аналитик
Не скажу, что порог входа в профессию очень высокий и сложный, однако он требует специфических навыков и умений, основные из которых:
- базовое знание SQL;
- азы работы с большими данными;
- общие знания о теории баз данных и методологиях проектирования;
- навыки работы с одной из промышленных СУБД (лучше всего — ClickHouse);
- аналитический склад мышления.
SQL-аналитику необходимо уметь посмотреть на ситуацию с разных ракурсов — как клиента, так и технического исполнителя. Это позволяет учитывать все аспекты работы при генерации вариантов решения поставленной задачи
Soft skills будут мало чем отличаться от других областей аналитики:
- широкий кругозор. Насмотренность и начитанность, а также знание специфики различных видов деятельности (например, концентрация не только на банковской сфере, но и промышленности, телекоммуникациях, логистике и др.) помогает быстрее вникать в детали проекта и использовать уже готовые конструкции, а не начинать работу с нуля;
- внимание к деталям. Мы имеем дело с огромными массивами данных, поэтому очень важно, чтобы полученные итоги были достоверными и обоснованными. Правило: «Семь раз примерь, один раз отрежь» — применимо к любой аналитической работе, где главный враг — суета, из-за которой можно не заметить важные мелочи;
- коммуникабельность. Очень банальный, но актуальный скилл. Приходится общаться с большим количеством специалистов — от бизнес-заказчиков до проектных менеджеров, разработчиков и тестировщиков, доносить до них нужную информацию и делать релевантные запросы;
- навыки презентации. Мало выполнить работу и в совершенстве знать результат, необходимо сжато и доходчиво донести информацию до заказчиков/руководства/коллег. Это универсальный навык, пожалуй, полезный не только в аналитике, но и во многих других профессиях;
- работа в команде. Здесь все понятно. Без комментариев.
Где учиться на SQL-аналитика
В университете у нас был небольшой курс, посвященный изучению SQL, однако, приступив к работе, я поняла, что это больше теория. Практика же требует намного больших знаний и умений, поэтому большим подспорьем были экспертные статьи, книги, курсы и даже Telegram-каналы. Что могу посоветовать:
Один из самых известных и мейнстримных, но очень толковых курсов. Акцент сделан на том, чтобы научить созданию БД и правильно прописывать запросы, дать азы о связанных таблицах. Особенно полезным курс будет для тех, кто только начинает знакомство с SQL и пока мало понимает, что это и о чем это. Многие из наших ребят начинали свой путь в аналитике именно с этих курсов.
Тоже для тех, кто делает первые шаги в анализе. Об SQL рассказывают просто и с самых азов — от установки до решения задач с различными операторами.
Отличный и понятный, что немаловажно, учебник по SQL. Был очень полезен на начальных этапах работы, когда приходилось освежать знания.
Для тех, кто очень хочет связать свою жизнь с аналитикой, но не знает, с чего начать. Автор делает акцент на именно на том, как работать с информацией и на чем лучше концентрироваться.
Священная вещь. Большой русскоязычный (!) портал с документацией по ClickHouse, к которой постоянно обращаемся. Здесь можно найти ответ на любой интересующий вопрос. Все расписано емко, подробно и без воды. Кстати, в Telegram есть классный чат «ClickHouse не тормозит» с живым обсуждением самых разных тем.
Совет: перед тем, как выбрать курс, обязательно посмотрите, есть ли обратная связь и домашние задания. Теория теорией, но лучше практики ничего нет.
Быть SQL-аналитиком не значит сидеть с девяти до шести в офисе. Это интерес к своему делу в любое время дня. Не раз замечала, что для нас скинуть интересный кейс, экспертную статью в рабочий чат — естественное дело.
Профессия SQL-аналитика, с одной стороны, требует огромной точности и «аналитически заточенного разума», с другой же — предполагает креатив и возможность проявить творческую нотку. Не стоит этого бояться.
К чему надо быть готовым:
- постоянное повышение своих скиллов;
- поиск нестандартных путей решения задач;
- готовность перенимать чужой опыт и двигаться вперед;
- рутина, частая однообразная работа.
Фото на обложке: LightField Studios/shutterstock.com
Источник: rb.ru
Зачем аналитику нужно программирование на SQL?
Многие аналитики работающие с SQL и занимающиеся анализом данных, никогда не сталкивались с программированием на этом языке, потому что SQL в первую очередь язык структурированных запросов, а не полноценный язык программирования. Однако, программные возможности в нем есть, хотя и весьма скромные.
В тот момент, когда при написании запроса мы сталкиваемся с какими-либо ограничениями, например синтаксическими, нам может пригодиться программирование. Ниже я расскажу о программных конструкциях и модулях существующих в SQL и чем они могут помочь аналитику.
Так как работаю я в основном с Microsoft SQL Server, то в тексте речь пойдет о программных возможностях баз данных построенных именно на этой системе.
В SQL Azure, Oracle Database, PostgreSQL и прочих реляционных базах синтаксис может отличаться, но принцип остается тем же.
Программные конструкции
Программная конструкция — это часть программы, отвечающая за определенное действие и объясняющая компьютеру как решить задачу. То есть небольшой строительный блок из которых и состоит программный код.
Переменные
Изучение любого из языков программирования, практически всегда начинается со знакомства с переменными.
Переменная — это ячейка в памяти компьютера, используемая для временного хранения какой-либо информации (чисел, строк, дат и т.п.).
У переменной есть три важных атрибута:
- Имя (чтобы можно было к ней обратиться);
- Тип данных (чтобы понимать, что с этой переменной можно делать);
- Область видимости (чтобы понимать, где она будет использоваться).
Также в SQL у переменной есть три фазы:
- Объявление переменной при помощи инструкции DECLARE ;
- Инициализация при помощи SET или SELECT ;
- Использование переменной при помощи подстановки ее имени в нужное место вашего скрипта.
Давайте создадим переменную:
Как переменные могут помочь аналитику?
Первое что приходит на ум — это создание отчета с динамическими периодами, чтобы не редактировать каждый раз даты отчета в условии WHERE :
Что касается области видимости, то нужно запомнить, что переменная видима с момента ее объявления до конца скрипта, после чего она уничтожается.
Условные операторы
Практически все языки программирования предоставляют возможность использовать условные операторы и SQL не исключение.
Условный оператор приходит на помощь в тот момент, когда вам нужно выполнить либо одно, либо другое действие в зависимости от заданного условия.
- Ключевое слово IF ;
- Условие, в соответствии с которым будет происходить проверка;
- Необязательное ключевое слово ELSE , указывающее на то, что делать если условие не выполнилось.
Давайте разберем на примере:
Чаще всего на практике требуются более сложные составные условия, содержащие различные логические связки.
Зачем это аналитику?
Логический оператор IF , сам по себе нельзя использовать в обычном SELECT -е, однако он активно применяется при создании программных модулей, таких как функции и хранимые процедуры о которых мы поговорим ниже.
Но есть логический оператор, который можно использовать внутри запроса и речь идет о операторе CASE он же оператор множественного выбора.
Оператор множественного выбора в зависимости от указанных условий позволяет вернуть одно из множества возможных значений, то есть CASE работает как несколько IF -ов.
- Ключевое слово CASE ;
- Ключевое слово WHEN , после которого идет условие проверки;
- Ключевое слово THEN , после которого идет действие к выполнению;
- Необязательное ключевое слово ELSE , указывающее на то, что делать если ни одно из условий не выполнилось;
- Ключевое слово END .
На практике все гораздо проще:
— CASE работает только внутри SELECT SELECT — При помощи CASE разобьем все товары на 4 группы в зависимости от цены CASE WHEN price 500 THEN ‘Дорогие товары’ ELSE ‘Бесплатно’ END FROM Orders
Для аналитика польза очевидна, так как при помощи CASE , можно создавать новые параметры отчетах, а также в зависимости от условий рассчитывать показатели.
Для примера давайте создадим новую группу каналов, ведь часто в отчетах бизнес-пользователи хотят видеть более понятные названия вместо smm_cpc , cpc или organic .
SELECT CASE WHEN medium = ‘smm_cpc’ THEN ‘Таргетированная реклама’ WHEN medium = ‘cpc’ THEN ‘Контекстная реклама’ WHEN medium = ‘organic’ THEN ‘Органический поиск’ WHEN medium = ‘referral’ THEN ‘Переходы по ссылкам’ ELSE ‘Прочее’ END FROM Orders
Циклы
Ни один уважающий себя язык программирования не обходится без циклов.
Цикл — это инструкция, позволяющая выполнять один и тот же запрос несколько раз, пока условие истинно.
- Ключевое слово WHILE ;
- Условие в соответствии с которым будет выполняться цикл.
В результате запрос, находящийся в операторных скобках, будет выполнен 4 раза:
В чем же польза для аналитика?
Так же как и в случае с условным оператором IF , цикл нельзя вставить внутрь запроса и он нужен для создания программных модулей о которых мы сейчас и поговорим.
Программные модули
Программный модуль — это запрос или скрипт сохраненный на сервере и оформленный в виде объектов.
Главная фишка использования программных модулей состоит в том, что они позволяют собирать сложные решения из простых составных частей. То есть позволяют декомпозировать большую задачу на несколько мелких.
Представление
При решении какой-либо задачи, наши запросы могут стать достаточно большими и их контекст сложно постоянно держать в голове. И как только такая ситуация возникнет — лучшим решением будет использование функционала представлений.
Представление — это сохраненный в базе запрос с которым можно работать так, как будто бы это готовая таблица.
У представления есть несколько ограничений:
- В качестве представления можно сохранить не любой запрос, а только SELECT ;
- В запросе не должно быть сортировки;
- Все столбцы должны иметь имена.
- Ключевое слово CREATE VIEW использующееся для создания представления;
- Ключевое слово AS , после которого должен идти текст запроса.
При создании представления сервер не выполняет запрос, а сохраняет его в базе для последующего использования.
Давайте разберем на примере:
— Создаем представление с именем SalesReport CREATE VIEW SalesReport AS — Далее указываем наш большой и сложный запрос, текст которого мы хотим сохранить на сервере SELECT [date] , cost , impressions , clicks , sessions , orders , revenue FROM Orders WHERE medium = ‘cpc’
И теперь, чтобы получить результат выполнения запроса, нам достаточно выполнить следующий код:
SELECT * FROM SalesReport
Чем это полезно аналитику?
Использование представлений позволяет абстрагироваться от сложностей появляющихся при написании запроса, что крайне актуально, когда ваш запрос не помещается в один экран.
И теперь можно дальше усложнять запрос, используя представления как строительные блоки для конечного отчета.
Табличное выражение
Чтобы создавать представления, у вас должны быть права администратора к базе данных. Но что делать когда таких прав нет, но возможности представлений использовать хочется?
Специально для этого был придуман функционал табличного выражения.
Табличное выражение — это представление которое не сохраняется в базе, а существует только в момент выполнения SELECT -а и после самоликвидируется.
- Ключевое слово WITH использующееся для создания табличного выражения;
- Ключевое слово AS , после которого должен идти псевдоним;
- В скобочках () указывается текст запроса, который будет выполняться при обращении к псевдониму;
- После табличного выражения должен идти одиночный SELECT .
— Создаем табличное выражение с именем Cost WITH Cost AS ( — Далее в скобках указываем наш запрос SELECT [date] , sourceMedium , campaign , cost , impressions , clicks FROM Advertising ) — Выводим результат выполнения запроса SELECT * FROM Cost
Пока не очень понятно в чем польза и чем это отличается от представления?
Давайте разберем пример из практики практически любого digital-аналитика:
- Перед вами поставили задачу — создать отчет для отдела контекстной рекламы с доходом и расходом по рекламным кампаниям.
- Данные по расходам хранятся в одной базе, а данные по заказам в другой.
- Ключами позволяющими связать данные между собой являются UTM-метки.
Для нас теперь это раз плюнуть, вооружимся табличными выражениями и напишем запрос:
— Запрашиваем расходы WITH Cost AS ( SELECT [date] , sourceMedium , campaign , cost , impressions , clicks FROM Advertising ) — Запрашиваем заказы , Orders AS ( SELECT [date] , sourceMedium , campaign , orders , revenue FROM Crm ) — Создаем итоговый отчет , Report AS ( SELECT Cost.[date] , Cost.sourceMedium , Cost.campaign , SUM(Cost.cost) AS ‘cost’ , SUM(Cost.impressions) AS ‘impressions’ , SUM(Cost.clicks) AS ‘clicks’ , SUM(Orders.orders) AS ‘orders’ , SUM(Orders.revenue) AS ‘revenue’ FROM Cost — Соединяем данные между собой по дате и UTM-меткам LEFT JOIN Orders ON Cost.[date] = Orders.[date] AND Cost.sourceMedium = Orders.sourceMedium AND Cost.campaign = Orders.campaign GROUP BY Cost.[date], Cost.sourceMedium, Cost.campaign ) — Выводим результат SELECT * FROM Report
Да, конечно, эту задачу можно было решить гораздо меньшим количеством кода.
Но моей целью было показать вам суть табличных выражений — они помогают разбить задачу на маленькие подзадачи, структурировать и упорядочить ваш код, что особенно актуально при написании больших и сложных отчетов.
Процедуры
Как и в случае представления, процедура представляет собой сохраненный в базе запрос, но процедура не является таблицей и поэтому на нее не накладываются такие строгие ограничения, как в представлении.
Основное назначение процедур — это сохранение программных сценариев для выполнения определенных действий в базе данных ( UPDATE , DELETE , INSERT и тп.), в том числе для вызова других процедур и функций.
Но у процедуры есть ограничения:
- Процедуру нельзя использовать в SELECT -е;
- Процедуру нельзя усложнять «снаружи», то есть ее нельзя JOIN -ть, отфильтровать, группировать и тп.
И теперь, чтобы вызвать процедуру, достаточно выполнить следующий код:
— Запускаем выполнение скрипта процедуры для вывода информации по определенному сотруднику EXECUTE HumanResourcesProc ‘Иван’, ‘Иванов’
Чем процедуры могут помочь аналитику?
Функционал процедур можно задействовать для построения на основе вашей базы данных полноценного ETL-решения — то есть процесса по извлечению данных из внешних источников, их трансформации и очистке, а также загрузке в хранилище.
А подключая к хранилищу Python или R-скрипты, вы сможете обучать, оценивать и развертывать модели машинного обучения прямо в базе данных.
Функции
Зачастую нам нужно повторять одно и то же действие во многих частях программы или даже в разных отчетах. И чтобы не писать один и то же код в разных местах были придуманы функции.
Функции — это конструкции, содержащие исполняемый код и являющиеся основными строительными блоками программы.
В некоторых языках программирования нет деления на функции и процедуры, так в чем же отличия?
- Функция может быть усложнена как «внутри», так и «снаружи», то есть она поддается сортировке, группировке и JOIN -у.
- Функция всегда возвращает результат определенного типа, например, встроенная функция SUM — всегда вернет число. Процедура же может выполниться и ничего не вернуть или вернуть число, строку, дату и даже таблицу в зависимости от того, как она запрограммирована.
И как тогда определиться что использовать? Все просто.
Процедуру стоит использовать, если вы собираетесь менять базу или для оформления конечного результата, не требующего дополнительной обработки, во всех остальных случаях используйте функции.
Давайте переделаем процедуру из предыдущего примера в функцию:
Для вызова созданной функции используем следующий код:
— Запускаем выполнение скрипта функции для вывода информации по определенному сотруднику SELECT * FROM HumanResourcesFunc (‘Иван’, ‘Иванов’)
Как функции могут облегчить жизнь аналитику?
Помните, чуть выше в блоке про оператор множественного выбора, мы разбирали пример с новой группой каналов?
А теперь, представьте, что это действие — присваивание понятного названия канала, нам нужно сделать не один раз в одном месте, а много и в нескольких отчетах.
Чтобы не повторять один и тот же код, можно написать функцию, которая заменит CASE :
И теперь, если мы захотим в каком-нибудь отчете заменить стандартные каналы на их русские названия, то просто применим функцию:
SELECT [date] — Вместо CASE вызываем функцию ChannelFunc с параметром medium , ChannelFunc([medium]) AS ‘newChannel’ , campaign , cost , impressions , clicks FROM Advertising
Что дальше?
В следующей статье я расскажу как, используя программные возможности языка SQL, можно создать автообновляемый отчет на основе стека технологий MS SQL Server и Power BI.
Документация Microsoft (Transact-SQL):
- Осваиваем SQL на примере данных интернет-магазина Google (базовые конструкции);
- Осваиваем SQL на примере данных интернет-магазина Google. Ч.2 (JOIN).
Источник: thisisdata.ru