Как дела?) Отдохнули?
С пн 13.01 стартует de zoomcamp!
Кто еще ждет особого знака судьбы - он здесь🔶
🔮 Зумкемп - это бесплатная штука на пару месяцев, которую я сама проходила 2 года назад. Но не сделала финальный проект и не получила серт, потому что уже нашла работу и выходила на неё.
Из стека у нас был GCP, BigQuery, Terraform, Spark, Kafka, Prefect, Postgres, Docker, dbt, Looker
Некоторые штуки у меня не удалось применить, и я по итогу заменила гугл бакеты на yandex cloud + google drive
🎄 В этом году оркестратор с Prefect меняется на Kestra, parquet на avro, и вроде все
⚠️ Видосы, стримы, задания и общение с участниками - total english
В общем, штука стоящая - тык
С пн 13.01 стартует de zoomcamp!
Кто еще ждет особого знака судьбы - он здесь
Из стека у нас был GCP, BigQuery, Terraform, Spark, Kafka, Prefect, Postgres, Docker, dbt, Looker
Некоторые штуки у меня не удалось применить, и я по итогу заменила гугл бакеты на yandex cloud + google drive
В общем, штука стоящая - тык
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤6🔥4
Мы с вами чем-то не тем занимаемся
https://music.yandex.com/album/33934790/track/132728259?utm_medium=copy_link
https://music.yandex.com/album/33934790/track/132728259?utm_medium=copy_link
Yandex Music
Язык для славян
Научно-технический рэп • Track • 2024
😁8❤2🔥2 2
Про генераторы и итераторы
Мне когда-то советовали прочитать книжку Лутца по питону, но я ее забросила. Теперь мне нечего было делать, и я снова решила к ней вернуться) И тут я как осознала!
📝 Сделаем одно упражнение. Возьмем список, отберем только четные числа двумя способами:
А теперь дважды материализуем:
Список хранит все в памяти, занимает оперативку, и мы можем его вызывать сколько угодно раз.
А генератор закончился и всегда будет пустым🔲
➖ ➖ ➖ ➖
Если мы попробуем сделать то же самое ручками, то есть еще интересный нюанс.
Сделаем два итератора - для функции range и нашего генератора l2. Сначала вызовем первый, потом второй:
🌀 Прикол в том, что у range итераторов может быть много, как будто они передаются по значению. А в остальных случаях как будто по ссылке - когда изменяется одна, изменяется и другая.
По сути в тех случаях, когда нам не нужно несколько раз обращаться к одним данным, мы спокойно можем использовать генератор✅
Мне когда-то советовали прочитать книжку Лутца по питону, но я ее забросила. Теперь мне нечего было делать, и я снова решила к ней вернуться) И тут я как осознала!
lst = [1, 2, 3, 4]
l1 = [x for x in lst if x % 2 == 0]
l2 = (x for x in lst if x % 2 == 0)
print(type(l1))
# <class 'list'>
print(type(l2))
# <class 'generator'>
А теперь дважды материализуем:
print(list(l1))
print(list(l1))
# [2, 4]
# [2, 4]
print(list(l2))
print(list(l2))
# [2, 4]
# []
Список хранит все в памяти, занимает оперативку, и мы можем его вызывать сколько угодно раз.
А генератор закончился и всегда будет пустым
Если мы попробуем сделать то же самое ручками, то есть еще интересный нюанс.
Сделаем два итератора - для функции range и нашего генератора l2. Сначала вызовем первый, потом второй:
r = range(2)
i1 = iter(r)
i2 = iter(r)
print(next(i1))
# 0
print(next(i2))
# 0 - заново
l2 = (x for x in lst if x % 2 == 0)
i1 = iter(l2)
i2 = iter(l2)
print(next(i1))
# 2
print(next(i2))
# 4 - продолжили
По сути в тех случаях, когда нам не нужно несколько раз обращаться к одним данным, мы спокойно можем использовать генератор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤8🔥8
Какой способ/ы выполнятся быстрее?
Anonymous Poll
23%
for line in f.read():
42%
for line in f.readlines():
41%
for line in f:
👍2
Крутые дата-каналы 🔥
Собрали тут с ребятами мини-папку с дата-каналами. У меня в телеге под 200 полезных каналов, что я уже выделила папку "cool" для лучших из лучших❤️
В ней лежит больше половины из дата-папки, и я их частенько почитываю. Сейчас добавила оставшиеся, так что точно рекомендую и вам это сделать🔥
https://news.1rj.ru/str/addlist/a1B07iwrPxUxNWIy
Собрали тут с ребятами мини-папку с дата-каналами. У меня в телеге под 200 полезных каналов, что я уже выделила папку "cool" для лучших из лучших
В ней лежит больше половины из дата-папки, и я их частенько почитываю. Сейчас добавила оставшиеся, так что точно рекомендую и вам это сделать
https://news.1rj.ru/str/addlist/a1B07iwrPxUxNWIy
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
data party
Айлин invites you to add the folder “data party”, which includes 8 chats.
1🔥8 3👍2
Forwarded from Алексей
for line in f:
Использует итерацию по файлу построчно, без загрузки всего файла в память.
Самый быстрый и экономичный способ по памяти, особенно для больших файлов.
for line in f.read()::
Читает весь файл целиком в память как одну строку, а затем проходит по символам, а не по строкам. Это значительно замедляет работу и требует больше памяти.
for line in f.readlines()::
Читает весь файл в память как список строк. Это быстрее, чем f.read(), но всё ещё требует загрузки всего файла в память.
верно рассуждаю?
Использует итерацию по файлу построчно, без загрузки всего файла в память.
Самый быстрый и экономичный способ по памяти, особенно для больших файлов.
for line in f.read()::
Читает весь файл целиком в память как одну строку, а затем проходит по символам, а не по строкам. Это значительно замедляет работу и требует больше памяти.
for line in f.readlines()::
Читает весь файл в память как список строк. Это быстрее, чем f.read(), но всё ещё требует загрузки всего файла в память.
верно рассуждаю?
👍14❤3
Спасибо Алексею за полное и лаконичное пояснение 🧡 , а я добавлю еще пояснялку с замерами по памяти
➖ ➖
Я взяла тестовый файлик с 1 млн строк и протестила все функции на нем по типу такого:
🔶 Результаты🔶
🟣 read()
<class 'str'>
123 793 263 - длина строки
123 793 312 - размер в байтах
🟣 readlines()
<class 'list'>
1 000 001 - количество строк (+заголовок)
8 448 728 - размер в байтах
🟣 файловый итератор
<class '_io.TextIOWrapper'>
208 - размер в байтах
➡️ Получилось, что на выборке в 1 млн строк c длиной ~ 200 символов выигрыш по памяти между списком и итератором составил в 40k раз
➖ ➖
Если мы попробуем сделать такую же штуку с list(range(1000000)) vs range(1000000), то получим нечто похожее:
🟣 list(range(1000000))
<class 'list'>
1 000 000 - количество чисел
8 000 056 - размер в байтах
🟣 range(1000000)
<class 'range'>
1000000 - количество чисел
48 - размер в байтах
➡️ Тут с чиселками выигрыш в 166k раз
Вот и думайте
#python_tips
Я взяла тестовый файлик с 1 млн строк и протестила все функции на нем по типу такого:
import sys
with open('1000000 Sales Records.csv') as f:
f_list = f.readlines()
print(type(f_list))
print(len(f_list))
print(sys.getsizeof(f_list)) # in bytes
<class 'str'>
123 793 263 - длина строки
123 793 312 - размер в байтах
<class 'list'>
1 000 001 - количество строк (+заголовок)
8 448 728 - размер в байтах
<class '_io.TextIOWrapper'>
208 - размер в байтах
Если мы попробуем сделать такую же штуку с list(range(1000000)) vs range(1000000), то получим нечто похожее:
<class 'list'>
1 000 000 - количество чисел
8 000 056 - размер в байтах
<class 'range'>
1000000 - количество чисел
48 - размер в байтах
Вот и думайте
#python_tips
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍21 8🔥3
Никто еще не попробовал эту штуку в dbt?
https://www.getdbt.com/blog/dbt-labs-acquires-sdf-labs
https://www.sdf.com/
https://www.getdbt.com/blog/dbt-labs-acquires-sdf-labs
https://www.sdf.com/
dbt Labs
dbt Labs acquires SDF Labs to advance analytics engineering | dbt Labs
dbt Labs has acquired SDF Labs to enhance analytics engineering solutions. Learn how this partnership strengthens the modern data stack.
👍5
я популярити
мой первый доклад по де в таком масштабе💺
уже нагенерила идеи, данные и скрипт, сегодня доделываю презу и потом пойду репать спич😥
даже на почту эта рассылка пришла!
мой первый доклад по де в таком масштабе
уже нагенерила идеи, данные и скрипт, сегодня доделываю презу и потом пойду репать спич
даже на почту эта рассылка пришла!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥5
Forwarded from Simulative
🧑💻 Вебинар: Собираем витрину данных, как в бигтехе, от описания до результата
Представьте, что вы тренер футбольной команды. И у вас есть витрина данных, которая собирает информацию о каждом игроке, включая количество забитых голов, ассистов, время на поле и количество проведенных матчей. Такая витрина помогает выявить слабые места в команде и сфокусироваться на их улучшении.
О том, как аналитику строить витрину данных, разберём в прямом эфире на примере реальной задачи 28 января в 19:00 по МСК. Спикер вебинара — Айгуль Сибгатуллина, Data Engineer в Сбер, автор телеграм-канала @data_engineerette.
Вебинар пройдёт в нашем любимом режиме «решение тестового задания» — представим, что мы владельцы бизнеса, и на практическом примере покажем, зачем и почему мы это делаем.
Что будет:
🟠 Построение воркфлоу от этапа получения ТЗ до создания полноценной витрины;
🟠 Какие инструменты нужны для дата-инженера;
🟠 Как разобраться с методологией на разных диалектах;
🟠 Как объединить данные из нескольких источников;
🟠 Spark в работе дата-инженера: преобразования и оптимизации;
🟠 Как AI может ускорить процессы.
➡️ Зарегистрироваться
Представьте, что вы тренер футбольной команды. И у вас есть витрина данных, которая собирает информацию о каждом игроке, включая количество забитых голов, ассистов, время на поле и количество проведенных матчей. Такая витрина помогает выявить слабые места в команде и сфокусироваться на их улучшении.
О том, как аналитику строить витрину данных, разберём в прямом эфире на примере реальной задачи 28 января в 19:00 по МСК. Спикер вебинара — Айгуль Сибгатуллина, Data Engineer в Сбер, автор телеграм-канала @data_engineerette.
Вебинар пройдёт в нашем любимом режиме «решение тестового задания» — представим, что мы владельцы бизнеса, и на практическом примере покажем, зачем и почему мы это делаем.
Что будет:
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥51👍13❤12🦄2
Выложила запись на ютуб
Но у меня ни таймкоды не подтянулись, ни ссылки не работают
Спасибо всем, кто пришел! Меня ваши сердечки и огонечки очень подбадривали
Немного статистики: 400 человек в пике, 600 в тотале!
Ссылка на материалы: https://github.com/Aigul9/spark-webinar
Please open Telegram to view this post
VIEW IN TELEGRAM
❤53🔥25👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
🤷25😁22🌚10🤔9👍8❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Решения всех ваших проблем 🙌
Вчера на ретро с командой накидали решения проблем, перетасовали, а потом выбирали подходящие стикеры, как в игре с мемами. И вот что у нас получилось⬆️
Можете в комментах поделиться, что вам советует судьба на этот раз
Вчера на ретро с командой накидали решения проблем, перетасовали, а потом выбирали подходящие стикеры, как в игре с мемами. И вот что у нас получилось
Можете в комментах поделиться, что вам советует судьба на этот раз
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥10👍2
Посмотрела вчерашний митап, вот еще картиночки архитектур
По сути это классическое двх, data lake и data lakehouse
Но вам не кажется, что кх поверх гринплам - немножко многовато, тем более в lakehouse?
#system_design
По сути это классическое двх, data lake и data lakehouse
Но вам не кажется, что кх поверх гринплам - немножко многовато, тем более в lakehouse?
#system_design
👍14🔥5