Иметь перед глазами шпаргалки-напоминалки и короткие конспекты порой очень удобно, особенно, если чем-то пользуетесь не на регулярной основе. Пользуйтесь 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🙏1
Forwarded from Инжиниринг Данных (Dmitry)
sql-for-data-analysis-cheat-sheet-a4.pdf
140.7 KB
SQL Cheatsheet:
- SQL Basics Cheat Sheet
- SQL for Data Analysis Cheat Sheet
- SQL Window Functions Cheat Sheet
- SQL JOIN Cheat Sheet
Вот если вы не знаете SQL или только начинаете учить, попробуйте просто выучить наизусть несколько примеров, и будет полегче
- SQL Basics Cheat Sheet
- SQL for Data Analysis Cheat Sheet
- SQL Window Functions Cheat Sheet
- SQL JOIN Cheat Sheet
Вот если вы не знаете SQL или только начинаете учить, попробуйте просто выучить наизусть несколько примеров, и будет полегче
❤8
Разбираемся с дублями
Если вашу выборку нужно почистить от дублей, вы можете сделать это очень просто:
В результате получим в выводе только уникальные строки (вместо *, конечно же, указываем корректный список полей).
🙃
Недостаток: пока что работает не во всех СУБД🥲
Если СУБД не поддерживает оператор QUALIFY, можем чистить так:
P.S. Про сам
#sql
Если вашу выборку нужно почистить от дублей, вы можете сделать это очень просто:
SELECT *
FROM your_table
QUALIFY ROW_NUMBER() OVER(PARTITION BY column_id ORDER BY column_dt DESC) = 1;
В результате получим в выводе только уникальные строки (вместо *, конечно же, указываем корректный список полей).
QUALIFY + ROW_NUMBER() = никаких лишних подзапросов Недостаток: пока что работает не во всех СУБД
Если СУБД не поддерживает оператор QUALIFY, можем чистить так:
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY column_id ORDER BY column_dt DESC) AS rn
FROM your_table
)
SELECT *
FROM cte
WHERE rn = 1;
P.S. Про сам
QUALIFY я уже писала здесь.#sql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥2
Иногда приходится разбирать чужие sql-запросы и периодически сталкиваюсь с различными ошибками. Сегодня хочу рассказать о трёх наиболее распространённых.
Некорректная работа с NULL
Я уже много раз писала, NULL — не просто пустота, это неизвестность. Поэтому нельзя сравнивать с NULL в лоб. Запрос вам ошибку не выдаст, но отработает некорректно.
Также при подсчёте количества строк
Больше про #null я писала в постах с соответствующим тегом) на собесах часто про это спрашивают, но уделить внимание теме, конечно же, стоит не только поэтому.
Неправильное использование оператора BETWEEN
Ещё часто вижу, как забывают об особеннстях BETWEEN, забывая, что он включает и верхнюю, и нижнюю границы диапазона. Это может привести к дублированию данных или их пропуску при последовательной выборке.
В этом примере заказы, созданные ровно в полночь 2 марта (2024-03-02 00:00:00), будут включены в обе выборки! Лучше использовать явные полуинтервалы:
Но если сильно хочется BETWEEN, то:
Да, про миллисекунды забывать не нужно, а то можно что-то потерять. И всё-таки проще использовать полуинтервалы)
Ошибки в логических операторах
Ещё часто забывают про приоритеты при использовании AND и OR в одном условии. В SQL сначала выполняются все AND, а затем уже OR.
Например, нужно найти все транзакции на сумму больше 100.000, которые имеют статус "completed" и при этом либо от премиум-пользователя, либо оплачены кредитной картой.
По правилам SQL операторы AND приоритетнее. Поэтому запрос интерпретируется так:
То есть мы получим все завершённые транзакции премиум-пользователей с суммой больше 100000, плюс абсолютно все транзакции с кредитных карт (даже незавершённые и с маленькими суммами).
Так мы получим именно то, что хотели:
В целом, проще лишний раз указать скобки, чем запутаться и получить ошибочный результат.
Кому-то кажется очевидным, но такие вещи, действительно, встречаются. А с какими ошибками в sql вы часто сталкиваетесь?
#sql
Некорректная работа с NULL
Я уже много раз писала, NULL — не просто пустота, это неизвестность. Поэтому нельзя сравнивать с NULL в лоб. Запрос вам ошибку не выдаст, но отработает некорректно.
-- неправильно:
SELECT * FROM users WHERE age = NULL;
SELECT * FROM users WHERE age != NULL;
-- правильно:
SELECT * FROM users WHERE age IS NULL;
SELECT * FROM users WHERE age IS NOT NULL;
Также при подсчёте количества строк
COUNT(column_name) пропустит все NULL-значения. Поэтому если нужно посчитать прям вообще всё используйте COUNT(*).
-- считает количество заполненных номеров:
SELECT COUNT(phone) FROM users;
-- считает все строки, в том числе с NULL:
SELECT COUNT(*) FROM users;
Больше про #null я писала в постах с соответствующим тегом) на собесах часто про это спрашивают, но уделить внимание теме, конечно же, стоит не только поэтому.
Неправильное использование оператора BETWEEN
Ещё часто вижу, как забывают об особеннстях BETWEEN, забывая, что он включает и верхнюю, и нижнюю границы диапазона. Это может привести к дублированию данных или их пропуску при последовательной выборке.
-- пример кода с ошибкой:
-- выборка за 1 марта о полю типа дата-время
SELECT * FROM orders WHERE order_dttm BETWEEN '2024-03-01' AND '2024-03-02';
-- Выборка за 2 марта
SELECT * FROM orders WHERE order_dttm BETWEEN '2024-03-02' AND '2024-03-03';
В этом примере заказы, созданные ровно в полночь 2 марта (2024-03-02 00:00:00), будут включены в обе выборки! Лучше использовать явные полуинтервалы:
-- правильно:
-- выборка за 1 марта
SELECT * FROM orders WHERE order_dttm >= '2024-03-01' AND order_dttm < '2024-03-02';
-- выборка за 2 марта
SELECT * FROM orders WHERE order_dttm >= '2024-03-02' AND order_dttm < '2024-03-03';
Но если сильно хочется BETWEEN, то:
-- выборка за 1 марта
SELECT * FROM orders WHERE order_dttm BETWEEN '2024-03-01 00:00:00' AND '2024-03-01 23:59:59';
-- выборка за 2 марта
SELECT * FROM orders WHERE order_dttm BETWEEN '2024-03-01 00:00:00.000' AND '2024-03-01 23:59:59.999';
Да, про миллисекунды забывать не нужно, а то можно что-то потерять. И всё-таки проще использовать полуинтервалы)
Ошибки в логических операторах
Ещё часто забывают про приоритеты при использовании AND и OR в одном условии. В SQL сначала выполняются все AND, а затем уже OR.
Например, нужно найти все транзакции на сумму больше 100.000, которые имеют статус "completed" и при этом либо от премиум-пользователя, либо оплачены кредитной картой.
-- неправильно:
SELECT * FROM transactions
WHERE amount > 100000
AND status = 'completed'
AND user_type = 'premium' OR payment_method = 'credit_card'
По правилам SQL операторы AND приоритетнее. Поэтому запрос интерпретируется так:
SELECT * FROM transactions
WHERE (status = 'completed' AND amount > 100000 AND user_type = 'premium')
OR (payment_method = 'credit_card')
То есть мы получим все завершённые транзакции премиум-пользователей с суммой больше 100000, плюс абсолютно все транзакции с кредитных карт (даже незавершённые и с маленькими суммами).
Так мы получим именно то, что хотели:
-- правильно:
SELECT * FROM transactions
WHERE status = 'completed'
AND amount > 100000
AND (user_type = 'premium' OR payment_method = 'credit_card')
В целом, проще лишний раз указать скобки, чем запутаться и получить ошибочный результат.
Кому-то кажется очевидным, но такие вещи, действительно, встречаются. А с какими ошибками в sql вы часто сталкиваетесь?
#sql
👍7🔥5
Forwarded from Дмитрий Кузьмин | Инженерия данных
#мотивация
Учеба - это череда маленьких побед. Кажется, что все будет линейно, но большинство знает, что это провалы и восхождения, процесс крайне нестабильный. И когда ты подступаешься к очередной теме в SQL, Spark или любой другой в DE, ты думаешь "А как это понять, как выучить?"
И главная мысль в том, что учёба в области DE нужна постоянно. Это не покорение одной большой горы, а маленькие победы каждый день. Одна задача. Один новый паттерн, одно новое понимание.
Сегодня ты разобрался, что идет первым, WHERE или GROUP BY.
Завтра - написал нормальный JOIN с ROW_NUMBER().
Послезавтра - построил ETL в Spark, от источника до BI.
И всё это складывается (если постоянно практиковать).
Уже через какое-то время тебе говорят, что ты не просто хорошо пишешь код, а неплохо оптимизируешь запросы, иди ка подскажи!
🌱 Не пытайся обогнать всех. Просто расти каждый день по 1%. И так в любой области кстати: профессия, спорт, хобби.
Я сейчас вспоминаю python, решая каждый день по 10 задач. Беда в том, что знания быстро уходят, если их не применять. Поэтому иногда необходимо создавать для себя искусственный полигон.
👇 Расскажи, какую маленькую победу ты помнишь.
Учеба - это череда маленьких побед. Кажется, что все будет линейно, но большинство знает, что это провалы и восхождения, процесс крайне нестабильный. И когда ты подступаешься к очередной теме в SQL, Spark или любой другой в DE, ты думаешь "А как это понять, как выучить?"
И главная мысль в том, что учёба в области DE нужна постоянно. Это не покорение одной большой горы, а маленькие победы каждый день. Одна задача. Один новый паттерн, одно новое понимание.
Сегодня ты разобрался, что идет первым, WHERE или GROUP BY.
Завтра - написал нормальный JOIN с ROW_NUMBER().
Послезавтра - построил ETL в Spark, от источника до BI.
И всё это складывается (если постоянно практиковать).
Уже через какое-то время тебе говорят, что ты не просто хорошо пишешь код, а неплохо оптимизируешь запросы, иди ка подскажи!
🌱 Не пытайся обогнать всех. Просто расти каждый день по 1%. И так в любой области кстати: профессия, спорт, хобби.
Я сейчас вспоминаю python, решая каждый день по 10 задач. Беда в том, что знания быстро уходят, если их не применять. Поэтому иногда необходимо создавать для себя искусственный полигон.
👇 Расскажи, какую маленькую победу ты помнишь.
Из каждого угла на нас нападают с хард скиллами — везде требуют знания технологий, инструментов, методологий. Но давайте немного вспомним и про софт скиллы — те самые навыки, без которых все харды теряют половину своей силы.
Я начала читать книгу Фрэнка Сесно "Как узнать всё, что нужно, задавая правильные вопросы" — и в серии постов хотела бы делиться с вами короткими конспектами и личными выводами. Ведь в работе системного аналитика, да и дата инженера тоже (если он взаимодействует с бизнесом) умение правильно спрашивать, слушать и понимать услышанное очень важно.
Пару слов об авторе: Фрэнк Сесно — американский писатель, журналист, теле- и радиоведущий, лауреат премии "Эмми" и директор Школы СМИ и связей с общественностью Университета Джорджа Вашингтона. В своей книге он делится методами и приемами, как задавать вопросы так, чтобы получать действительно полезные и точные ответы — будь то в интервью, переговорах, на встрече с заказчиком или даже в обычной рабочей переписке.
Ставьте палец вверх, если эта тема вам интересна.
P.S. Параллельно (но чуть позже) подумываю взять "в конспект" и технические книжки, которые всё никак не дочитаю. Пока выбираю из старенькой, но всё ещё актуальной "Testing the Data Warehouse Practicum" и более свежей, но узконаправленной "Data Modeling with Snowflake".
#книги #фрэнксесно
Я начала читать книгу Фрэнка Сесно "Как узнать всё, что нужно, задавая правильные вопросы" — и в серии постов хотела бы делиться с вами короткими конспектами и личными выводами. Ведь в работе системного аналитика, да и дата инженера тоже (если он взаимодействует с бизнесом) умение правильно спрашивать, слушать и понимать услышанное очень важно.
Пару слов об авторе: Фрэнк Сесно — американский писатель, журналист, теле- и радиоведущий, лауреат премии "Эмми" и директор Школы СМИ и связей с общественностью Университета Джорджа Вашингтона. В своей книге он делится методами и приемами, как задавать вопросы так, чтобы получать действительно полезные и точные ответы — будь то в интервью, переговорах, на встрече с заказчиком или даже в обычной рабочей переписке.
Ставьте палец вверх, если эта тема вам интересна.
P.S. Параллельно (но чуть позже) подумываю взять "в конспект" и технические книжки, которые всё никак не дочитаю. Пока выбираю из старенькой, но всё ещё актуальной "Testing the Data Warehouse Practicum" и более свежей, но узконаправленной "Data Modeling with Snowflake".
#книги #фрэнксесно
1👍10🔥4
Зачем спрашивать? Умные вопросы делают людей умнее
Фрэнка Сесно "Как узнать всё, что нужно, задавая правильные вопросы". Ч.1
В первой главе автор раскрывает смысл книги. Вопросы — это основа мышления: мы учимся, общаемся и изобретаем с помощью вопросов. Они помогают докопаться до сути, стимулируют воображение и помогают достигать различных целей. Часто правильно заданный вопрос уже запускает процесс решения проблемы.
В последние десятилетия технологический рост ускорился, открыв человечеству новые возможности, но вместе с этим растёт и культура быстрого поглощения информации, что мешает нам углубляться в предмет изучения. Подумайте, часто ли вы уходите дальше добавления в избранное чьего-то поста? Насколько глубоко изучаете новую (и кажущуюся полезной) тему, если не горят сроки по связанной задаче?
В следующих главах мы узнаем о том, как вопросы помогают не только решать проблемы и находить решения в трудных ситуациях, но и выстраивать отношения, менять мышление, добиваться поддержки и даже вдохновлять на творчество.
Автор отмечает, что любопытство — это часть ДНК. И успешные люди умеют развивать его через вопросы и умение слушать. Здесь мне кажется идёт прямая связь любопытства и критического мышления — когда не всё принимаешь как факт и через вопросы пытаешься сделать "картинку" объемнее.
От себя добавлю, что считаю навык правильной постановки ключевым в ближайшие годы, учитывая развитие ИИ. Ведь чем точнее и осозненнее составлен промт, тем более качественный ответ мы получим в итоге. Хотя книга, конечно, не про составление промтов) написана она в 2017 году.
В следующей части разберем, что такое диагностические вопросы и зачем они нужны.
#книги #фрэнксесно
Фрэнка Сесно "Как узнать всё, что нужно, задавая правильные вопросы". Ч.1
В первой главе автор раскрывает смысл книги. Вопросы — это основа мышления: мы учимся, общаемся и изобретаем с помощью вопросов. Они помогают докопаться до сути, стимулируют воображение и помогают достигать различных целей. Часто правильно заданный вопрос уже запускает процесс решения проблемы.
В последние десятилетия технологический рост ускорился, открыв человечеству новые возможности, но вместе с этим растёт и культура быстрого поглощения информации, что мешает нам углубляться в предмет изучения. Подумайте, часто ли вы уходите дальше добавления в избранное чьего-то поста? Насколько глубоко изучаете новую (и кажущуюся полезной) тему, если не горят сроки по связанной задаче?
В следующих главах мы узнаем о том, как вопросы помогают не только решать проблемы и находить решения в трудных ситуациях, но и выстраивать отношения, менять мышление, добиваться поддержки и даже вдохновлять на творчество.
Автор отмечает, что любопытство — это часть ДНК. И успешные люди умеют развивать его через вопросы и умение слушать. Здесь мне кажется идёт прямая связь любопытства и критического мышления — когда не всё принимаешь как факт и через вопросы пытаешься сделать "картинку" объемнее.
От себя добавлю, что считаю навык правильной постановки ключевым в ближайшие годы, учитывая развитие ИИ. Ведь чем точнее и осозненнее составлен промт, тем более качественный ответ мы получим в итоге. Хотя книга, конечно, не про составление промтов) написана она в 2017 году.
В следующей части разберем, что такое диагностические вопросы и зачем они нужны.
#книги #фрэнксесно
👍5
Занималась тут оптимизацией чужого запроса. И вот вроде бы знаешь базу и хочешь её применить, но оптимизатор всегда оказывается хитрее 🙂
Среди прочего, пыталась применить одно из главных правил оптимизации — predicate pushdown. Это когда мы поднимаем условия фильтрации как можно выше, чтобы заранее уменьшить объем данных. Так вот, вынесла в cte фильтрацию одной таблички (~2GB), а в другом cte уже шла работа с отфильтрованными данными — джойны и тп. Смотрю в план запроса и вижуфигу, что снежок (snowflake) всё равно сначала сканирует таблицу целиком, затем джойнит, и только после этого фильтрует 😵 причём аналогичный сценарий на другой, но бОльшей таблице (~в 8GB) отрабатывает как надо 🥲 Видимо, размер данных или внутренняя статистика влияют на решения cost-based оптимизатора.
Никаких инсайтов в этой заметке вам не дам, но в очередной раз убеждаюсь: важно уметь читать (и понимать) планы запросов и анализировать query profile. Не всегда логичные на первый взгляд шаги оптимизации работают как ожидается. И не только от СУБД к СУБД поведение может разительно отличаться, но и даже в рамках таблиц в одном хранилище. Экспериментируйте и тестируйте на реальных данных🤖
P.S. Тем, кто хочет использовать для анализа планов гпт, всё же советую сначала самостоятельно научиться их читать, т.к. LLM всё ещё склонны к галлюцинациям. Как говорится: "на ИИ надейся, да сам не плошай".
#sql #snowflake
Среди прочего, пыталась применить одно из главных правил оптимизации — predicate pushdown. Это когда мы поднимаем условия фильтрации как можно выше, чтобы заранее уменьшить объем данных. Так вот, вынесла в cte фильтрацию одной таблички (~2GB), а в другом cte уже шла работа с отфильтрованными данными — джойны и тп. Смотрю в план запроса и вижу
Никаких инсайтов в этой заметке вам не дам, но в очередной раз убеждаюсь: важно уметь читать (и понимать) планы запросов и анализировать query profile. Не всегда логичные на первый взгляд шаги оптимизации работают как ожидается. И не только от СУБД к СУБД поведение может разительно отличаться, но и даже в рамках таблиц в одном хранилище. Экспериментируйте и тестируйте на реальных данных
P.S. Тем, кто хочет использовать для анализа планов гпт, всё же советую сначала самостоятельно научиться их читать, т.к. LLM всё ещё склонны к галлюцинациям. Как говорится: "на ИИ надейся, да сам не плошай".
#sql #snowflake
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13
Как-то в одной из моих команд появился коллега, который крайне негативно относился к GIT в DE-практиках, считая это никому не нужным усложнением 👀 и "вообще я привык один работать".
Помню, тогда меня это сильно удивило, так как всегда считала использование гита стандартом де-факто в любой разработке. Да что уж там говорить – даже при написании документации он пригождается. Когда только начинала работать SA, я даже онлайн-митап проводила для наших аналитиков — объясняла, зачем им гит в контексте написания sql-скриптов и как им пользоваться.
С тех пор, конечно, много воды утекло. Но хочется напомнить и здесь, что владение гитом – это, действительно, важный навык, который вам пригодится в реальной работе, а не просто собесы проходить. Даже если вдруг вы работаете в одиночку, git всё равно будет вашим другом. Откатиться к рабочей версии после неудачного эксперимента? Легко. Посмотреть, что вы меняли в SQL-скрипте три месяца назад? (ну это на тот случай, если вы не любитель писать доки). Без проблем. А уж когда дело доходит до командной работы — тут вообще без вариантов. В общем, если вы ещё не пользовались гитом, пора восполнить пробелы в знаниях.
Пока я очень не спешно пишу заметки в блоге🐈 , более продуктивные ребята пилят полезный контент. Например, инженерообязанный Владимир записал отличное видео, где рассказывает про гит на пальцах. Для работы этой базы более чем достаточно, а чего будет не хватать — уж нагуглите спросите у гопоты в процессе.
Не реклама, рекомендация от души)
Git — это распределённая система контроля версий (VCS), которая позволяет отслеживать изменения в файлах и совместно работать над проектами.
Помню, тогда меня это сильно удивило, так как всегда считала использование гита стандартом де-факто в любой разработке. Да что уж там говорить – даже при написании документации он пригождается. Когда только начинала работать SA, я даже онлайн-митап проводила для наших аналитиков — объясняла, зачем им гит в контексте написания sql-скриптов и как им пользоваться.
С тех пор, конечно, много воды утекло. Но хочется напомнить и здесь, что владение гитом – это, действительно, важный навык, который вам пригодится в реальной работе, а не просто собесы проходить. Даже если вдруг вы работаете в одиночку, git всё равно будет вашим другом. Откатиться к рабочей версии после неудачного эксперимента? Легко. Посмотреть, что вы меняли в SQL-скрипте три месяца назад? (ну это на тот случай, если вы не любитель писать доки). Без проблем. А уж когда дело доходит до командной работы — тут вообще без вариантов. В общем, если вы ещё не пользовались гитом, пора восполнить пробелы в знаниях.
Пока я очень не спешно пишу заметки в блоге
Не реклама, рекомендация от души)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Меня дико бесят недокументированные данные! 🤬 А это, увы, встречается слишком часто. Злит, что пункт "документация" не входит в неотъемлемую часть разработки какого-либо продукта. И вот ты подцепляешься к базе какого-то нового используемого сервиса и видишь просто кучу табличек с 100+ столбцами без какого-либо намёка какие данные там лежат. Особенно "приятно", когда нет возможности пощупать сам сервис и поэкспериментировать с данными в UI. Садишься и пытаешься описать (читай — сделать чужую работу) всё это богатство, опираясь только на свою логику и здравый смысл.
Часто бывает, что задачи на интеграцию прилетают asap, и кажется, что тебе нужно просто загрузить данные, а там уж аналитики разберутся. Но терпеть не могу, когда в моём хранилище что-то лежит без описания👿 поэтому в любом случае стараюсь заполнить метаданные по максимуму. Да, это занимает дополнительное время, но зато потом не приходится каждый раз заново разбираться в структуре и объяснять коллегам, что означает загадочное поле "fl_xyz_2".
Понимаю, что разработчики работают в условиях жёстких дедлайнов, но отсутствие доков — это техдолг, который рано или поздно аукнется. А сейчас, когда все активно используют ИИ, хорошие=правильные описания становятся ещё важнее, тем более когда мы говорим о сложных продуктах и запутанных взаимосвязях. Без доков даже самый умный ИИ будет строить уверенные предположения, которые чаще всего окажутся ошибочными. Опять же, разработчикам в эпоху ИИ накидать описания к полям и таблицам при наличии ТЗ к проекту и доступом к коду — вполне реально и быстро. Но пока это мне приходится использовать ИИ в паре с анализом, логикой и гаданием на кофейной гуще.
Когда-то я хотела стать техписом именно из-за того, что мне нравится всё описывать и структурировать, но решила, что совсем без технарской работы будет скучно💻 а теперь совмещаю и то, и другое.
А вас какие боли при работе с данными?🙃
#документация
Часто бывает, что задачи на интеграцию прилетают asap, и кажется, что тебе нужно просто загрузить данные, а там уж аналитики разберутся. Но терпеть не могу, когда в моём хранилище что-то лежит без описания
Понимаю, что разработчики работают в условиях жёстких дедлайнов, но отсутствие доков — это техдолг, который рано или поздно аукнется. А сейчас, когда все активно используют ИИ, хорошие=правильные описания становятся ещё важнее, тем более когда мы говорим о сложных продуктах и запутанных взаимосвязях. Без доков даже самый умный ИИ будет строить уверенные предположения, которые чаще всего окажутся ошибочными. Опять же, разработчикам в эпоху ИИ накидать описания к полям и таблицам при наличии ТЗ к проекту и доступом к коду — вполне реально и быстро. Но пока это мне приходится использовать ИИ в паре с анализом, логикой и гаданием на кофейной гуще.
Когда-то я хотела стать техписом именно из-за того, что мне нравится всё описывать и структурировать, но решила, что совсем без технарской работы будет скучно
А вас какие боли при работе с данными?
#документация
Please open Telegram to view this post
VIEW IN TELEGRAM
😢6💯5✍1
В последние пару недель встречаю очень много постов про то, как лето проходит мимо, и вспоминаю свои такие же периоды в жизни. Но в этом году моё лето настолько в стиле life, что balance совсем не соблюдается
Моё замедление пришло через совершенно неожиданные вещи. Зимой мы переехали в квартиру побольше и к лету я решила чуть оживить балкон зеленью, а в итоге всерьез увлеклась комнатными растениями. Теперь каждое утро начинается с чашечки кофе и обхода владений
Много лет я жила в страхе "не успеть" и с желанием "бежать-развиваться", чтобы догнать ребят из инфо-поля. Казалось, что если остановишься хоть на день — и всё, отстанешь навсегда. Но чем больше ты развиваешься, тем больше растёт и развивается твоё инфо-поле, и этой гонке нет конца. Мне кажется, что это путь к выгоранию, насколько бы интересно тебе не было.
Хотя, конечно, и у замедлания есть обратная сторона. Во-первых, к размеренности слишком легко привыкнуть и вот уже мозг начинает лениться и тяжелее въезжает даже в обычные рутинные процессы. Появляются ошибки, сама грешна. А во-вторых, порой из замедления сложно выйти без встряски. Но лично у меня чаще всего бывает наоборот. Наступает момент, когда устаёшь от размеренности и с новыми силами "врываешься" в любимые активные дела. И, как будто бы, жизнь показывает: позволяя себе перерывы, в итоге мы становимся только продуктивнее. В конце концов, что такое пара месяцев в рамках множества рабочих лет?
А как проходит ваше лето? Боитесь отстать от IT-гонки или позволяете себе отдых?
#life
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4😎2
А помнишь как всё начиналось..
Читала на днях в канале ETL Kitchen как Руслан вспоминал о своём первом сайте, написанном в школьные годы. И в голове сразу замелькали собственные воспоминания.
Моё первое касание ПК было не с рождения, как у зумеров😅 в школе долго не было информатики, и когда я впервые села за компьютер лет в 11–12, то узнала что такое волшебство и любовь с первого взгляда 🌈 Через год случился первый кодинг на Delphi — второе большое "ВАУ, я это могу!". Из всех изучаемых направлений именно программирование запало в душу больше всего.
После этого были робкие шаги в html и экзаменационный проект по истории — сайт о родном городе на html+css. С ним я впоследствии победила на каком-то городском конкурсе и выиграла музыкальный центр и пару карточек доступа в интернет (да, я из тех мамонтов, которые подключались к интернету под звуки модема🎵 ).
Третье ВАУ случилось в университете на практиках поassembler СУБД — когда я написала свои первые SQL-запросы. Меня восхитило, как просто можно оперировать данными по сравнению с excel.
С тех пор много воды утекло и разные технологии были "потроганы". Я не стала великом программистом, код периодически трогаю и люблю в нём ковыряться, но не настолько, чтобы заниматься исключительно этим. Не стала сисадмином и периодически плаваю в задачах с сетями. Я не стала и аналитиком данных. Но вот системный анализ в хранилищах данных люблю всей душой именно за то, что он позволяет сочетать в себе аналитику с творчеством и при этом не только писать код, но и разбираться с тем, что и зачем нужно людям.
А с чего начинали вы? Каким был ваш первый ВАУ?
P.S. нарыла фото первого системника. Но история про FreeBSD и иже с ним уже не в рамках этого поста
#life
Читала на днях в канале ETL Kitchen как Руслан вспоминал о своём первом сайте, написанном в школьные годы. И в голове сразу замелькали собственные воспоминания.
Моё первое касание ПК было не с рождения, как у зумеров
После этого были робкие шаги в html и экзаменационный проект по истории — сайт о родном городе на html+css. С ним я впоследствии победила на каком-то городском конкурсе и выиграла музыкальный центр и пару карточек доступа в интернет (да, я из тех мамонтов, которые подключались к интернету под звуки модема
Третье ВАУ случилось в университете на практиках по
С тех пор много воды утекло и разные технологии были "потроганы". Я не стала великом программистом, код периодически трогаю и люблю в нём ковыряться, но не настолько, чтобы заниматься исключительно этим. Не стала сисадмином и периодически плаваю в задачах с сетями. Я не стала и аналитиком данных. Но вот системный анализ в хранилищах данных люблю всей душой именно за то, что он позволяет сочетать в себе аналитику с творчеством и при этом не только писать код, но и разбираться с тем, что и зачем нужно людям.
А с чего начинали вы? Каким был ваш первый ВАУ?
P.S. нарыла фото первого системника. Но история про FreeBSD и иже с ним уже не в рамках этого поста
#life
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11⚡6 3👍1
Слишком надолго я пропала и серия постов про книгу Фрэнка Сесно "Как узнать всё, что нужно, задавая правильные вопросы" осталась неопубликованной.
Поэтому давайте кратко вспомним зачем вообще нам её читать, а затем продолжим.
Вопросы — это основа того, как мы работаем. Мы учимся, общаемся, находим решения через вопросы. Правильно заданный вопрос часто уже сам по себе запускает решение проблемы. Особенно это важно для нас с вами, аналитиков и инженеров, людей взаимодействуют с бизнесом — ведь важно не просто писать код или строить архитектуру, но и понимать, что на самом деле нужно людям.
Сесно показывает, что успешные люди отличаются не только знаниями, но и умением слушать и спрашивать. Любопытство и критическое мышление — это то, что позволяет нам не принимать всё на веру, а углубляться в суть.
Предыдущие посты про эту книгу ищите по тегу #фрэнксесно. А я продолжу со следующей главы "Диагностические вопросы".
#книги
Поэтому давайте кратко вспомним зачем вообще нам её читать, а затем продолжим.
Вопросы — это основа того, как мы работаем. Мы учимся, общаемся, находим решения через вопросы. Правильно заданный вопрос часто уже сам по себе запускает решение проблемы. Особенно это важно для нас с вами, аналитиков и инженеров, людей взаимодействуют с бизнесом — ведь важно не просто писать код или строить архитектуру, но и понимать, что на самом деле нужно людям.
Сесно показывает, что успешные люди отличаются не только знаниями, но и умением слушать и спрашивать. Любопытство и критическое мышление — это то, что позволяет нам не принимать всё на веру, а углубляться в суть.
Предыдущие посты про эту книгу ищите по тегу #фрэнксесно. А я продолжу со следующей главы "Диагностические вопросы".
#книги
❤8✍2🔥2
Диагностические вопросы: когда что-то пошло не так
Фрэнка Сесно "Как узнать всё, что нужно, задавая правильные вопросы". Ч.2
Продолжаем перекладывать прочитанное на наши реалии.
Представьте: к вам приходит бизнес и жалуется, что "отчёт работает медленно" или "у вас цифры неправильные". Знакомо? Первая реакция — бежать чинить. Но стоп. А в чём собственно проблема? Может, "неправильные цифры" — это просто другая методика расчёта или они вообще смотрели не на ту витрину (ну скажите, бывало же)?
Итак, во второй главе автор фокусируется на диагностических вопросах. С их помощью мы формулируем проблему, прежде чем предпринимать какие-либо действия:
- Что не так?
- Откуда нам это известно?
- Чего мы не видим?
- Что нужно делать?
Как врач определяет болезнь по симптомам, так и мы должны сначала узнать, что именно пошло не так, докопаться до истоков.
Автор выделяет пять принципов эффективного диагностирования:
1. определите симптомы и детали (от общего к частному)
2. не бойтесь неприятных ответов
3. изучите историю проблемы
4. спрашивайте снова и снова у разных источников
5. обращайтесь к специалистам, но не доверяйте им😉 — просите объяснить и не думайте, что они всегда правы.
Мне кажется, в работе с данными диагностические вопросы — наш первый помощник при любой проблеме. Когда нам говорят что "что-то не работает", стоит спросить: а что именно? в какой витрине и каком разрезе смотрели? когда заметили впервые? а вчера/на прошлой неделе работало? что изменилось — может был новый релиз или источник данных обновился? а как вообще должно работать по вашему мнению? Суть — узнать как можно больше подробностей и получить объемную картинку
Как я уже писала когда-то "не бывает глупых вопросов", бывает мало информации.
Ну и, конечно, в нашем случае, не всегда нужно задавать вопросы заказчику, очень часто — это вопросы в первую очередь себе.
Очевидно, что умение задавать диагностические вопросы, слушать и доверять своему опыту пригодится везде — и в работе с данными, и в жизни.
Следующий уровень — построение стратегии. Об этом в следующей части книги.
#книги #фрэнксесно
Фрэнка Сесно "Как узнать всё, что нужно, задавая правильные вопросы". Ч.2
Продолжаем перекладывать прочитанное на наши реалии.
Представьте: к вам приходит бизнес и жалуется, что "отчёт работает медленно" или "у вас цифры неправильные". Знакомо? Первая реакция — бежать чинить. Но стоп. А в чём собственно проблема? Может, "неправильные цифры" — это просто другая методика расчёта или они вообще смотрели не на ту витрину (ну скажите, бывало же)?
Итак, во второй главе автор фокусируется на диагностических вопросах. С их помощью мы формулируем проблему, прежде чем предпринимать какие-либо действия:
- Что не так?
- Откуда нам это известно?
- Чего мы не видим?
- Что нужно делать?
Как врач определяет болезнь по симптомам, так и мы должны сначала узнать, что именно пошло не так, докопаться до истоков.
Автор выделяет пять принципов эффективного диагностирования:
1. определите симптомы и детали (от общего к частному)
2. не бойтесь неприятных ответов
3. изучите историю проблемы
4. спрашивайте снова и снова у разных источников
5. обращайтесь к специалистам, но не доверяйте им
Мне кажется, в работе с данными диагностические вопросы — наш первый помощник при любой проблеме. Когда нам говорят что "что-то не работает", стоит спросить: а что именно? в какой витрине и каком разрезе смотрели? когда заметили впервые? а вчера/на прошлой неделе работало? что изменилось — может был новый релиз или источник данных обновился? а как вообще должно работать по вашему мнению? Суть — узнать как можно больше подробностей и получить объемную картинку
Как я уже писала когда-то "не бывает глупых вопросов", бывает мало информации.
Ну и, конечно, в нашем случае, не всегда нужно задавать вопросы заказчику, очень часто — это вопросы в первую очередь себе.
Очевидно, что умение задавать диагностические вопросы, слушать и доверять своему опыту пригодится везде — и в работе с данными, и в жизни.
Следующий уровень — построение стратегии. Об этом в следующей части книги.
#книги #фрэнксесно
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4
"Фидонет — сеть, которую помнят не все"
или "Мамонты снова в деле"
Я успела чуть-чуть застать эпоху Фидонета. Для тех, кто не в курсе: во времена, когда с интернетом было не очень, существовала такая сеть. Идея простая, но гениальная: ты звонил по модему на номер одного из BBS — компьютер какого-нибудь энтузиаста, обычно стоящего у него дома. Эти отдельные компьютеры (узлы) были связаны друг с другом в одну сеть. После подключения тебя встречал чёрный экран, текстовый интерфейс, ASCII-арты — и, представляете, этого было достаточно. Никаких кнопок, лайков или рекомендаций, только чистый текст и люди за ним.
Главное в Фидо были эхоконференции — тематические дискуссии, где люди писали друг другу. Общение происходило асинхронно: сообщения собирались и передавались между узлами по расписанию, чаще всего ночью. Ответы могли прийти через несколько часов или даже на следующий день — и в этом тоже было своё очарование. Была и личная почта — пишешь конкретному человеку и ждёшь, когда придёт ответ, как настоящего письма.
Атмосфера в Фидо была особенная. Люди действительно общались — с иронией, шутками, иногда с флеймом, но как-то по делу. Без рекламы, спама и ии-ботов. Знакомились, спорили, дружили, устраивали офлайн-встречи. При этом всё это держалось на чистом энтузиазме и модемном писке в трубке.
Потом интернет стал доступнее и быстрее, появились сайты, форумы, чаты, а позже и соцсети. Фидонет жил ещё какое-то время по инерции, но постепенно угас. Ведь всё когда-то становится лишь приятным воспоминанием.
Теперь мы общаемся в телеграм-каналах и чатах, пересылаем стикеры вместо ASCII-арта и пишем посты вместо эхоконференций. Забавно, как многое изменилось — и как мало, на самом деле. Люди всё так же ищут друг друга в сети. Интересно, лет через двадцать кто-нибудь так же напишет: «А помните, как мы сидели в телеге?..»
#life
или "Мамонты снова в деле"
Я успела чуть-чуть застать эпоху Фидонета. Для тех, кто не в курсе: во времена, когда с интернетом было не очень, существовала такая сеть. Идея простая, но гениальная: ты звонил по модему на номер одного из BBS — компьютер какого-нибудь энтузиаста, обычно стоящего у него дома. Эти отдельные компьютеры (узлы) были связаны друг с другом в одну сеть. После подключения тебя встречал чёрный экран, текстовый интерфейс, ASCII-арты — и, представляете, этого было достаточно. Никаких кнопок, лайков или рекомендаций, только чистый текст и люди за ним.
Главное в Фидо были эхоконференции — тематические дискуссии, где люди писали друг другу. Общение происходило асинхронно: сообщения собирались и передавались между узлами по расписанию, чаще всего ночью. Ответы могли прийти через несколько часов или даже на следующий день — и в этом тоже было своё очарование. Была и личная почта — пишешь конкретному человеку и ждёшь, когда придёт ответ, как настоящего письма.
Атмосфера в Фидо была особенная. Люди действительно общались — с иронией, шутками, иногда с флеймом, но как-то по делу. Без рекламы, спама и ии-ботов. Знакомились, спорили, дружили, устраивали офлайн-встречи. При этом всё это держалось на чистом энтузиазме и модемном писке в трубке.
Потом интернет стал доступнее и быстрее, появились сайты, форумы, чаты, а позже и соцсети. Фидонет жил ещё какое-то время по инерции, но постепенно угас. Ведь всё когда-то становится лишь приятным воспоминанием.
Теперь мы общаемся в телеграм-каналах и чатах, пересылаем стикеры вместо ASCII-арта и пишем посты вместо эхоконференций. Забавно, как многое изменилось — и как мало, на самом деле. Люди всё так же ищут друг друга в сети. Интересно, лет через двадцать кто-нибудь так же напишет: «А помните, как мы сидели в телеге?..»
#life
👍6❤3 1
Стратегические вопросы: как видеть общую картину
Фрэнк Сесно "Как узнать всё, что нужно, задавая правильные вопросы". Ч.3
Когда мы разбираем требования к новой витрине или проектируем архитектуру хранилища, легко застрять в деталях — какие таблицы нам нужны, какие между ними связи, какая будет гранулярность. Но часто именно отсутствие стратегического взгляда приводит к тому, что через полгода приходится переделывать всю модель, потому что мы "забыли" уточнить долгосрочные планы бизнеса или не учли масштабирование.
В третьей главе автор показывает, что стратегические вопросы — это не роскошный максимум для топ-менеджеров, а базовый минимум для любого, кто принимает решения с долгосрочными последствиями.
Фрик Вермюлен из Лондонской школы бизнеса определяет стратегическое планирование как способность принимать сложные решения в условиях неопределённости, которые будут иметь значимые долгосрочные последствия.
Например (адаптируем под нашу реальность): заказчик просит "быстро сделать отчёт по продажам". Можно молча набросать витрину за пару часов, а можно сначала задать (в том числе себе) стратегические вопросы: как эта витрина впишется в общую архитектуру? что ещё может понадобиться бизнесу в ближайшие месяцы — может, сразу заложить расширение? насколько действительно важна скорость обновления? как будут расти объёмы данных и выдержит ли решение нагрузку через год? ..
Автор сравнивает стратегический подход со спутником, который фотографирует Землю из космоса: сначала смотрим на всю картину целиком, потом приближаем и разбираемся в деталях.
Сесно описывает такие этапы работы со стратегическими вопросами:
- рассмотрите общую картину (определите задачу и имеющиеся возможности)
- осознайте, что предстоит сделать и с какими сложностями столкнуться
- разработайте план, определив тактические ходы
- проверьте себя, внимательно изучив план на наличие слабых мест и альтернативных решений
- определите параметры успешного результата
Один из важных уроков этой главы: необходимо настаивать на том, чтобы сложные стратегические вопросы были заданы. Даже если это неудобно. Даже если кажется, что все и так всё понимают.
Мне кажется, в работе с данными стратегические вопросы особенно важны перед крупными проектами (новыми интеграциями, внедрением новых инструментов и тп). Начиная, стоит спросить себя:
- Какую долгосрочную проблему мы решаем?
- Как это решение впишется в общую архитектуру через год?
- Рассмотрели ли мы все альтернативы?
- Что для нас будет успехом и как мы его измерим?
- Какие риски мы готовы принять, а какие нет?
Эти вопросы помогут не утонуть в бесконечных правках и "а давайте ещё вот это добавим". Они держат в голове общую картину и понимание куда мы идём и зачем.
В следующей части автор расскажет об эмпатических вопросах — тех, что помогают понять людей.
#книги #фрэнксесно
Фрэнк Сесно "Как узнать всё, что нужно, задавая правильные вопросы". Ч.3
Когда мы разбираем требования к новой витрине или проектируем архитектуру хранилища, легко застрять в деталях — какие таблицы нам нужны, какие между ними связи, какая будет гранулярность. Но часто именно отсутствие стратегического взгляда приводит к тому, что через полгода приходится переделывать всю модель, потому что мы "забыли" уточнить долгосрочные планы бизнеса или не учли масштабирование.
В третьей главе автор показывает, что стратегические вопросы — это не роскошный максимум для топ-менеджеров, а базовый минимум для любого, кто принимает решения с долгосрочными последствиями.
Фрик Вермюлен из Лондонской школы бизнеса определяет стратегическое планирование как способность принимать сложные решения в условиях неопределённости, которые будут иметь значимые долгосрочные последствия.
Например (адаптируем под нашу реальность): заказчик просит "быстро сделать отчёт по продажам". Можно молча набросать витрину за пару часов, а можно сначала задать (в том числе себе) стратегические вопросы: как эта витрина впишется в общую архитектуру? что ещё может понадобиться бизнесу в ближайшие месяцы — может, сразу заложить расширение? насколько действительно важна скорость обновления? как будут расти объёмы данных и выдержит ли решение нагрузку через год? ..
Автор сравнивает стратегический подход со спутником, который фотографирует Землю из космоса: сначала смотрим на всю картину целиком, потом приближаем и разбираемся в деталях.
Сесно описывает такие этапы работы со стратегическими вопросами:
- рассмотрите общую картину (определите задачу и имеющиеся возможности)
- осознайте, что предстоит сделать и с какими сложностями столкнуться
- разработайте план, определив тактические ходы
- проверьте себя, внимательно изучив план на наличие слабых мест и альтернативных решений
- определите параметры успешного результата
Один из важных уроков этой главы: необходимо настаивать на том, чтобы сложные стратегические вопросы были заданы. Даже если это неудобно. Даже если кажется, что все и так всё понимают.
Мне кажется, в работе с данными стратегические вопросы особенно важны перед крупными проектами (новыми интеграциями, внедрением новых инструментов и тп). Начиная, стоит спросить себя:
- Какую долгосрочную проблему мы решаем?
- Как это решение впишется в общую архитектуру через год?
- Рассмотрели ли мы все альтернативы?
- Что для нас будет успехом и как мы его измерим?
- Какие риски мы готовы принять, а какие нет?
Эти вопросы помогут не утонуть в бесконечных правках и "а давайте ещё вот это добавим". Они держат в голове общую картину и понимание куда мы идём и зачем.
В следующей части автор расскажет об эмпатических вопросах — тех, что помогают понять людей.
#книги #фрэнксесно
❤4🔥4
Знаете, в чём разница между знаниями, умениями и навыками? Вот вам отличная иллюстрация с котиками, которая объясняет это лучше любых определений 😊 (да-да, нагло переработанная картинка с лошадью)
Сколько бы курсов по ... (подставь нужное) мы ни проходили, сколько бы книг ни читали, мы остаёмся на уровне милого котика из чёрточек до тех пор пока не начинаем что-то делать. Делать что? Брать и писать код, проектировать витрины, строитьзвездолёты пайплайны, ... Раз за разом пробуя полученные знания применять.
Знания — это базовый минимум. Прочитал статью по Airflow? Прошёл курс по Spark? Изучил паттерны дата-моделирования? Отлично! Но пока сам не откроешь IDE и не напишешь первые Х строк, ты так и не поймёшь, как всё работает на практике. В век ИИ и легкодоступности знания (как набор фактов) так вообще несколько обесценились.
Умения — появляются с практикой. Когда ты уже что-то делаешь. Да, может 70% временигуглишь болтаешь с gpt, совершаешь тысячи нелепых ошибок и (вдруг) постоянно заглядываешь в документацию. Раз за разом натыкаясь на проблемы, ты учишься их решать, тем самым выходя за рамки "знаний" из книжки или курса. То есть на этом этапе ты уже сталкиваешься с проблемами и заставляешь мозг думать. Если выйти за рамки кода, то здесь также помогает обсуждение и проговаривание в группе и с экспертами. Важно заставить мозг не просто принимать и запоминать факты, но и применять их, изучать и смотреть под разными углами.
А вот навыки — это когда всё отточено до автоматизма. Видишь задачу и уже предполагаешь варианты решения, например, знаешь, где могут быть узкие места запроса ещё до его запуска. Проектируешь модели данных с заделом на будущее, так что не придётся переделывать через месяц. То, что раньше заняло бы день, решаешь за час. Просто потому что руки уже знают, что делать. Как почистить зубы перед сном)
Чтобы знания и умения превратились в навык, нужно пробовать снова и снова, пока это не станет привычным действием (снова это набившее оскомину Повторение — мать учения). Навык появляется только со временем и практикой (и развитием критического мышления, конечно же). И только с приходом навыков мы выходим на путь профессионализма↗️
Тут есть и задел на размышления, все ли умения превращаются в навыки и все ли навыки "качественные". Ведь можно оттачить до автоматизма и некачественные действия, считая их правильными😈 На мой взгляд корень тут в том, что строить свою базу в любом случае нужно на знаниях. Постепенно углубляя их, чтобы понимать не только HOW, но и WHY. То есть обучение — это не прямая, а циклический бесконечный процесс.
#размышления
Сколько бы курсов по ... (подставь нужное) мы ни проходили, сколько бы книг ни читали, мы остаёмся на уровне милого котика из чёрточек до тех пор пока не начинаем что-то делать. Делать что? Брать и писать код, проектировать витрины, строить
Знания — это базовый минимум. Прочитал статью по Airflow? Прошёл курс по Spark? Изучил паттерны дата-моделирования? Отлично! Но пока сам не откроешь IDE и не напишешь первые Х строк, ты так и не поймёшь, как всё работает на практике. В век ИИ и легкодоступности знания (как набор фактов) так вообще несколько обесценились.
Умения — появляются с практикой. Когда ты уже что-то делаешь. Да, может 70% времени
А вот навыки — это когда всё отточено до автоматизма. Видишь задачу и уже предполагаешь варианты решения, например, знаешь, где могут быть узкие места запроса ещё до его запуска. Проектируешь модели данных с заделом на будущее, так что не придётся переделывать через месяц. То, что раньше заняло бы день, решаешь за час. Просто потому что руки уже знают, что делать. Как почистить зубы перед сном)
Чтобы знания и умения превратились в навык, нужно пробовать снова и снова, пока это не станет привычным действием (снова это набившее оскомину Повторение — мать учения). Навык появляется только со временем и практикой (и развитием критического мышления, конечно же). И только с приходом навыков мы выходим на путь профессионализма
Тут есть и задел на размышления, все ли умения превращаются в навыки и все ли навыки "качественные". Ведь можно оттачить до автоматизма и некачественные действия, считая их правильными
#размышления
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9⚡3 1