👨🏼‍💻Перекладываю 📊 в 🌲🇫🇮
694 subscribers
226 photos
7 videos
52 links
DA + DE = AE? @ little🇫🇮startup,
Ex Product Data Analyst @ SkyEng,
Ex Data Engineer @ Starship (delivery robots),
Ex Data Analyst @ EPAM,
Я НЕ РАЗМЕЩАЮ РЕКЛАМУ,
Личка открыта https://t.me/jarikor ,
(надо нормальное название каналу придумать)
Download Telegram
УРААА!!! НАКОНЕЦ-ТО!!!
В Python 3.10 завезли аналог «switch-case»!!!


def http_error(status):
match status:
case 400:
return "Bad Request"
case 404:
return "Not Found"
case _:
return "Что-то не то"
Неистово рекомендую.
https://intuit.ru/studies/courses/599/455/info
«Проектирование хранилищ данных для приложений систем деловой осведомленности (Business Intelligence Systems)»

Да, академично, да, иногда воды больше чем в воде, т.к. см.выше «академично».

Но именно благодаря этой скучной и «водной» академичности, курс очень детально и фундаментально разбирает вопрос организации БД и ХД, в частности, для анализа данных.

Если будете изучать курс, от души прошу «купить» его официально, ибо стоит он 100 рублей.
- - - - -
В догонку к предыдущему посту про проектирование хранилищ данных.

Откуда я этот курс нарыл, зачем, и вообще с чего.

Меня тут на проект новый подключили, а там внезапно надо быстро OLAP-кубы освоить, и работа будет на «скучной» MS SQL SMSS (вместо какой-нить модной ClickHouse) и IBM TM1 (вместо модного PowerBI).

Ну и так как данных будет ТАКОЙ ВАГОН АХРЕНИТЕЛЬНОГО РАЗМЕРА, то для хорошей масштабируемости, решено было применить OLAP-кубы (я пока не вижу связи, т.к. это для меня новое явление).

Пришлось экстренно искать материалы, по этой технологии, которую везде называют «устаревшей и моветоном». При этом, все 🤡 критики🖕🏻 почему-то в упор забывают, что обычные SQL базы не скейлятся бесконечно (если не оракл) и the rule of thumb — когда за миллиард строк выходишь — становится неприятно. Обычно используют map reduce базы, типа хадупа (Hadoop, из семи залуп).

В этом проекте, видимо, Оракл по деньгам не вариант. Или ещё почему-то, я не знаю, какой бог запретил. И почему Apache Hadoop не вариант — тоже не знаю. Поэтому расово-верным решением выбрали MS SQL завёрнутый в OLAP-cubes.

Пришлось гуглить, и искать по телеграм-каналам. У коллеги https://t.me/rockyourdata нашёл в древнем-древнем посте совет про этот курс. Глянул. И не пожалел. Вот делюсь с вами теперь курсом.

Наращиваю функционал Data Engineering в придачу к Data Analysis. А скоро ещё сертификация по Amazon Data Analytics - Specialty... И ещё курс Карпова (по аналитике) не кончился. Домашки не тронутой целая поляна.

И ещё одна новость, о котрой надеюсь уже скажу на следующей неделе, жду документ один, очень глобально важный.

Эх, успеть бы всё, и не порваться)))
О, у Яндекса появился курс по своему облаку. Бесплатный.
Больше не придётся тыкаться как слепой котёнок наугад и экспериментальным путём узнавать, что да как там настраивается, чтоб «грамотно».
https://practicum.yandex.ru/profile/ycloud/
Без скрина как-то куцо смотрится пост.
На курсе у Карпова дали доступ к ВКшному облаку и накинули туда баланса.

ШТОШ, пощупаем.

Интересно, кроме как ценой — как будут биться Яндекс.Облако и VK Cloud, будут ли явные разграничения в ЦА и функционале и т.п.
Forwarded from БлоGнот
Австрийское ведомство по защите персональных данных вынесло решение, что австрийский сайт, используя Google Analytics, нарушал GDPR. По мнению регулятора, система аналитики передавала все данные о посетителях, включая IP и cookies, на серверы Google в США, где к ним могли иметь доступ американские правоохранительные органы.

Несмотря на то, что Google явно показывает, что данные о пользователях псевдонимизируются — то есть обезличиваются, — регулятор указал, что система при этом использует cookies и другие идентификаторы именно для того, чтобы различать посетителей, а, следовательно, пользователя становится возможным отследить.

Если это решение выдержит апелляцию хотя бы в рамках Австрии, то, боюсь, в интернете больше не будет систем аналитики ни в каком виде — понятно, что следом к праведной борьбе подключатся все страны ЕС.

@blognot

https://techcrunch.com/2022/01/12/austrian-dpa-schrems-ii/
Навеяно постом выше 👆🏻

1. Первое что мне сказали, когда я вошёл в команду аналитиков в ЕПАМе — «Все наши крупные клиенты (чаще всего это оказывались клиенты из ЕС), не используют, или в процессе отказа от ГА, потому что ГА не соответствует GDPR».

2. Не согласен с автором поста про «не будет систем аналитики» — ну камон, внешние отдельные системы аналитики и существуют уже, и опенсорсные решения уже есть, и развиваются дальше. Да, ГА4 это огонь, да связка с BigQuery и Data Studio, да «всё в одном и супер удобно». Ну а что теперь. Если нужно будет ЖДПРно сделать, придётся юзать иные сервисы. Собирать многорукого многонога.

В одном проекте мы юзали Amplitude (из которого в S3 AWS складывали данные) + Microsoft Clarity для хитмапы и PowerBI для визуализации всего этого дерьма, вместо того, чтобы развернуть GA4 + BQ + GDS.

Как говорится, ничто так не расширяет функционал аналитики, как своевременное и достаточное финансирование.

- - -

Сам пост подсмотрен в канале у Сергея Шмакова https://t.me/smmblog
Решил поднять свой сервак для пет-проектов и работы с данными.

Больше для практики (по мотивам курса Data Engineer от Карпова), т.к. работа локально меня устраивает (пока).

Но научиться бегло разворачивать воркплейс для аналитики на облаке — будет полезно.

Взял digitalocean, создал Дроплет, на нём Убунта, щас в неё docker-compose, а в нём разверну Apache Superset для визуализации, к нему подключу СУБД и уже можно начинать «работать» (визуализации, графики, EDA и т.п. по текущим базам)

В следующей итерации: развернуть на нём JupyterHub, Airflow.

Ну а затем всё остальное.
И заодно аппки свои по парсингу затащить на него с локалки. Вот будет красота.
Ох и попил он мне крови в настройке… 

«не хватает модуля» → давай pip install МОДУЛЬ → хер, ошибка не хватает ещё другого модуля и вообще зависимости вышли покурить → окей вот тебе другой модуль, а какого хера зависимости не совпадают? → потому что слишком новые версии стоят, давай даунгрейд → бляяя, окей, вот тебе даунгрейд, вот модули ниже версиями, что тебе ещё собака надо? → рестарт → тьфу бляха, вот тебе рестарт…
Но в итоге и Postgres подцепился (после танцев с бубном, т.к. pip install psycopg2 так и не прокатил. Пришлось pip install psycopg2-binary ставить…)

И CSV загрузились нормально.

И реквесты отрабатываются (их нет на скрине).

Завтра построение дашбордов протестирую.

ЗБС, я теперь вроде даже могу сюда юзеров создавать клиентам, под дашборды по ним, с разграничением прав и доступов (завтра проверю).
Ахереть задачку конечно надо посчитать:

«What share of lifetime value is generated during the first month in the app?»
«Какую долю от LTV юзер сгенерировал за первый месяц использования приложения?»
Звучит просто, но подковырка, как обычно, подкралась незаметно.

Для решения задачи пришлось сделать две CTE на основе разных таблиц, сджойнить их, отдельно селект по CTE, и ещё дополнительный селект с подзапросом. Плюс условие с вычислением даты. А даты без ::timestamp не распознаются, собаки такие.

Так. Столбцы сформировал. Всё в целом готово, ещё столбец с вычислением этого «share of lifetime value» завтра уже задолбался.

Но очень рад, что и в подзапросах потренировался, и в СТЕ.
😅Хорошо, что оконную функцию натягивать не пришлсь, какое-нить плавающее среднее, растудыть его…
Не нравится мне, встроенная в Apache Superset дефолтная Pivot Table, она кривая и косая блин, в v2 с раскраской цветом.

Либо ровная и чёткая, но без цвета.

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

Будет порфтолио — как из сырых данных получить отчёт для стейкхолдеров, имея изначально только три CSV файла. Развернув самостоятельно под это дело БД и BI-инструмент на Облаке, не потратив ни рубля (с помощью промокодов).

Грубо говоря не имея ничего кроме 3 файлов от клиента — собрать инструмент и сделать результат.

И всё это за 4 дня.
Ну, вот и дошли руки до ТелеграмБотов, а то всё ВК да ВК…
Хех. Тот момент, когда сам допёр до этого докручивая пет-проект прошлым летом, и думал, что «все так делают» или «ну это ж очевидно» и не стал ничего писать. А оказывается это умный ход, и вон даж в ВК применяют.

Как я до этого допёр (писать запросы в функции, а потом их импортировать) — хоть окончательную версию проекта я собирал на Django, но MVP версию (как отрабатывают функции сбора данных, как отрабатывают функции обработки данных, как отстраиваются графики и т.п.) делал на Jupyter Notebook.

И на определённом этапе набралось дофига функций, и меня бесило прыгать туда-сюда по листу, который превратился в длинную портянку из кода, комментариев, графиков, таблиц и т.п. И даже деление на пару листов не помогало, т.к. меня бесило между ними переключаться. Расширения Nbextensions для Notebook с помощью которых можно сделать СОДЕРЖАНИЕ листа (маркдауном размечать вот так) тоже не помогали в быстрой навигации между короткими функциями.

В итоге т.к. я знал, что буду реализовывать всё на Django, и всё равно придётся перекатывать «портянку» в отдельные функции, решил сразу окончательные и нормально отрабатывавшие версии отрефакторить в функции и модули.

В итоге без проблем и раздражения переключался между функциями которые редачил внутри окна IDE (PyCharm ван лав).
Более того, не нужно было постоянно листать портянку текста (т.к. функции были разбросаны по листу, какие-то раньше отрабатывали, какие-то позже), я просто открывал 2-3 нужных в окнах внутри IDE и без прерывания «рабочего фрейма» переключился между ними и подправлял. Плюс стало удобнее версионирование и редактура кода на разных устройствах (начинал я писать код на стационаре в Новгороде, потом уехал оформлять доки в Самару с ноутом, потом вернулся и продолжил на стационаре).

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

А потом написанные функции и модули бысло довольно легко перенести в Django приложуху. И задеплоить.

Вот так, заморочился разок, чтоб себе работу комфортнее сделать.
А оказывается, изобрёл велосипед.

Ну, зато лишний раз убедился, что не совсем дурак.
Такой вот пост самолюбования получился.
Рабочая задача с реального проекта. И реальный затык.

Есть функция, которая проходит по списку файлов. Каждый файл превращает в датафрейм, разбирает его, берёт нужные столбцы, обрабатывает их, и добавляет в финальный датафрейм.

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

Так вот. Если получить список файлов через glob('директория'), то результирующий датафрейм выходит короче, чем если ЭТОТ ЖЕ список файлов передать в ручную (адреса можно сверить прям визуально или через ==, это один и тот же лист, я его прям скопировал из результата ячейки globа).

Чат аналитиков у Карпова я уже зафлудил этим вопросом, теперь спрошу тут.

Какие есть идеи? Куда гуглить решение? Что блин за чёрная магия происходит, Девид Блейн ты скукожил мой датафрейм???

- - -
Решение в комментариях. Оказалось простое. Как всегда, когда глаз замыливаешься, перестаёшь замечать простые моменты и очевидные решения в коде.
#рабочее