NULL++ – Telegram
NULL++
75 subscribers
41 photos
12 links
Канал для тех, кто хочет развиваться как Data Analyst, Data Engineer и BI-Analyst
@HexMikhail
Download Telegram
Всем привет!)
Пригласили меня в эфир =) Поделиться своим опытом обучения, и не только
🔥4
Forwarded from Simulative
Вебинар: как студенты Simulative входят в аналитику с ноги с нуля

Сложно понять, как построить свой карьерный путь? На вебинаре предложим несколько стратегий, которые помогут вам определиться с выбором профессии.

В программе — истории, как маркетолог перешёл в аналитику и вышел на работу в крупную IT компанию, как студенты находят работу ещё до окончания курса, и как преподаватель с восьмилетним опытом стал аналитиком.

➡️ Зарегистрироваться на вебинар

А ещё HR-специалист поделится актуальной статистикой по трудоустройству: как за сколько месяцев найти первую работу, и какие ошибки совершают новички при поиске вакансий.


❗️ Встречаемся 11 ноября в 19:00 МСК

🎁 На мероприятии мы разыграем денежные сертификаты на обучение в Simulative. Регистрируйтесь, чтобы узнать, как принять участие в розыгрыше и услышать, как делается карьера в аналитике из первых уст!

➡️ Зарегистрироваться на вебинар

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Simulative
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Simulative
🎓 Как наши студенты «входят в аналитику с ноги» — истории, которые вдохновляют

Каждый пришёл в аналитику своим путём. Кто-то из маркетинга, кто-то из образования, кто-то вообще из другой сферы. Но всех объединяет одно — желание разобраться в данных и построить новую карьеру.

На нашем вебинаре вы услышите реальные истории студентов Simulative, которые начинали с нуля и уже работают аналитиками. А пока — ловите короткие истории первых героев (в кружочках выше)👆

Ждем вас на вебинаре, чтобы услышать полные версии!

📅 Сегодня, 11 ноября, 19:00 МСК
🎁 Среди участников — розыгрыш сертификатов на обучение!

До встречи!
Всем привет!
На этой неделе новости такие: Мне выдали (пока что в электронном виде) мой диплом о переквалификации).
Получается, я уже теперь точно дипломированный и профессиональный аналитик данных.
Бумажный вариант пришлют скоро)
Я очень рад, что всё-таки решил пойти учиться. Узнал много нового и очень хорошо закрепил полученные знания на практических кейсах из реального бизнеса.

Кстати, это один из трёх шагов (дипломов) на пути становления Fullstack-аналитика данных

@nullpp #обучение #диплом
🔥9👏4
Всем привет!
Это пост-проверка. Я всё-таки решил добавить комментарии в канал, чтобы можно было что-то тут обсудить (желательно по теме, ахахах). В старых постах, как я понимаю, не будет обсуждений, ну и ладно)

@nullpp #обсуждение
🔥31👍1
Всем привет!
Когда я делал свой дипломный проект и арендовал виртуальный сервер, при первичной настройке выполнения скриптов по расписанию, я не мог понять почему они не выполняются в нужное время.
Мне подсказали, что нужно бы проверить таймзону самого сервера - и действительно, оказалось, что она была UTC+0 вместо привычной для меня UTC+3. Это я к чему?
К тому, что у СУБД таймзона может как совпадать с сервером, так и отличаться. Да и вообще, при работе с датой-временем надо иметь в виду, что таймзоны могут повлиять на результаты не только работы, но и аналитических выводов, которые можно получить, если мы неправильно их будем интерпретировать из-за этого.
В PostgreSQL есть два основных типа для работы со временем:
- TIMESTAMP(или TIMESTAMP WITHOUT TIME ZONE) - хранит только дату и время, без привязки к часовому поясу. Это просто число, означающее "настенные часы в определённый момент". При сохранении 2023-10-25 15:30:00 база не знает, было это в Лондоне, в Москве или в Токио.
- TIMESTAMPTZ (или TIMESTAMP WITH TIME ZONE) - рекомендуемый к использованию тип. Он не хранит пояс отдельно внутри себя. Вместо этого он конвертирует переданное значение в время по UTC (Всемирное координированное время) для хранения. При извлечении данных он преобразует это UTC-время в часовой пояс текущей сессии.
Опять же многое будет зависеть от параметров как на самом сервере, так и от параметров СУБД.
Для определённой сессии можно задать таймзону так:
SET timezone = 'Europe/Moscow';

(кстати, на это нужны определённые права для учётки PostgreSQL.
И при выполнении запросов, например
SELECT doc_dt FROM ticket;

мы получим данные вида 2025-05-12 09:23:48.000 в том случае, если типом поля doc_dt является TIMESTAMP. Впрочем, такой ответ мы получили бы и не устанавливая таймзону перед этим. То есть СУБД принимает "на веру" то, что TIMESTAMP всегда в том часовом поясе, который указан в параметрах.
Мы можем преобразовать таймзону вручную при конкретном запросе (для этого не нужно особых прав):
SELECT doc_dt::TIMESTAMP AT TIME ZONE 'Europe/Moscow' FROM ticket;

В результате получим результат вида: 2025-05-12 09:23:48.000 +0300. Как видите, в самом конце будет указан часовой пояс, причём такой, какой указан в настройках. Точнее, он его просто "припишет".
С TIMESTAMPZ ситуация иначе. Смещение во времени автоматически записывается в БД. И тогда при применении AT TIME ZONE к полю TIMESTAMPZ, он наоборот преобразует в нужный временной пояс.
SET timezone = 'Europe/Moscow';
SELECT doc_dt FROM ticket;

Результат: 2025-05-12 09:23:48.000 +0300
SELECT doc_dt::TIMESTAMP AT TIME ZONE 'Europe/Moscow' FROM ticket;

Результат: 2025-05-12 09:23:48.000 +0300

Сменим таймзону:
SET timezone = 'UTC';
SELECT doc_dt FROM ticket;

Выдаст такой же результат:
2025-05-12 09:23:48.000 +0300


А вот
SELECT doc_dt::TIMESTAMP AT TIME ZONE 'Europe/Moscow' FROM ticket;

Даст нам:
2025-05-12 06:23:48.000 +0300

Как видите AT TIME ZONE - мощный оператор для явного преобразования.
Если применить к TIMESTAMPTZ, он "снимает" пояс и возвращает TIMESTAMP в указанной зоне.
Если применить к TIMESTAMP (без пояса), он "надевает" на него указанный пояс и возвращает TIMESTAMPTZ.

Что делать?
1. Храните всё в UTC. Настройте часовой пояс сервера на UTC. Это стандарт де-факто для backend-разработки и избегает путаницы.
2. Используйте тип TIMESTAMPTZ. Позволяет PostgreSQL делать всю грязную работу по конвертации.
3. Преобразование в локальное время делайте на уровне приложения. Ваше приложение лучше знает, в каком часовом поясе находится пользователь. Передавайте данные в UTC, а финальное отображение делайте на клиенте.

#SQL #PostgreSQL #timezone @nullpp
👍5🤔2
Всем привет!
Мой дашборд разместили в DataLens Gallery =) Йээээ
https://datalens.ru/gallery/gx1h48lns7le1
🔥10👏1
Всем привет!
Поделюсь небольшим, так сказать, успехом в учёбе на курсе Дата инженера.
Удалось собрать docker compose, где
Докер 1 с питоном, запускает скрипт по генерации данных, а затем записывает их в Докер 2, где крутится PostgreSQL. А затем Докер 3 отображает это через Nginx по localhost в виде простой таблички

@nullpp #генерация_данных #Python #docker #docker_compose #nginx
🔥4👏1
Всем привет!
Я тут немного подумал, чем бы можно было бы разнообразить контент на канале.
Как на счёт того, чтобы выкладывать некоторые задачки (и их решения) на подумать?
Например типа такого:

Задача:
Вывести информацию в какие города можно улететь из Парижа (Paris) и сколько времени это займёт?


Решение в PostgreSQL:
SELECT 
town_to,
TIMEDIFF(time_in, time_out) as flight_time
FROM
Trip
WHERE
town_from = 'Paris';


#Задача #SQL #PostgreSQL #Авиаперелеты
🔥43
Всем привет!
Сегодня будет ещё одна задачка по той же БД

Задача:
Выведите пассажиров с самым длинным ФИО. Пробелы, дефисы и точки считаются частью имени.


Решение будет в первом комменте

#Задача #SQL #PostgreSQL #Авиаперелеты
🔥3
NULL++
Всем привет! На этой неделе новости такие: Мне выдали (пока что в электронном виде) мой диплом о переквалификации). Получается, я уже теперь точно дипломированный и профессиональный аналитик данных. Бумажный вариант пришлют скоро) Я очень рад, что всё-таки…
Всем привет!
А вот и второй диплом мне прислали в электронном виде. Теперь я дважды дипломированный аналитик. Посмотрим, как это мне поможет в будущем xD

П.С. Первый диплом я уже получил в бумажном виде. Всё как положено: корочка, вкладыши, +1 к ЧСВ

#Диплом
🔥6🍾1🤓1
Всем привет!
Хочу немного поговорить сегодня о функции COUNT в SQL. Данную функцию используют для подсчёта количества строк в таблице/вьюшке/результате запроса.

1. Самый простой пример использования - это подсчёт общего количества строк:
SELECT
COUNT(*)
FROM table;

Так можно посчитать все строки, включая те, которые содержат NULL.

2. Если вместо * вставить название колонки:
SELECT
COUNT(col1)
FROM table;

то запрос посчитает количество не-NULL значений.

3. Если нужно посчитать уникальные значения, то внутри нужно добавить DISTINCT:
SELECT
COUNT(DISTINCT col1)
FROM table;

Данный способ работает в PostgreSQL, в других СУБД частенько используются другие функции.

А что, если нам необходимо посчитать количество уникальных строк по двум и более параметрам?
Тут нам поможет функция CONCAT():
SELECT COUNT(DISTINCT CONCAT(col1, ' | ', col2))
FROM table;

- Иногда col1 и col2 нужно привести к формату строки.
- Обычно используют какой-то спецсимвол для соединения, чтобы случайно не пропустить что-нибудь.
Например, если взять просто CONCAT(col1, col2), то конкатенация значений ab и c будет равна конкатенации значений a и bc: abc. То есть DISTINCT решит, что это одинаковые значения.

4. А ещё можно считать количество по условиям:
SELECT 
COUNT(CASE WHEN gender = 'F' THEN 1 END) AS F,
COUNT(CASE WHEN gender = 'M' THEN 1 END) AS M
FROM project_data;

Или вот так тоже можно:
SELECT 
COUNT(*) FILTER (WHERE gender = 'F') AS F,
COUNT(*) FILTER (WHERE gender = 'M') AS M
FROM project_data;


А ещё, нужно помнить, что функция COUNT() является агрегирующей, а это значит, что если мы хотим посчиать количество в разрезе како-нибудь параметра (значений столбца), то надо не забывать про GROUP BY.
В качестве примера, посмотрим распределение покупки товаров по половому признаку:
SELECT 
product_id,
COUNT(CASE WHEN gender = 'F' THEN 1 END) AS F,
COUNT(CASE WHEN gender = 'M' THEN 1 END) AS M
FROM project_data
GROUP BY product_id ;

В результате получим такую таблицу:
product_id|f  |m  |
----------+---+---+
536| 77| 96|
7004| 81| 75|
19812| 73| 79|
47778| 74| 72|
34354| 79| 89|
4035| 80| 82|
44342| 73| 89|
...|...|...|


#SQL #PostgreSQL #агрегация #count
🔥7
Всем привет!
Ну вот и Новый год! Поздравляю всех с наступающим (у кого-то уже наступившим) Новым 2026 Годом!
Хочу подвести свои итоги года)
В уходящем году я решился сменить свой род деятельности. С начала года начал учиться на Аналитика данных: каждый день по чуть-чуть (когда-то по 20 минут, когда и по 3-4 часа) я очень много изучал SQL, Python (включая всякие интересные библиотеки по анализу и визуализации данных), продуктовые метрики, методы аналитики, различные BI-системы, с трудом вспоминал давнозабытую математическую статистику и даже изучил Excel на совершенно другом уровне)
Попутно я уволился со своей старой работы в "никуда", но пока был в отпуске, нашёл новую работу на позицию BI-аналитика, где уже почти полгода (когда праздники кончатся, уже будет, считай) работаю. И мне очень нравится то, чем я сейчас занимаюсь!
Что ещё? Сдал экзамен по DataLens и получил сертификат. Получил два диплома государственного образца о переквалификации по Аналитике данных и BI-аналитике.
За весь 2025 год я посетил огромную тучу различных вебинаров, наверное, штук 100, не меньше. Там были темы и по аналитике, и по BI, и по ML, и даже по 1С =)
В следующем году я обязательно продолжу развиваться как первоклассный специалист по BI (в первую очередь), аналитике данных и совсем немного в инженерии данных. Может даже захвачу немного DS и ML, тут уж как сложится =)
А ещё, я вчера прошёл собес в компанию, где мне сделали оффер с зп на треть повыше, но компания не в реестре IT... И теперь я в раздумьях: сменить место работы или продолжить свой путь на текущем месте? Может кто что посоветует? =)
Поэтому я хочу пожелать всем моим подписчикам: не бойтесь своих стремлений и желаний, если идти к цели, то вы её обязательно достигнете!
В комментариях, можете поделиться, кто чего достиг в этом году и что планируете в следующем)

@nullpp #поздравления #достижения
🎄91👍1