Дата аналитикс
1.9K subscribers
206 photos
21 videos
3 files
45 links
Здесь про IT не душным языком, Data Science, аналитику и жизнь внутри бигтехов

• истории из [ жизни | работы | карьеры ]
• тестовые из бигтехов
• полезные рекомендации и советы
• учебные материалы

Сотрудничество @Sounds_like_a_plan

Inst: chto_za_nikita
Download Telegram
Сравнение синтаксиса [ Pandas | Polars | PySpark] ч.2

Ранее на канале мы уже сравнивали синтаксис этих инструментов:

Сегодня посмотрим на более продвинутые методы в данных инструментах
👍962❤‍🔥1
Шардирование и партиционирование

Оооочень часто эти понятия путают. Давайте разберемся, в чем же отличие!

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

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

В чем разница?

• Партиционирование — это способ оптимизации внутри одного хранилища данных, когда данные делятся на части, но остаются в одной таблице.

• Шардирование — это распределение данных между разными физическими серверами, чтобы избежать перегрузки одного сервера при большом объеме данных.

Закрепим:
Шардирование обычно используется в масштабируемых системах с большими объемами данных, тогда как партиционирование чаще применяется для оптимизации запросов в одной базе.
👍224🔥1
BI инструменты

В аналитике, в большинстве своем необходим навык построения дашбордов.

"А где получить навыки работы с ними?"

1. Superset
• легко настраивается, приятный туториал для новичков внутри приложения
• совместимость с Python: интеграция с Python требует дополнительных настроек, но возможна, что удобно для кастомного анализа (Привет Jinja...)
• популярен на рынке

2. Tableau
• легко настраивается
• совместимость с Python: интеграция с Python через Tableau Extensions API, что добавляет гибкость для анализа данных
• интуитивный интерфейс: идеален для пользователей с небольшим опытом в визуализации.
• популярен на рынке

3. Power BI
• интеграция с продуктами Microsoft: идеально для пользователей Microsoft Office.
• интеграция с Python и R
• менее популярен на рынке

4. Datalens
• интеграция с Яндекс Облаком: легко получает данные, хранящиеся в экосистеме Яндекса.
• поддержка Python: пока ограничена, но доступно взаимодействие с некоторыми скриптами через API.
• подходит для компаний с локальными данными: особенно удобен для тех, кто пользуется Яндекс.Облаком.
• набирает популярность на рынке

Все перечисленные на мой взгляд инструменты являются:
• актуальными и востребованными
• бесплатными
• поддерживают подключение данных из: PostgreSQL, MySQL, CSV и XLSX
❤‍🔥11🙏4
Способы оптимизирования запросов

Один из любимых вопросов от работодателей на собеседовании.

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

1. Уменьшение объема данных
• Используйте SELECT только нужные столбцы, вроде база, но так и тянет многих обычно нажать на любимую всеми звездочку.
• Ограничьте выборку по строкам, используя фильтры и лимиты.

2. Оптимизация функций и выражений
• Как можно меньшее использование LIKE, SUBSTRING, и преобразования типов, особенно в WHERE-условиях.
• Эти операции очень тяжелые в обработке и могут замедлить запрос (особенно с большими данными).

3. Выбор правильных индексов
• Индексирование наиболее используемых полей (часто используемых в WHERE, JOIN, и ORDER BY).
• Индексы ускоряют доступ к данным, но важно понимать меру и не лепить их 50 штук.

4. Агрегации и подзапросы
• Для оптимизации избегайте агрегаций и подзапросов, когда это возможно.
• Вместо них старайтесь использовать JOIN и WITH (CTE) для промежуточных результатов, если они приводят к меньшему объему данных на выходе.

5.Оптимизация JOIN и порядка соединений
• Порядок JOIN-ов важен: сначала соединяйте таблицы с меньшим количеством строк, чтобы уменьшить объем промежуточных данных.
• По возможности, оптимизируйте порядок с учетом индексированных полей.

6. Анализ планов выполнения (EXPLAIN)
• Используйте EXPLAIN для понимания, как база данных выполняет запрос.
• Смотрите на узкие места, как последовательность сканирования таблиц, индексы, и перезаписывайте запрос при необходимости.
• Поддерживается в: PostgreSQL, MySQL, SQL Server, Oracle (храни его господь) и другие...

7. Кэширование результатов
• Если один и тот же запрос крутите 10 раз, рассмотрите кэширование результатов в материальном представлении (materialized view) или временной таблице, чтобы не рассчитывать их каждый раз заново.

8. Использование партицирования (Partitioning)
• Разделение больших таблиц на разделы (partitioning) по датам или регионам (или другому подходящему полю)
• Позволяет базе данных обращаться только к нужному разделу, ускоряя запросы.

9. Выбор правильного типа данных
• Использование INT вместо BIGINT или VARCHAR(100) вместо TEXT экономит место и снижает объем данных, с которыми работают запросы, ускоряя их выполнение.

Очень важный поинт:
Кириллица кодируется 2мя байтами, в отличии от латиницы, то есть varchar(10) может содержать 5 ру символов, либо 10 en символов


Какие способы вы бы еще добавили сюда?
❤‍🔥25👍145🔥1🫡1
Квиз! Какое [ min | max ] количество строк вернет CROSS JOIN для таблицы в 3 и 4 записи? (дублей нет)
Anonymous Quiz
6%
[ 0 | 3 ]
4%
[ 3 | 4 ]
16%
[ 3 | 12 ]
74%
[ 12 | 12 ]
👍6
Квиз! Какое [ min | max ] количество строк вернет INNER JOIN для таблицы в 3 и 4 записи? (Дублей нет)
Anonymous Quiz
19%
[ 0 | 4 ]
40%
[ 0 | 3 ]
19%
[ 3 | 4 ]
22%
[ 3 | 3 ]
👍4
Квиз! Какое [ min | max ] количество строк вернет ANTI LEFT для таблицы в 3 и 4 записи? (Дублей нет)
Anonymous Quiz
34%
[ 0 | 3 ]
37%
[ 0 | 4 ]
13%
[ 3 | 3 ]
17%
[ 3 | 4 ]
👍3
HDFS (Hadoop Distributed File System) и его компоненты

Давайте разберемся, что же это за популярный инструмент и почему с его владением быстрее берут на работу.

HDFS — это распределенная файловая система, которая позволяет хранить и обрабатывать огромные объемы данных, разделяя их на блоки и распределяя по кластерам.

Основные компоненты:

1. YARN (Yet Another Resource Negotiator)
Это система управления ресурсами в Hadoop. YARN отвечает за распределение вычислительных мощностей между различными задачами. Он управляет ресурсами кластера и следит за тем, чтобы каждая задача получила нужное количество процессорных и оперативных ресурсов.

2. NameNode
Это "голова" системы HDFS, которая управляет всей файловой системой. NameNode отвечает за метаданные — информацию о том, где хранится каждый блок данных. Он также следит за здоровьем DataNode'ов и решает, куда переместить данные при сбоях.

3. DataNode
DataNode — это рабочие узлы, которые хранят фактические данные. Каждый DataNode получает инструкции от NameNode и выполняет операции по хранению, чтению и записи данных. Если один DataNode выходит из строя, система автоматически восстанавливает данные, используя реплики на других узлах.

Владение HDFS и его компонентами — это навык, который быстро выделит вас на фоне других кандидатов, так как системы Big Data продолжают набирать популярность во многих компаниях!
👍136💅3🤯2❤‍🔥1
Достигаторство и быстрый рост.

Сейчас модно быть продуктивным и показывать какой ты классн[ый | ая]
Но не все задумываются, что за этим скрывается.

Часть людей в IT (и не только) действительно добивается успеха потому что искренне любят это дело и просто спокойно развиваются. Но не подавляющее большинство.

- Многие из этих людей страдали и страдают от синдрома самозванца
- Кто-то был недолюблен в детстве или в отношениях и пытается доказать, что он более чем способный. Закрывая свои психологические потребности.
- Кто-то подвержен влиянию соц. сетей и если видит, что кто-то работает и развивается, начинает делать также - так работает отрицательная мотивация (Если я не сделаю что-то, я буду хуже других)
- Кто-то добивался всего начиная с общепита или разгребая проблемы семьи и родных
- Кому-то повезло или помогли знакомства
- А кто-то выгрызал себе путь с достаточно раннего возраста, гоняя по олимпиадам и соревнуясь в вечно конкурентной среде с такими же умными и перспективными ребятами.

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

Я рос в достаточно бедной семье и не самой крепкой. Чуть не пошел по другой дороге (хотел после школы пойти работать экспертом-криминалистом) Окончательно нашел себя, когда было 22.

Моей мотивацией в свое время было: не будешь работать над собой и своими будущим - тебе будет пиздец и этот мир съест тебя.

Кого-то похожие ситуации закаляют, а кого-то выбивают из колеи и держат в стрессе.

Не страшно не найти себя в 20, страшно понять, что ты себя не нашел к 35-40.

Я считаю что важно понимать, почему ты продуктивный и быстро всего добиваешься, так ТЫ будешь владеть ситуацией, а не она тобой. Главное не обманывать себя)

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

Что вы думаете по этому поводу?
41👍14❤‍🔥8🤔3🗿2
Опыт взаимодействий с [ коллегами | руководителями ]

Очень хочу разогнать именно эту тему.

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

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

С чем уже успел столкнуться я?

1. Собес. Тимлид общается на чистом мате на первой же встрече со мной. Я не неженка и тоже иногда матерюсь, но такое поведение на старте - ред флаг. Забавно что он же мне сказал: если хочешь расти в команде - надо выделяться, заниматься проактивностью. Проактивность = ты будешь оставаться после работы, чтобы дай бог на перфоманс ревью тебя повысили на 10%. Думаю тут и комментарии не нужны.

2. Собес в крупный банк. Рук спрашивает третьим вопросом при 4х людях: "ты купил военник или собираешься покупать?" Я отказался отвечать на этот вопрос, раз он их интересует в первую очередь. Мне сразу прилетело: думаю мы не сработаемся)))) Почти сразу мы закончили интервью.

3. Общение с руком из другого отдела. Мне необходима была его [ консультация | помощь ]. После того как я представился был диалог:
- Ты знаешь кто я?
- да, знаю
- Ты думаешь Я, БУДУ ТРАТИТЬ НА ТЕБЯ СВОЕ ВРЕМЯ? (Важное уточнение, вопрос касался его бизнес юнита, я не мог не спросить его мнения) Дальше не вижу смысл описывать диалог.
Даже если ты тимлид, общаться так с человеком - непозволительно ни в одной ситуации. Как только у человека начинает развиваться синдром вахтера - это знак бить тревогу.

4. Собес. Общение с юнит хедом. Мужик преподает в ШАДе параллельно. Маааксимально добрейший и светлый человек. Задавал грамотные вопросы, где-то помогал с ответами и наводил на верные мысли. Вот просто по таким людям видно, у него в жизни все хорошо и работу он свою любит. И общается наравне. Огромный респект и лайк таким людям.

5. Один из моих руков был безумно классным. Мало того, что общение было всегда на одной волне (казалось бы уже все должны к этому прийти, но нет) Было максимальное понимание бизнесовой составляющей и когда приходили заказчики, половина задач отсеивалась и всякой дичью не грузили членов команды.
Мне безумно импонирует, когда твой capacity адекватно оценивают и дают только годные задачи, которые не окажутся бесполезными.

А с какими вы ситуациями сталкивались на работе?

Если вам понравился этот пост и вам интересно было читать, поставьте 👀, чтобы я понимал)
👀7916
Квиз! Обязательные омпоненты Hadoop Cluster-а
Anonymous Quiz
25%
[ NameNode, DataNode ]
59%
[ NameNode | DataNode | YARN ]
16%
[ NameNode | DataNode | YARN | Zookeeper ]
Квиз! Оптимизация запроса в виде разделения таблицы на логические части это:
Anonymous Quiz
25%
Шардировние
75%
Партицирование
Квиз! Супер база, 2024 + Null?
Anonymous Quiz
18%
2024
54%
Null
28%
Ошибка