Задать вопрос
  • PowerQuery эффективность применения при работе с большим к-вом файлов?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Альберто Феррари и Марко Руссо (оба -- гуру Power Query / BI) не согласятся в вашими айтишниками)

    Вообще, Excel -- лишь оболочка для итоговых данных, которые делаются Power Query. Да, что-то удобнее и нагляднее сделать в Power BI, что-то в Excel, а под капотом одно и тоже (Power Query). Пол мира сидит на дашбордах на Power BI, который априори завязан на Power Query так или иначе, и как то всё работает же)

    Поэтому утверждать, что Excel не подходит для аналитики, Power BI не подходит для аналитики, Python не подходит для аналитики, SQL не подходит для аналитики, чтоугодноещё не подходит для аналитики — так себе, всё сильно зависит от конкретной задачи.

    Что касается самого Power Query (как и любой другой платформы для ETL) — Всё очень зависит от источника данных и качества кода.

    Особенности, влияющие на скорость PQ:
    1. Сам источник. Наиболее быстрый источник -- модель в SSAS или обычная БД на SQL (MS SQL, PostgreSQL и тд), далее обычный текстовый файл (csv, txt), и уже потом файлы xlsx (которые, по сути, обычный архив).
    Если у вас зоопарк "тяжёлых" Excel файлов по 100 столбцов и 100500 строк, которые по ночам обновляются выгрузками из 1С — тут надо менять методологию самого источника, и разворачивать БД или SSAS.
    2. Правильная типизация данных (текст, число, целое число и тд). PQ с разными типом данных по разному обращается + сразу покажет ошибки. Особенно важно для даты.
    3. Наличие индекса
    4. Наличие лишних полей (столбцов)
    5. Множество скопированных запросов, а не ссылки на них.
    6. Множество джойнов (а-ля Table.NestedJoin) по таблицам, источники которых -- таблицы фактов с миллионами строк. Нужна таблица-справочник "на коленке" -- сделайте её на стороне БД, и путь обновляется ночью.
    7. Отсутствие/наличие Table.Buffer, когда нужно и где не нужно. Table.Buffer полезен на больших массивах данных, но жрёт память, как не в себя, зато быстрее. Есть Table.Buffer, но мало оперативки — тормоза. Куча лишних Table.Buffer (привет, копипаст запросов) — тормоза.
    8. Объем свободной оперативной памяти (рекомендую от 32, хотя бы, а лучше 64, если много работаете с Power Query)
    9. Множественные each в коде в разных местах по мелочи. Надо в целом стараться избегать each — тк это заставляет пробегаться движку по всему массиву строк, физически их читая / трансформируя, или заменять разные each на групповую работу (т.е. не отдельные последовательные шаги с заменой, а один шаг с заменой по списку, например).
    10. Неоптимизированный код. Тут много мелочей, начиная от порядка шагов и заканчивая самим кодом (обращение к столбцам, например, обрабатывается быстрее, чем к строкам).
    Сначала максимальная чистка на верхнем уровне (удаление ненужных столбцов), потом строк (null, error), потом типизация, потом потом уже фильтры, сложная логика, трансформация. Всё, что можно объединить в один шаг (например, фильтрация) -- должно быть объединено.
    11. Использование интерфейсных фич "распределение столбца", "качество столбца", "профиль столбца" — на больших массивах тормоза
    12. Включаем трассировку, пишем логи, смотрим, на что уходит больше всего времени. Далее в гугл или нейронку с вопросами.

    Финалим. Power Query — мощнейший инструмент, с относительно низким порогом входа. Этап ETL на нём более, чем возможен, и ничуть не уступает Python / SQL.
    Ответ написан
  • Можно ли воскресить файл из excel дампа?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    1. Используйте встроенный механизм восстановления. Если повезло — файл(-ы) будут ещё там. Могут быть двоичными, с мусором, рассыпавшимися сводными, условным форматированием, потерей форматирования в таблицах, но, как правило, данные и формулы на месте.
    скрин 1
    69033935a0f7c724241591.png


    2. Заведите себе практику: каждый день начинать с пересохранения файла под новым именем, с индексом версии и датой прямо в имени файла.
    Во-первых, так сохраняется история разработки. Иногда с коллегами надо посмотреть "а что там было в 10й версии", на которую ссылается битрикс или email, и сравнить с 20й версией.
    Во-вторых, я неоднократно на своей практике сталкивался, что твой собственный скрипт VBA (результат которого вообще не всегда можно отменить через CTRL+Z), или твой переделанный запрос Power Query, или глюк Excel грохает твою сводную таблицу, исходные данные или результат выгрузки из Power Query, и "восстановление из несохранённых книг" не всегда выдает желаемый результат.
    И тогда уж точно проще восстановить часть данных или всю работу из "вчерашнего" файла.
    Скрин 2
    69033afedfeb7414146438.png
    Ответ написан
    Комментировать
  • Как создать сводную таблицу с фильтрацией по текущей дате?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Как сделать сводную таблицу в которую автоматически попадали события по следующим условиям:
    1) Событие из прошлого или сегодня со статусом не равным Вручен
    2) События из будущего
    +++
    Power Query + Модель данных (в Power Pivot)
    • Даты надо "размножить", т.е. создать отсутствующие строки с датами, после чего можно фильтровать или делать сводную как угодно.
    • Отдельно справочники, отдельно факты
    • Схема в модели данных
    • Сводную на основе модели

    3) События из прошлого или наступающие в ближайшие 7 дней выделялись красным цветом
    +++
    Условное форматирование по формуле, сравнение с СЕГОДНЯ()

    4) По всем попавшим событиям считался общий бюджет
    +++
    типичная сводная с итогами и/или подитогами (после добавления строк на каждый день через Power Query + модель данных это всё будет возможным)
    Ответ написан
    Комментировать
  • Какие есть эффективные средства анализа больших данных?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Присоединюсь к коллегам.
    1) Кладёте ваш json в любую БД, попутно очищая его от служебных символов (типа (), {} и тд). Делаете любым инструментом для ETL, которым умеете пользоваться (или изучаете)
    Судя по комментариям в соседних ветках (про оценку, пробег и тд), это у вас типовые выгрузки по API (или парсинг) — тут хоть в csv трансформируйте, может и вам и БД-то не нужна, а достаточно плоской большой таблицы (только всё равно плоскую таблицу лучше держать в csv, а не xlsx, меньше тормозов на больших массивах, ну или велкам разворачивать любой движок БД, какой нра)

    2) Далее любимым инструментом для BI аналитики строите сводные таблицы, графики, диаграммы, находите ваши средние и корреляции.

    ИИ, как инструмент, вам поможет создать модель данных, настроить ETL, ответить на вопросы, как получить нужный вам срез / сводную / диаграмму / etc, и для всего этого в ИИ достаточно закинуть массивы исходных данных строк в 20, а не весь массив.
    Ответ написан
    1 комментарий
  • Если ли более изящный способ вычисления суммы максимальных значений за день в ретроспективе 1 месяц?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Да. Go на https://chat.deepseek.com (доступен в РФ без танцев с бубнами) и туда просто скопируйте ваш запрос.
    К сожалению, на дипсике нельзя расшарить чат, как на чатгпт, а копипаст всего ответа без разметки выглядит ужасно.

    spoiler

    Да, в Prometheus есть более изящный способ вычисления суммы максимальных значений за день за последний месяц. Вместо ручного перечисления всех смещений (offset) вы можете использовать функцию sum() в комбинации с max_over_time() и временным диапазоном.

    Для суммы максимумов за 7 дней (как в вашем примере) можно использовать:

    sum(
    max_over_time(
    selection_cnt_success_by_source{source="selection_cnt_success_by_source_total"}[1d]
    offset 1d:7d
    )
    )
    А для месяца (30 дней) можно сделать так:

    sum(
    max_over_time(
    selection_cnt_success_by_source{source="selection_cnt_success_by_source_total"}[1d]
    offset 1d:30d
    )
    )
    Этот синтаксис использует "подзапрос с диапазоном" (subquery range), где:

    [1d] - размер окна для max_over_time

    offset 1d:30d означает "от 1 дня до 30 дней назад" с шагом по умолчанию (равным размеру окна, т.е. 1 день)

    Такой подход:

    Более компактный и читаемый

    Легко масштабируется на любой период

    Избегает дублирования кода

    Автоматически включает все дни в указанном диапазоне

    Примечание: Если вам нужно исключить текущий день (как в вашем исходном запросе, где начинаете с offset 1d), используйте offset 1d:30d. Если нужно включить текущий день, используйте offset 0d:30d.
    Ответ написан
    Комментировать
  • Какую бесплатную CRM посоветуете?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Странно, что ещё никто битрикс24 не написал. Базовый функционал бесплатный без ограничения срока, для небольших компаний достаточно.
    Ответ написан
  • С помощью какой программы или как в excel создать график?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Это же пузырьковая диаграмма, она нативно есть в Excel
    Ответ написан
    Комментировать
  • Возможна ли обработка адреса (жительства) в excel регулярным выражением?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Попробуйте надстройку Asap Utilites для Excel -- там много фич для обработки текста.
    Ответ написан
    Комментировать
  • Как создать таблицу из двух столбцов с критериями?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Добавляем обе таблицы в "модель данных" → Power Pivot → Сводная на основе "модели данных"
    Подробно тут: https://www.planetaexcel.ru/techniques/8/133/
    Ответ написан
    Комментировать
  • Как вычислить операцию в ячейке excel написанную текстом?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Бесплатная надстройка ASAP Utilities → Download → Home and Student edition → установить надстройку (русский язык тоже есть)

    "Текст" → "Вставить перед и/или после содержимого каждой ячейки" → добавляете "="
    Если Excel продолжает считать, что это текст:
    "Числа и даты" → "Преобразовать нераспознанные числа (текст?) в числовой формат"

    Аналогично можно проделать через надстройку Plex, но она уже платная.
    Ответ написан
    Комментировать
  • Где вы берете статистические данные?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Ловите из моей копилки
    (копипаст из моей базы знаний, какие-то ссылки могли протухнуть, я не проверял)

    Росстат. Официальная статистика
    BI Portal Росстата (официальная статистика, собран...
    Национальные статистические службы (ссылки на инос...
    Воспользоваться расширенным поиском от Google
    PWC (большое количество исследований по актуальным...
    PWC(потребительские рынки)
    PWC (что творится в России)
    McKinsey (публикуют результаты своих исследований,...
    Deloitte
    Исследования Deloitte в СНГ
    Boston Consulting Group
    BCG Review (BCG Review предлагает своим читателям ...
    Публичные данные Google
    Ernst&Young
    KPMG
    Академия Google (помогает найти научные работы)
    Google Trends
    Яндекс.Исследования
    Data Insight (Data Insight — первое в России иссле...
    Отчеты МинФина России
    Фонд Общественное Мнение
    Список сайтов для анализа финансовых рынков
    15 сервисов для анализа конкурентов
    100 источников в одной табличке с ссылками и кратк...
    Ответ написан
    Комментировать
  • Как подключить домофон к умному дому?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    1. Погуглите "модуль сопряжения для домофона". Стоит много дешевле осциллографа, может кто из знакомых-родственников их к вам закинет, дальше поиграетесь на месте. Важно: они немного разные под разные системы, так что надо "угуглиться" в глубину или покупать парочку на тестирование.
    2. Обычные домофоны на своем борту имеют самые обычные AV-сигналы. Т.е. берёте любой ТВ, и через "тюльпаны" подключаете, смотрите/слушаете. Для адресных (координатных) систем (а у вас, походу, как раз такой) -- нужен модуль сопряжения из п.1 (после него вы и получите обычные "аналоговые" сигналы на свой тестовый монитор из ТВ)
    Ответ написан
    1 комментарий
  • На чём можно сделать простой интернет магазин?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Insales
    Ответ написан
    Комментировать
  • Как быстро вносить данные в поля таблицы Exel?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Парсить входящие письма — ну такое себе..

    Если данные однородны (например, форма заявки с заранее определёнными полями на сайте) — тогда копать на стороне отправки писем, чтобы эти данные сразу летели в вашу БД / CRM, а не в email.

    Если данные в письмах разнородны (т.е. это, например, письмо-обращения с сайта) — без человека всё равно не обойтись, и тогда проще на условной воркзиле через 2-5 заданий найти человека на постоянку, который будет за копейки вам это делать.
    Ответ написан
    Комментировать
  • Существует ли бесплатный тайм-трекер с скриншотами?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Гляньте тут https://qna.habr.com/answer?answer_id=1379571#answ... , там большой список таймтрекеров, в том числе и автоматические.
    В своё время я долго сидел на ManicTime (ЕМНИП, скрины там как раз есть, делал автоотчёты), но в последние года 3-4 я сижу на toggl (бесплатный, но без скринов — мне они не нужны)
    Ответ написан
    Комментировать
  • На основе какой системы создать складской учет?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    МойСклад
    Ответ написан
    Комментировать
  • Как настроить среднюю кнопку мыши для определнных программ

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Аналогичная задача. Двигать холст в Visio, удерживая правую или среднюю кнопку мыши.
    Штатно Visio так не умеет. Но можно двигать холст в Visio, удерживая Ctrl+Shift+ПравуюКнопкуМыши, что очень неудобно.
    Итого, была нужна замена "держим Ctrl+Shift+ПравуюКнопкуМыши + двигаем мышь" → "держим СреднююКнопкуМыши (или правую кнопку) + двигаем мышь"

    Для решения я использовал самописный скрипт на AutoHotKey (wiki и документация тут: https://ahk-wiki.ru )
    Думаю, примера и комментов в коде достаточно, чтобы сделать подобное для другого софта.

    #If WinActive("ahk_exe visio.exe")	;работа скрипта только в окне Visio
    
    MButton::				;нажимаем СреднююКнопкуМыши. Если надо удерживать нажатой ПравуюКнопкуМыши — в этом месте заменить на RButton
    While GetKeyState("MButton", "P")=1	;держим нажатой CКМ. Если надо ПКМ — в этом месте заменить на RButton
    {
    SendInput {Control Down}{Shift Down}	;отправляем нажатие CTRL+Shift
    Sleep, 20				;ждём 20 мс, иначе у меня была некорректная работа скрипта
    SendInput {RButton Down}		;отправляем нажатие ПКМ (тут на MButton менять не нужно, тк в Visio надо отправить именно ПКМ)
    KeyWait MButton				;отжимаем CКМ. Если удобнее с нажатой ПКМ — в этом месте заменить на RButton
    SendInput {Control Up}{Shift Up}{RButton Up};отправляем отжатие всех кнопок (тут на MButton менять не нужно, тк в Visio надо отправить отжатие именно ПКМ)
    }
    Return


    зы. Сори за некропостинг, но сюда яндекс ведёт поисковый траффик на вопрос из заголовка. Сам измучился, пытаясь решить:)
    Ответ написан
    Комментировать
  • Где можно разместить статью о своем стартапе?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Вистую за vc.ru, Дзен, spark и "я пиарюсь на хабре". Это в порядке личных предпочтений и максимизации охвата аудитории.
    Ответ написан
    Комментировать
  • Может ли конкурент сбить бюджет на Яндекс.Директ?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Подключаете сервис типа clickfrog, меряете эффективность, делаете выводы.
    Ответ написан
    Комментировать
  • Правильно ли начинать с простых задач?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Пара соображений
    1. Переключаться на другое в случае затыка, в принципе — полезно. Потом будет свежий взгляд на проблему, или решение придет само (за едой, за рулем, в душе, etc)
    2. Я предпочитаю начинать день с простых задач именно поэтому: "попытка пробить лбом "стену" может обернутся тем что когда "стена" будет пробита, останется ещё масса задач." — мне вот очень противно в условные 20 вечера после трудной или муторной задачи делать мелочь вместо заслуженного отдыха.
    Ответ написан
    Комментировать