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
А вы знали, что в питоне так можно?
Собрала несколько кейсов, о которых вы могли даже не подозревать:
1️⃣ Имя функции - это переменная, и этому имени мы можем присвоить что угодно:
Естественно, после переопределения все предыдущие возможности перестают действовать
2️⃣ Та же история с модулями:
3️⃣ При импорте модулей существующие переменные перезаписываются:
4️⃣ А переменные после цикла остаются существовать:
#python_tips
Собрала несколько кейсов, о которых вы могли даже не подозревать:
def func():
print('hi')
func()
# hi
func = -1
func()
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# TypeError: 'int' object is not callable
Естественно, после переопределения все предыдущие возможности перестают действовать
import math
type(math)
# <class 'module'>
math = -1
type(math)
# <class 'int'>
x = 2
from mymodule import x
print(x)
# 'new_value'
for i in range(2):
print(i)
print(i) # 2
#python_tips
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20 12👍7🌚5👀3😁2🎄1
Про качество данных
В конце прошлого года я зачитывалась книжками. И в одной из них мне понравилось выражение, что данные - это "тихий убийца".
Мы можем даже не понимать, что они некачественные, но в какой-то момент это выстрелит.
😭 Был кейс, когда одна команда сделала финансовую отчетность на основе некорректных данных и направила куда-то выше. В этой отчетности цифры были сильно меньше, чем потратили. И встал вопрос - а куда делись все остальные средства? Так что это может довести до серьезных последствий.
❤️🩹 А вообще качество данных - это очень хрупкая вещь.
Где может пойти не так?
▶️ при выгрузке из источника (поставили лишний фильтр)
▶️ при передаче между системами (все задублировалось, потеряли куски информации)
▶️ при интеграции нескольких источников (не на все данные прописаны правила сопоставления)
▶️ при анализе (неправильно посчитали)
А это очень милая и грустная аномалия в контексте целостности данных:
▶️ сироты - когда внешние ключи никуда не ведут
#data_dmbok #fundamentals_of_de
В конце прошлого года я зачитывалась книжками. И в одной из них мне понравилось выражение, что данные - это "тихий убийца".
Мы можем даже не понимать, что они некачественные, но в какой-то момент это выстрелит.
Где может пойти не так?
А это очень милая и грустная аномалия в контексте целостности данных:
Каждый, кто прикасается к данным, способен повлиять на их качество. Обеспечение качества данных — предмет заботы всей организации, а не только команды качества данных или ИТ.
Руководство данными нужно для того, чтобы «делать правильные вещи» (Doing the right things), а управление данными — для того, чтобы «делать вещи правильно» (Doing things right)
#data_dmbok #fundamentals_of_de
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35🔥11👀6😁1
Полезности про Spark
1️⃣ Я периодически посматриваю доклады с хайлоада. Один из крутых - «Оптимизация Spark-приложений от простого к сложному. С примерами». По ссылочке можно найти презу:
https://highload.ru/moscow/2024/abstracts/13255
2️⃣ И тут я поняла, что натыкалась на его же статью про спиллы данных, где подробно на примерах и в картинках это все разбирается:
https://habr.com/ru/amp/publications/743292/
https://highload.ru/moscow/2024/abstracts/13255
https://habr.com/ru/amp/publications/743292/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍6 4
Теперь я lamodian☺️
Начинаю эту весну с изменений в своей жизни - теперь я буду дата инженерить в Lamoda Tech🙂
👔 В пн был мой первый рабочий день - провели онбординг в процессы, выдали мак на м3, устроили экскурсию по офису. Я познакомилась с корп сервисами, сразу записалась на фотосессию для профиля и на экскурсию в фотостудию 🥰
Узнала, что на этой неделе будут проходить встречи, мастер-классы и квизы на тему моды, будет день модных вкусняшек и день призов от какого-то бренда. Все очень прикольно, но в офис я ехать больше не хочу - я добиралась 1:20 от двери до двери с двумя пересадками на метро + автобус😱
🥠 На кухоньке есть свежие фрукты, овощи, зона завтрака с мюслями, печеньки и чокопайки, кофеечек, холодос с 4 видами молока, можно сделать тосты
🙂 Из удивительного - в офисе есть душевая, а временный пропуск я оформила за пару минут
🙂 В конце нам раздали велком-пак: шопер, термокружка, карабин для пропуска и значок. Я познакомилась со своим тимлидом, установила нужные проги, а почти все доступы у меня уже были
📺 Еще я сходила на встречу "collaba", где менеджмент рассказывает про бизнес-инсайты, цифры, бренды, процессы поставок через страны
🛍️ Плюс каждый месяц у меня есть два промика на -15%, кому нужно - пишите)
Начинаю эту весну с изменений в своей жизни - теперь я буду дата инженерить в Lamoda Tech🙂
Узнала, что на этой неделе будут проходить встречи, мастер-классы и квизы на тему моды, будет день модных вкусняшек и день призов от какого-то бренда. Все очень прикольно, но в офис я ехать больше не хочу - я добиралась 1:20 от двери до двери с двумя пересадками на метро + автобус
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥98 35❤19👍7🦄3🌚2👀1