en
Feedback
КУМБА! Эффективное внедрение BI-аналитики

КУМБА! Эффективное внедрение BI-аналитики

Open in Telegram

Канал посвящен обучению разработке BI-проектов по методике "Концепция универсальной модели бизнес-аналитики", сокращенно КУМБА. Автор методики - Евгений Стучалкин (@stuchalkin) Здесь будут кейсы, демонстрации, анонсы, и немного закулисья BI-проектов.

Show more
440
Subscribers
-124 hours
+17 days
No data30 days
Posts Archive
почему-то, чаще всего это попадается в финансовой отчетности)
почему-то, чаще всего это попадается в финансовой отчетности)

Всем привет! Сейчас интенсивно готовлюсь к вебинару, поэтому количество публикаций уменьшилось) Предлагаю вам написать вопросы под этим постом: что вам интересно узнать о Loginom? На что-то ответим прям тут, что-то может быть включено в программу этого и будущего вебинаров

А вот и результаты тестирования взаимодействия Loginom и Clickhouse в плане записи данных. Спасибо @vfrolov13 за поддержку) Тестовое табло на 2,7 млн строк, 33 поля. Половина полей - гуиды, есть пара жестких составных ключей из нескольких гуидов. Тестировали стандартный коннектор в Loginom vs выгрузить данные в TSV и загнать TSV в CH. Движок таблицы - MergeTree, для возможности обновлять ее частями после первичного экспорта. Запись велась с 2-х разных серверов на сервер с CH. Сервер №1 от @vfrolov13 показал результаты 1:33 - экспорт через Loginom, 1:13 - полный цикл с tsv (экспорт в файл, запись файла). При этом параллельных инсертов не делали. Сервер №2 (мой) показал результаты: 4:15 секунд - экспорт через Loginom, 2:59 - полный цикл с tsv. Что сразу навело на мысли о недостаточной широте канала между серверами) Однако, если активировать в настройках коннектора CH в Loginom опцию "Сжатие данных LZ4", то прямой экспорт сразу занимает 2:38, vs 4:15 без этой опции! И это по-прежнему без расширения канала, а также без параллельных инсертов. Главный вывод: Коннектор к Clickhouse в Loginom из коробки работает с хорошей производительностью, при наличии нормального канала между серверами. При этом, остается также достаточно возможностей ускорения записей/чтения за счет запараллеливания запросов, что в Loginom делается на раз-два. Также выяснилась проблемка при работе с TSV: при экспорте тип данных DateTime выгружается как дата, если время равно 00:00:00, и как таймстемп, если время не нулевое. Импорту CH такое не нравится, потому что он в одном поле ждет или только Date, или только Time, или только DateTime. Но на этот счет уже сейчас есть обходы.

На схеме - исходная структура данных, которую будем адаптировать в АХД. Программа примерно такая: День 1: Данные из ERP 1) Кр
На схеме - исходная структура данных, которую будем адаптировать в АХД. Программа примерно такая: День 1: Данные из ERP 1) Краткое описание единого стандарта для моделей данных. 2) Аудит стандартов библиотекой BI2BUSINESS 3) Формирование справочника мета-данных компонентами BI2BUSINESS 4) Работа с прямыми запросами к БД. Работа с большими данными, которые нельзя пересохранить в хранилище, как частью единого аналитического ландшафта. 5) Генерация прогноза продаж. Запараллеливание запросов к базе данных, параллельные итерации циклов. 6) Многовариантные справочники. Когда один справочник может подключаться по разным ключевым полям. 7) Создание единых ключей 8) Восстановление целостности связей; 9) Создание компонента для параметризированной загрузки напрямую из БД. 10) Сборка модели данных по рекомендациям из компонента BI2BUSINESS; 11) Демонстрация модели в Excel (чтобы была картинка без привязки к вендору) День 2: Данные из CRM 1) Сложная таблица фактов: когда в таблице несколько полей дат, которые надо показывать на одной оси, и считать показатели с условиями. 2) Разворачивание сводной таблицы в плоскую; 3) Интеграция данных между CRM и ERP; 4) Аудит целостности связей и обогащение связей с помощью компонентов BI2BUSINESS 5) Сборка модели данных, которая объединяет данные из CRM и ERP. Теперь можно в разрезе клиентов ERP посмотреть, например, действия по ним в CRM, 6) Визуализация модели в Excel. 7) Общение и обратная связь.

Всем привет! Я тут пишу о всяком прогрессе в инструментах бизнес-аналитики. Но наверняка вам хочется посмотреть на это вживую) Поэтому совместно с Loginom мы запланировали на 7 и 8 сентября вебинары по теме "Построение универсального аналитического хранилища". Цель универсального АХД - дать свободу визуализации данных в любых BI-системах, стандартизировать аналитическое самообслуживание, и упростить многопользовательское развитие аналитического ландшафта. https://loginom.ru/single-data-warehouse-form?utm_source=tg&utm_medium=post_cumba Я уже проводил несколько вебинаров с Loginom по схожей тематике: подготовка данных для BI-систем, их визуализация в разных BI. В чем отличие новых вебинаров? Предыдущие мероприятия скорее были чем-то вроде "proof of concept". Мы использовали максимально базовый функицонал систем, строили схему работы интуитивно. Важно было показать саму возможность строить аналитические системы. И доказать ее в том числе самому себе. Теперь, когда за плечами есть наработанные практики и выполненные проекты, я хочу показать вам процесс реального проектного производства с Loginom. В сферах создания аналитических хранилищ и внедрения самообслуживания. Мы не будем фокусироваться на базовых вещах. Считаем, что вы уже знаете что в Loginom можно джойнить таблички и создавать новые поля) И не будем делать утомляющих настроек в прямом эфире. Вместо этого мы вопросизведем процесс создания проекта с нуля. Так, как это происходит в жизни. Когда у нас нет заранее всей картины. Когда мы не знаем, как изменится структура данных с новым источником. Когда нужно минимизировать риски при передаче развития проекта в другие руки. Эта серия вебинаров будет про ETL, подготовку данных, и сборку моделей. Она послужит открывающей частью к следующей серии: визуализация данных в каждом значимом BI-инструменте на российском IT-ландшафте.

Тем временем, мой подопечный в челлендже "BI-архитектор с нуля за 2 месяца" продолжает ассимилировать структуру данных, котор
Тем временем, мой подопечный в челлендже "BI-архитектор с нуля за 2 месяца" продолжает ассимилировать структуру данных, которая была создана до него. Синие точки - таблицы, интегрированные в АХД его силами. Т.е. 7 из 15 таблиц здесь уже делал не я. Но они совместимы со всеми предыдущими наработками. Конечно, лозунг "BI-архитектор за 2 месяца" выглядит шапкозакидательским, и существует еще огромное количество знаний, которые нужно впитать, чтобы стать действительно мощным специалистом. Но на мой взгляд, это очень хорошая демонстрация того, как можно организовать рабочий процесс и систему разработки, которые позволяют сотруднику сразу начать применять подходы, на наработку которых в обычных условиях требуется не один год. При том с минимальным контролем и стоянием над душой. Ну а если весь справочник функций системы пока не отскакивает от зубов - всегда есть мануалы, сообщества и наставники.

Кликхаус выбрал по двум причинам: 1) Бесплатно 2) Колоночный формат БД оптимизирует место, занимаемое данными (смотрел тут, о
Кликхаус выбрал по двум причинам: 1) Бесплатно 2) Колоночный формат БД оптимизирует место, занимаемое данными (смотрел тут, одна таблица в LGD занимает 350 мегабайт, а в MS SQL - 2,5 гигабайт. Для аналитических таблиц оптимизированное хранение критично, т.к. они таблицы сильно денормализованные. В Кликхаусе пока эту таблицу на взвешивал, но принцип должен быть тот же.) 3) НЕТ ОГРАНИЧЕНИЯ НА ДЛИНУ ТЕКСТОВОЙ СТРОКИ!!! Как я устал при сохранении таблицы задавать длину текстового поля. А потом пересоздавать его, потому что внезапно составной ключ стал длиннее и теперь не влезает в прежние габариты. Что касается СУБД, если вам прям тяжко курить мануалы или аутсорсить, то тут можно очень легко развернуть ее в Яндекс.Облаке. Этот процесс я даже уже показывал в вебинаре с Loginom+Yandex Datalens. А что касается менеджмента таблиц. В Loginom можно создать таблицу при первичном экспорте - задать поля, типы данных. Но если вам потребуется изменить состав полей изменяемой таблицы - тут только идти в клиент СУБД, и писать там ALTER TABLE... Ну или сносить таблицу и пересоздавать с нуля. Я поставил себе задачу довести работу с экспортом в БД по удобству до уровня экспорта в файл, и это вполне удалось. Был создан компонент, который при поступлении в него мета-данных из другого компонента, выполняет следующее: 1. Создает таблицу, если такой таблицы нет в БД; 2. Опционально, удаляет поля, которых нет в мета-данных, но есть в таблице БД; 3. Добавляет новые поля в БД, если они появились в выгрузке; 4. Меняет типы данных у полей, если мета-данные не совпадают с БД. Таким образом, в БД всегда таблица, готовая к приему актуальных данных из Loginom, и не надо скакать между Loginom и клиентом СУБД. Ну и самое главное. Хранение в БД данных, синхронизированных с мета-данными, открывает путь к самой главной автоматизации - генерации моделей данных. Тех самых, которые УМБА в слове КУМБА)

Сегодня закрыл один из главных головняков последних дней - удобное формирование аналитического хранилища на базе Loginom + Clickhouse. В чем был затык? Раньше как базовый вариант аналитического хранилища в Loginom полагался на LGD-файлы. Это примерно то же самое, что и QVD в Qlik - хранение таблицы в одном файле в оптимизированном формате для сокращения занимаемого места. И с быстрой загрузкой в Loginom. Плюсы файлов - простота и удобство. Файл удобно перезаписывать: если добавляются/убираются поля, меняются типы данных (а это частенько происходит во время разработки). Минусы файлов: - данные из файла загружаются всегда целиком, для партиционной загрузки нужно дробить таблицу на множество файлов. - при дроблении таблицы на множество файлов теряется простота управления - нужно поддерживать одинаковый набор полей во всех файлах - данные из LGD-файлов доступны только внутри Loginom Очевидно, данные нужно выгружать в БД, но и тут есть нюансы: Плюсы: - единая структура таблицы - возможность фрагментарной перезаписи файлов - возможность ограничения загружаемых данных через where Минусы: - Нужно поднять СУБД - Менеджмент таблиц сложнее.

Отличный способ закрепления навыков - работа по чек-листам. Очень поднимает предсказуемость финального результата, а также ав
Отличный способ закрепления навыков - работа по чек-листам. Очень поднимает предсказуемость финального результата, а также автономность подопечных. Кроме того, это отличный способ сохранения накопленного опыта. К какой структуре чек-листов я пришел: 1. Отдельно делаем глоссарий основных понятий. Например, термин Аналитическое хранилище Qlik содержит описание что это такое, где находится, как подключиться и т.д. И мы не повторяем это в пунктах чек-листа, добиваясь краткости; 2. В начале каждого чек-листа кратко пишем, зачем он нужен. Иначе сами не вспомните через пару недель; 3. Чек-лист содержит ссылки на термины и развернутые инструкции, там, где это необходимо. Кстати, таки путем можно использовать один набор чек-листов для множества проектов ;); 4. Чек-лист должен помещаться на один лист А4. Ничего не сравнится в удобстве с распечатанным листом, на котором еще и можно что-то черкать. Если не помещается - разбиваем на "суб-процедуры", чтобы помещалось. Будет хорошо, если результатом "суб-процедуры" будет полноценно выполненный этап, а не просто перенос действий на следующий лист; Составляете чек-листы для себя или других сотрудников? Поделитесь вашим опытом в комментариях.

Интересный факт. Сейчас занимаюсь разработкой библиотеки компонентов для ETL и формирования аналитического хранилища на Login
Интересный факт. Сейчас занимаюсь разработкой библиотеки компонентов для ETL и формирования аналитического хранилища на Loginom. И честно говоря, за счет работы с этой Low-code платформой я улучшил понимание программирования намного лучше, чем за годы написания скриптов под Qlik. Очень сильно прокачивается правильное построение архитектуры решений, прежде всего. Потому что со сценарием в стиле "спагетти-кодинг" работать в визуальном проектировании просто невозможно :) Честно говоря, всем кто хочет связать свою жизнь с работой с анализом данных, рекомендую начинать свой путь с Loginom. Потому что: 1) Быстрее выйдете на практический результат; 2) Быстрее сформируете представление о эффективной организации сложных систем со множеством модулей. 3) Пропитаетесь философией переиспользования. Что сэкономит много времени в проектах и вам, и вашим заказчикам.

Жизненно Опасные Проекты Аналитики №3: расчет фин. показателей на стороне BI-системы. Иногда BI-разработчиков посещает грандиозная идей: а не сделать и нам расчет валовой прибыли на стороне ETL-инструмента? Ведь что может пойти не так при портировании отчета, который формируется запросом на 4 экрана в 1С? Буду краток в этот раз. Просто не тратьте время. В лучшем случае, получите отчет такой же как в источнике. И бесплатный бонус - необходимость админить логику формирования показателя на своей стороне. В худшем случае, данные не сойдутся. И вы получите недели поиска ошибок/виноватых/истины... Но поможет ли это компании работать лучше? Далеко не факт. В конце концов, если есть сомнения в правильности логики работы отчета в условном 1С, нужно разбирать этот отчет на стороне 1С, а не воссоздавать с нуля в других инструментах. Если в источнике есть сложно рассчитываемые показатели, найдите способ получать их в готовом виде. Да хоть бы в файловых выгрузках. Лучше иметь простую загрузку из набора файлов. Чем получать данные из БД через написание сверх-сложного запроса. P.s. Под напором опыта Иванова Петра @blackskif добавлю уточнение. Важно понимать, что пересборка логики на стороне BI запросто выливается в отдельный проект. И что заказчик хочет от вас именно этого. А не, например, видеть то что он видит в 1с + другие источники.

Пример мета-данных.xlsx0.12 KB

Важнейшей функцией ETL-инструмента является возможность создания мета-данных. Если кто не знает, мета-данные - это таблицы с описанием данных. Когда таблиц в аналитическом хранилище становится слишком много, полагаться на ручную документацию и построение схем становится бесполезно. У меня как-то повелось, что генерацию мета-данных я пишу сам, используя встроенные возможности аналитических платформ. Совершенствовать сбор меты можно бесконечно, поэтому опишу основу, которую формирую в обязательном порядке: - Наименование таблицы - Описание таблицы - Наименование поля - Описание поля - Роль поля (мера/измерение/ключ) - Превью значений поля (иногда проще посмотреть что хранится в поле без загрузки данных. Отлично дополняет описания) - Первичный ключ таблицы Можете посмотреть расширенный пример в приложенном файле. С помощью мета-данных можно: 1. Построит интерактивную документацию и схему данных (дашборд про данные); 2. Контролировать соблюдение стандартов подготовки данных; 3. Автоматизировать работу с данными аналитического хранилища (построение моделей, ad-hoc запросы) Как вы формируете мета-данные в своих проектах, и формируете ли вообще? Что интересного вы делали с мета-данными?

Завершаем пятницу на триумфальной ноте) Мой подопечный выполнил первую по-настоящем архитектурную задачу: уложил новый массив
Завершаем пятницу на триумфальной ноте) Мой подопечный выполнил первую по-настоящем архитектурную задачу: уложил новый массив данных в единую схемы данных по КУМБА А значит, все вычисления по новым данным будут совместимы со всеми отчетами, которые разрабатывались за 2 года до него. И всеми будущими отчетами, о которых мы еще даже не знаем.

Пятничная мысль. Считаю очень важным навыком для ИТ-специалиста, и бизнес-аналитика в частности, избегать ситуаций в стиле "сэкономил сто тысяч, а получил проблем на миллион". Эта мысль - не про специализированные ИТ-компании, а про торгово-производственные бизнесы. Прежде всего она относится, конечно, к самопальным разработкам функционала, который можно приобрести на рынке. При этом, у любителя самопальщины возникает четкое убеждение, что напрогать самому или заказать у фрилансера - это проще и надежнее, чем взять решение, которое разрабатывала команда на протяжении нескольких лет, и обкатала в десятках проектов. Мое глубокое убеждение - каждый раз, когда ИТшник укатывается в самописный кастом вместо готового решения - это поражение. Поражение для бизнеса, потому что он получает инфраструктуру, которую может поддерживать целый 1 специалист в мире (ее автор). И поражение для ИТшника, который вместо адаптации процессов под готовые инструменты, привлечение лучшей отраслевой экспертизы и управления финансовыми потоками, занимается копошением в коде. Кстати, на чем больше всего горят такие внутренние разработки - невозможность адекватно спрогнозировать ресурсы на поддержку решения. Откуда-то появляется ощущение, что "я напишу 1 раз, и оно будет работать всегда, и никогда не сломается". Конечно же сломается. Из-за ошибок в коде. Из-за ошибок в API систем-источников. Из-за не протестированных сценариев использования. Итого: Если вы ИТ-спец/аналитик в СМБ компании, стремитесь максимум аутсорсить и интегрировать решения, а также координировать команды. Это поможет вам повысить профессионализм, и улучшит карьерные перспективы. Если вы бизнес-заказчик и хотите купить классную функциональность, но ваш ИТ-шник шепчет на ухо: "не покупай, я сам напрогаю, работы на неделю", не верьте ему :)

Жизненно Опасные Проекты Аналитики. Часть 2. Дикие калькуляторы. У большинства компаний есть различные калькуляторы в таблицах. Это финмодели, расчеты заказов на закупки, прогнозы, ну и всякое другое. Отличительной особенностью таких калькуляторов являются 3 вещи: 1) Они требуют объемного ввода данных с ручными корректировками; 2) Часто, они дорабатываются пользователем прямо на ходу под каждую итерацию моделирования; 3) Внутри заложено множество неочевидных костылей, о которых никто сразу не вспоминает. Видя, как BI-системы выводят картины по сложным моделям данных, заказчику приходит в голову гениальная идея - портировать калькулятор на BI. Разработчик тоже может поддаться этому порыву, ведь на его стороне - мощные скрипты, low-code программирование и все такое. Как жаль, что такой проект может запросто зайти в тупик. ❌ У вас может не получиться дать пользователю удобное обновление результатов расчетов - придется запускать ETL-процесс каждый раз, вместо обновления данных на лету; ❌ Пока вы делаете то, на что договорились, заказчик перепилил механику расчетов, и ваше решение больше не актуально; ❌ Приключение "на 20 минут, вошел и вышел", превращается в эпопею на часы и дни, потому что заказчик достает ранее неозвученные особенности функционала, как шулер достает тузы из рукава.=; ❌ Теперь все изменения в этот механизм нужно вносить вам, т.к. заказчик в BI-разработке не разбирается; Как быть, когда вам предлагают сделать что-то подобное? Чтобы не попасть в капкан и не обмануть ожидания заказчика, следуйте правилу: Если речь идет не о разработке инструмента с нуля, браться за проект не надо. Если же что-то делается с нуля, то убедитесь, что заказчику будет нормально работать в условиях, когда данные обновляются не мгновенно. Если вас просят перенести расчетную часть уже имеющихся калькуляторов в BI, то есть смысл отказаться от такой работы (и отметить, что пора бы уже настроить несчастный автозаказ в 1С). Но чтобы не отказывать заказчику и не оставлять его ни с чем, вы можете предложить: ✅ Сделать на стороне BI предподготовку данных для калькулятора. Чтобы заказчик выгружал одно готовое полотно данных для калькулятора, а не ВПРил 10 таблиц; ✅ Освоить low-code аналитическую систему вроде Loginom, и самостоятельно модернизировать свой калькулятор; ✅ Визуализировать данные из калькулятора в BI в единой модели данных. Пишите в комментариях, на какие калькуляторные грабли вы наступали)

КУМБА! Эффективное внедрение BI-аналитики - Statistics & analytics of Telegram channel @bi_cumba