Удобнейшая фича таблиц в Google Sheets — возможность фильтровать данные по различным условиям. Но есть одна проблема. Если документом пользуется несколько людей, злоупотребление этой функцией приводит к хаосу. «Кто опять изменил таблицу?»
Решение: использовать режимы фильтрации.
Создать режим фильтрации можно двумя способами:
Выбрать в главном меню «Данные / Создать режим фильтрации»
Нажать на калькулятор рядом с названием таблицы и выбрать «Создать режим фильтрации»
Плюсы такого подхода:
Режим фильтрации не меняет исходную таблицу.
Его можно сохранить под удобным именем.
На сохранённый режим можно дать ссылку.
Режимы фильтрации позволяют создать несколько представлений одной таблицы и удобно переключаться между ними.
В Excel есть похожая функция, находится в меню «Вид / Представление листа».
🏆 «Круги Громова» в Топ-100 ИТ-лидеров – прошу поддержать!
Вместе с Сергеем Громовым, основателем «Кругов Громова», мы стали номинантами рейтинга Топ-100 ИТ-лидеров GlobalCIO за вклад в российскую ИТ-отрасль — выпуск крупнейших на рынке независимых обзоров российских ИТ-систем: BI, ETL, MDM, ESB, RPA, Data Quality, Self-Service, AI и других.
Для нас это ещё одно признание экспертизы в ИТ-сообществе 💙
Поддержать можно до 4 мая — голосование доступно для участников сообщества GlobalCIO со статусом ИТ-руководителя:
Разрываем шаблоны: строим график с разрывом всего на 65 строк
Иногда нужно скрыть часть графика используя линию обрыва, чтобы показать данные с сильно различающимися значениями. Например, когда один язык программирования популярнее остальных в разы.
Самые ходовые решения этой проблемы — разорванная ось (broken axis) или отдельные бины для аномалий. Проблема в том, что в Matplotlib нет готовой «кнопки» для создания гистограммы с разрывом. Но это легко* собирается руками на уровне нескольких осей.
Вот три рабочих подхода — выбирайте под свою задачу.
Официальный пример из документации Matplotlib. 🔗 Ссылка на гайд. Отлично работает, когда выбросы зашкаливают по одной оси (X или Y). В посте разбирается как раз такой случай: гистограмма с волнистой линией обрыва.
Библиотека brokenaxes делает почти всё сама. Устанавливается стандартно через pip. Вариант для тех, кто не хочет углубляться в ручную настройку.
Логарифмическая шкала (часто — самый простой выход) Если выбросы строго положительные и отличаются на порядки, иногда достаточно двух строк: plt.xscale(«log») или plt.yscale(«log»). Никаких разрывов, никакой ручной работы — при этом график остаётся чистым и читаемым.
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.path import Path
def plot_broken_axis(
labels: list[str],
values: tuple[float, ...],
ylim_low=(0, 12),
ylim_high=(20, 25),
**kwargs,
):
"""
Строит график с разрывом оси.
Валидирует входные данные и инкапсулирует логику отрисовки.
"""
if len(labels) != len(values):
raise ValueError("Длины labels и values не совпадают")
fig, (ax_high, ax_low) = plt.subplots(
nrows=2, figsize=(7, 4), gridspec_kw={"height_ratios": [1, 2]}
)
# Настройки столбцов
kwargs.setdefault("color", "skyblue")
kwargs.setdefault("edgecolor", "black")
kwargs.setdefault("alpha", 0.85)
ax_low.bar(labels, values, **kwargs)
ax_high.bar(labels, values, **kwargs)
fig.subplots_adjust(hspace=0.0)
# Настройка осей
ax_low.set_ylim(*ylim_low)
ax_high.set_ylim(*ylim_high)
ax_high.set_title("График с разрывом")
ax_low.set_ylabel("Рейтинг в %")
ax_low.set_xlabel("Языки")
ax_high.spines["bottom"].set_visible(False)
ax_low.spines["top"].set_visible(False)
ax_high.tick_params(axis="x", bottom=False, labelbottom=False)
# Рисуем разрыв оси (волна)
offset, n_points = 0.03, 33
pts = np.linspace(-offset, 1 + offset, n_points)
wave = np.array([1 + (0, offset, 0, -offset)[i % 4] for i in range(n_points)])
path = Path(list(zip(pts, wave)), [Path.MOVETO] + [Path.CURVE3] * (n_points - 1))
opts = dict(transform=ax_low.transAxes, clip_on=False, zorder=10)
ax_low.add_patch(mpatches.PathPatch(path, lw=6, **opts))
ax_low.add_patch(mpatches.PathPatch(path, lw=3, edgecolor="white", **opts))
return fig
if __name__ == "__main__":
langs = ["Python", "C", "C++", "Asm"]
pops = (21.8, 11.1, 8.6, 1.1)
# Стиль xkcd
with plt.xkcd(scale=1, length=300, randomness=30):
plt.rcParams["font.family"] = "Comic Sans MS"
# Вызов функции
fig = plot_broken_axis(langs, pops)
plt.show()
5 человек, 1 300 дашбордов, 2 200 пользователей в месяц. Как не сойти с ума
В Уралсибе self-service BI вышел на масштаб, который сложно представить: 12 000 датасетов, 200+ разработчиков в разных бизнес-блоках, 1 000 потоков данных обновляются каждый день. И всё это поддерживает команда из пяти человек.
При таком масштабе неизбежно появляются дубли, забытые дашборды, сломанные компоненты, разработчики, которые не знают о существовании друг друга, и пользователи, которые всё ещё спрашивают «а зачем BI, если есть Excel?».
Как с этим справляться? Семён Юников расскажет про систему, которую они выстроили: автоматические рассылки разработчикам с рекомендациями по их же объектам, кастомный каталог дашбордов с ИИ-поиском, геймифицированный марафон на 80 разработчиков, после которого количество сломанных компонентов сократилось вдвое. И да, заставки на корпоративных ноутбуках с надписью «Ты ещё в Excel? Переходи в FineBI» тоже часть стратегии.
В Японии представили спортивную визуальную систему Fencing Visualized, которая в с помощью ИИ в режиме реального времени отслеживает движение шпаг и спортсменов на дуэлях, рисуя их цветные шлейфы. Технология работает через компьютерное зрение без датчиков и маркеров. Дополнительно система распознаёт приёмы фехтовальщиков и показывает их на экране.
Встраивание вычислений в PostgreSQL: PL*, extensions, а теперь и WASM
В рамках выступления на PG BootCamp Russia 2026 Дмитрий Дорофеев, главный конструктор Luxms, рассказал о том, как сегодня развивается встраивание вычислений в PostgreSQL: от классических процедурных языков (PL/pgSQL, PL/Python и других) до новых возможностей с использованием WebAssembly (WASM).
В PostgreSQL исторически поддерживается несколько десятков языков программирования. Если этого недостаточно, можно воспользоваться готовым расширением из огромной экосистемы либо написать своё. Прогресс не стоит на месте, и теперь для выполнения стороннего кода в PostgreSQL можно использовать WASM.
На примере Luxms BI я расскажу, как мы автоматически генерируем Swagger-документацию прямо внутри PostgreSQL с помощью open-source технологий и WASM.
Вебинар «BI + ETL + КХД за 1,5 млн: как Modus закрывает весь стек корпоративной аналитики»
21 апреля в 12 по МСК приглашаем на вебинар, на котором эксперты ИТ-интегратора «Белый код» расскажут, как малому и среднему бизнесу внедрить BI-систему за 1,5 миллиона рублей.
Одна из задач, с которой к интегратору приходит малый и средний бизнес, — внедрение BI в рамках ограниченного бюджета. При этом есть жесткие требования, например, единая экосистема BI + ETL, без «зоопарка» инструментов, а также нативная работа с 1С как основным источником данных.
На вебинаре специалисты поделятся практикой внедрения в сегменте МСБ, а также ответят на вопросы.
Вы узнаете:
Почему BI сам по себе не решает проблему разночтений в данных
Какие организационные изменения нужны, чтобы аналитика начала работать
Modus ETL: как устроена загрузка и обработка данных
Modus BI: аналитический портал без лишней сложности
Структура проекта за 1,5 млн рублей: стоимость лицензий, этапы проекта и результат
Спикеры вебинара
Андрей Рыжик, product owner BI-направления компании «Белый код»
Наталья Лобанова, коммерческий директор компании «Белый код»
📌Дата и время: 21 апреля 12:00 МСК (онлайн)
Участие бесплатное, требуется предварительная регистрация.
Приходите на онлайн-конференцию GlowByte и FanRuan разбираться, куда делось чудо
Дашборды построены, хранилища заполнены, лицензии куплены, а решения по-прежнему принимаются «на ощущениях». Это не ваша уникальная проблема – это системный разрыв между потенциалом BI и его реальным применением.
22 апреля в 15:00 (МСК) приглашаем вас на Fine Day Online 2026 – ежегодную онлайн-конференцию от GlowByte и FanRuan, где мы разберем, как этот разрыв закрыть.
Что в программе:
● От данных к ИИ-инсайтам – как превращать сырые данные в умные решения, а не просто красивые графики (Вилл Ченг, ведущий эксперт по отраслевым решениям, руководитель направлений пресейл и внедрение CIS, FanRuan);
● Интеграция FanRuan + DataHub – реальный опыт построения связной экосистемы данных (Дмитрий Конюхов, ведущий инженер отдела управления данными, “Галамарт”);
● 1 500 дашбордов для 2 500 пользователей – как сделать BI удобным и востребованным в масштабе (Семён Юников, главный эксперт Дирекции BI, Уралсиб);
● Shadow DWH – тёмная сторона self-service аналитики и как с ней справляться (Пётр Гордиенко, Lead BI, ОТП);
● Миграция FineBI с 6.0 на 7.0 – практический опыт и подводные камни (Евгений Иванов, DevOps BI-платформы, ОТП).
Для кого:
Руководители и специалисты в области BI, Data & Analytics, CDO, продуктовые и бизнес-аналитики – все, кто хочет, чтобы данные наконец работали на результат.
Формат:
Онлайн, бесплатно, ~3 часа концентрированной пользы. Нужна только регистрация.
Часто возникает задача сгруппировать исторические данные по неделям, месяцам, кварталам или годам. Иногда для решения этой задачи создают дополнительный столбец (например, Месяц) и строят по нему сводную таблицу.
Есть более простой способ сгруппировать данные, но его нет в настройках сводной таблицы, поэтому многие пользователи даже не догадываются о нём:
1️⃣ Построить сводную таблицу по столбцу с датами.
2️⃣ Нажать на любую дату и выбрать в контекстом меню желаемый тип группировки.
Функция SORT (СОРТ) позволяет упорядочить исходную таблицу и вставить результат в другое место. По умолчанию таблица сортируется по первому столбцу в порядке возрастания:
Sheets: =SORT(A:C)
Excel: =СОРТ(A:C)
Для сортировки по другому столбцу можно передать его номер и направление сортировки: по возрастанию или по убыванию. В Google Sheets это TRUE и FALSE, в Excel — 1 и -1. Следующая формула сортирует таблицу по второму столбцу в порядке убывания:
Sheets: =SORT(A:C;2;FALSE)
Excel: =СОРТ(A:C;2;-1)
Недостаток такого подхода: при добавлении/удалении столбцов формула может сломаться, придётся вручную обновлять номер столбца. Поэтому гораздо удобнее передавать не номер, а сам столбец для сортировки. В Google Sheets для этого используется та же функция SORT, в Excel — отдельная функция СОРТПО:
Sheets: =SORT(A:C;B:B;FALSE)
Excel: =СОРТПО(A:C;B:B;-1)
Можно задавать несколько столбцов сортировки. Следующая формула сортирует таблицу по второму столбцу в порядке убывания, одинаковые значения сортируются по третьему столбцу в порядке возрастания:
Sheets: =SORT(A:C;B:B;FALSE;C:C;TRUE)
Excel: =СОРТПО(A:C;B:B;-1;C:C;1)
Наконец, лайфхак, про который не рассказывают в документации. Если нужно упорядочить данные по разнице столбцов B и C (пример: доходы минус расходы или цена минус себестоимость), то можно использовать формулу массива. В Google Sheets понадобится ARRAYFORMULA или MAP, в Excel всё работает и без них:
Если попытаться ввести в ячейку электронной таблицы номер телефона, внезапно пропадёт плюс:
+79876543210 → 79876543210
А при попытке вбить форматированный номер телефона и вовсе выскочит ошибка:
+7 987 654-32-10 → #ERROR
Дело в том, что значения с плюсом в начале распознаются как формулы. Как же тогда ввести телефонный номер в ячейку? Достаточно добавить в начале апостроф. Тогда электронная таблица не будет пытаться распознать формулу и просто воспримет значение как текст:
'+79876543210 → +79876543210
'+7 987 654-32-10 → +7 987 654-32-10
Этот способ пригодится в любых случаях, когда значение начинается с плюса, знака равно или похоже на дату (особенно частая проблема).
Успейте подать свою работу на конкурс BI-дашбордов Data Challenge
Партнер GlowByte компания FanRuan продолжает принимать заявки на первый открытый конкурс BI-дашбордов и визуальной аналитики FineGallery Insight Challenge. Срок подачи - до 31 марта.
FineGallery Insight Challenge – это конкурс для аналитиков, BI-разработчиков и команд, которые работают с данными и создают дашборды.
Цель конкурса – показать, насколько мощной и красивой может быть визуальная аналитика, и дать пользователям пространство для обмена идеями, диагностиками, методами анализа и вдохновляющими примерами решений визуализации.
Как участвовать
1. Создайте аналитическую работу в FineBI или FineReport.
2. Заполните форму подачи, включив:
дашборд,
описание работы по структуре (описана на сайте конкурса),
информацию об авторе.
3. Дождитесь подтверждения участия и ждите результатов.
Призовой фонд
Лучшая бизнес-аналитика – 100 000 руб.
Лучший UX (пользовательский опыт) и визуальный дизайн – 70 000 руб.
Приз зрительских симпатий – 30000 руб.
Все подробности, включая сроки и требования к конкурсным работам – на сайте конкурса.
Для работы с данными, будь то группировка или условная агрегация, важно, чтобы значения записывались однообразно. Как быть, если нужно сгруппировать сотрудников по отделам, а в соответствующем столбце намешаны «Продажи», «Отдел продаж», и «Sales»? В таких случаях необходимо настроить проверку вводимых значений по словарю.
1️⃣ Для хранения словаря рекомендуется создать таблицу «Отделы». Во-первых, её будет просто дополнять и редактировать. Во-вторых, таблицу можно использовать для хранения метаданных. Например, добавить информацию о руководителе отдела или о расположении в офисе.
2️⃣ Когда словарь готов, можно вернуться в таблицу «Сотрудники», открыть меню столбца «Отдел» и поменять тип на «Раскрывающийся список». Далее в поле «Критерии» указать «Раскрывающийся список (из диапазона)» и ввести табличную ссылку:
=Отделы[Название]
3️⃣ После включения проверки некорректные значения помечаются красным уголком. Искать их глазами утомительно, поэтому проще временно скрыть корректные значения. Для этого можно зайти в меню столбца, выбрать «Столбец для фильтра», «Фильтровать по условию», «Данные не проверены». Таким образом в таблице останутся только некорректные записи, которые легко исправить. И не забыть сбросить фильтр.
GitHub визуализировали в цифровой город в проекте gitcity. В рамках проекта представлен сайт, на котором можно летать по «городу», где каждое здание это аккаунт разработчиков. Высота небоскребов = количеству коммитов. Летая по городу, можно искать интересные и популярные аккаунты, либо находить что-то новое и недооцененное.
Приходите на вебинар, расскажем, как получить максимум от системы аналитики
Сначала данные собирали вручную, потом появился BI. Теперь вопрос в том, как получить максимальную отдачу от системы аналитики?
Ответ в облачном сервисе для визуализации и анализа данных — Evolution Managed BI. О нем и расскажем на вебинаре.
Интересно будет бизнес-аналитикам, дата-инженерам, руководителям отделов аналитики. Кстати, если вы еще не работали с нашим или подобным BI-сервисом, то можете бесплатно протестировать его перед вебинаром.
Что расскажем и покажем:
как устроен облачный сервис: обсудим архитектуру и преимущества managed-подхода для сокращения времени вывода аналитики в продакшен;
что может сервис: расширенные возможности обработки данных, кеширование запросов, управление доступом и безопасность данных;
как интегрировать данные на практике: подключать и настраивать различные источники (PostgreSQL, S3 и не только), трансформировать данные и создавать виртуальные датасеты;
как визуализировать данные: создать интерактивный дашборд с нуля, настроить фильтры и параметры, использовать продвинутые визуализации;
что еще можно делать с помощью сервиса: создание кастомных SQL-запросов, использование метрик и вычисляемых полей, настройка автоматических отчетов и алертов.
📅 Когда? 12 марта в 11:00 мск.
📍Где? Онлайн. Зарегистрируйтесь, чтобы задать вопросы экспертам в прямом эфире.
P.S. У нас есть специальное предложение для тех, кто планирует перенести свою аналитическую систему в облако: вы запускаете тестовый проект в рабочей среде без первоначальных затрат на инфраструктуру, мы — подбираем конфигурацию сервисов и оказываем усиленную поддержку архитекторов. Предложение действует до 31 июля 2026
Найм больше не работает как раньше: тренды 2025–2026 и новая роль HR-tech в бизнесе
В 2025–2026 рынок найма — уже новая норма: дефицит кадров становится структурным.
📉 В РФ не хватает около 4,8 млн специалистов, при этом 62% компаний всё равно планируют рост численности, а 24% работников за год сменили работодателя (в отдельных отраслях треть и больше держатся на месте меньше года).
С другой стороны — оптимизация внутренних процессов. Это ощущается особенно жёстко: по данным hh.ru, 63% компаний в 2024 сокращали или планировали сокращение ФОТ. Получается: ресурсов меньше, цена ошибки выше, запрос на автоматизацию растёт.
💸 Дальше включается экономика, которую обычно недооценивают:
21% сотрудников уходят ещё до конца испытательного срока
Ещё 15% — сразу после него
Замена одного сотрудника обходится бизнесу в 1,5–2 годовых зарплаты
Среднее время выхода на продуктивность — 65 дней, для технических ролей — до 90
⚙️ В такой реальности HR-цифровизация перестаёт быть просто дополнительной фишкой или бонусом при найме. Она становится частью операционного контура: либо вы сокращаете потери системно, либо платите за них постоянно.
Часть компаний в РФ уже давно смотрят в сторону HR-приложений:
🤖 AI в HR перестаёт быть экспериментом: 43% компаний в РФ уже используют AI в HR (против 26% в 2024), а 78% enterprise-компаний применяют AI в рекрутинге.
🔄 Фокус смещается на self-service (справки, отпуск, расчётные листки) — до 80% типовых запросов можно вынести из HR-ручного режима.
📊 Окупаемость понятна: в среднем точка окупаемости HR-приложения — на 9-й месяц, к 18-му ROI может доходить до ~340%.
📎 Мы собрали эти и другие данные в исследование, где зафиксировали ключевые тренды HR-tech 2025–2026, разобрали, как компании подходят к мобильным HR-продуктам, и какие решения дают эффект на практике.
🎁 Отдельный бонус: сделали кликабельный прототип почти готового HR-приложения — не концепт, а рабочий флоу, который можно показать своим HRD.
Исследование в открытом доступе, оно бесплатно и экономит 2–3 месяца аналитики и обсуждений на старте, если вы думаете о запуске или перезапуске HR-продукта 👇
Пусть есть таблица со всеми сотрудниками компании. Как найти общее число инженеров? С этой задачей справляется функция COUNTIFS (в формулах используются табличные ссылки):
=COUNTIFS(Сотрудники[Должность];"Инженер")
Мы передаём в функцию столбец «Должность» и просим посчитать количество ячеек, содержащих значение «Инженер».
В отличие от поиска, можно легко комбинировать несколько условий. Следующая формула считает количество инженеров в Москве:
Здесь первым параметром передаётся столбец, который будем суммировать, а дальше условия для выборки. Аналогично работают функции MINIFS и MAXIFS.
Иногда возникает необходимость в более сложной агрегации. Например, нужно склеить имена инженеров через запятую. Специальных формул для такой операции нет. Как быть? В такой ситуации можно сначала выбрать нужные записи с помощью FILTER и потом склеить через JOIN:
Цифровые двойники и 3D-визуализация: опыт GlowByte и FanRuan
GlowByte и FanRuan провели бизнес-завтрак с промышленными компаниями. Мероприятие было посвящено новым возможностям бизнес-аналитики, которые открывают инструменты FineVis и FineReport.
Эксперты продемонстрировали, как компании переходят от статичных дашбордов к интерактивным цифровым двойникам, которые обновляются в реальном времени и помогают принимать решения быстрее: от таблиц и графиков – к живым цифровым моделям.
Чжан Цзэфэн, Product & R&D Lead FineVis, FanRuan, рассказал:
как развивалась визуализация данных – от первых таблиц до VR/AR и 3D-моделирования,
что такое цифровой двойник и какие уровни зрелости существуют – от L0 до автономных систем L5,
почему 3D-визуализация имеет критичное значение для аналитики,
как применяют компании 3D-моделирование в логистике, производстве, энергетике, умных городах, медицине,
как FineVis и FineReport объединяют визуализацию и аналитику, интегрируя данные из ERP-, MES- и IoT-систем.
Алексей Коломенцов, старший консультант практики Business Intelligence, GlowByte, провел демо, в котором пошагово показал, как с помощью FineVis создать полноценного цифрового двойника – от пустой сцены до живой 3D-модели с данными.
В демо вы увидите:
Интерфейс системы и ключевые инструменты для работы.
Как строить сценарии взаимодействия с моделью.
Создание с нуля примера 3D-анимации.
Подключение реальных данных к объектам и их отображение в режиме реального времени.
Как сделать визуализацию интерактивной и полезной для аналитики.
Грех номер один при работе с электронными таблицами — ручная группировка данных.
Допустим, есть задача собрать список сотрудников по отделам. Руководитель набрасывает несколько табличек, по одной на каждый отдел. Названия отделов выделяет крупным шрифтом и цветом.
На следующий день приходит задача собрать список сотрудников, но уже по городам. Чёрт, нужно всё переделывать! Создаётся новый лист, где также собирается несколько таблиц. И красивые заголовки, куда без них.
Нажать на стрелку рядом с названием столбца «Отдел» и выбрать «Столбец "Основание группировки"».
Сохранить получившийся фильтр под названием «Сотрудники по отделам».
Проделать аналогичную операцию для столбца «Город».
Итог: получилась одна таблица с данными и два её представления: «Сотрудники по отделам» и «Сотрудники по городам», между которыми можно переключаться в два клика.
GlowByte разработала методику выбора BI на основе сценарного анализа
Источник: Freepik.com
Практика Business Intelligence GlowByte разработала подробное руководство по сценарному выбору BI с готовой Excel-матрицей для сравнения платформ.
GlowByte выделяет 4 ключевых сценария с разными потребностями и акцентами:
отчеты для руководителя,
self-service,
регламентная отчетность,
исследование данных.
Сценарии в матрице сопровождаются своим набором релевантных критериев, каждый из которых имеет оценку критичности, что позволяет адаптировать расчет под конкретный проект: при изменении критичности пересчитываются все баллы, и BI-платформа получает новую оценку.
ℹ️ Методика учитывает изменения в BI-ландшафте, запрос на адаптивность и гибкость, а также необходимость подстраивать инструмент под задачу, а не наоборот. Исследование содержит детальные чек-листы по каждому сценарию, критерии оценки и примеры расчетов.
Чтобы строить графики, диаграммы и таблицы, получать аналитику в реальном времени и использовать встроенный SQL Lab достаточно подключить инстанс Evolution Managed BI с free tier.
📊 Что такое Evolution Managed BI
Это управляемы сервис в облаке для создания интерактивных дашбордов и отчетов, построенный на основе Apache Superset.
💸 Что такое free tier
Evolution Managed BI с free tier (объемом ресурсов, за который не надо платить) — это бесплатный экземпляр инстанса BI на виртуальной машине в конфигурации 2 vCPU и 4 ГБ RAM. Плюс полный доступ ко всем функциям сервиса и персональные консультации от наших экспертов по настройке дашбордов в облаке.
Дополнительные сервисы, например, публичный IP, не входят в free tier — они оплачиваются отдельно по тарифам облачной платформы.
👉 Собрали подробные руководства, в них по шагам рассказываем, как создать сервис, подключиться к СУБД, создать первый датасет и построить дашборд:
Павел Варнавский, руководитель группы разработки «ДАР» (Корус Консалтинг), рассказал, как их команда использует BI Magic в своих проектах для создания мощных аналитических решений.
Как внедрять CI/CD для дэшбордов и масштабировать решения под конкретные процессы, там, где стандартных «коробочных» решений не хватает
Два практических кейса, где кастомная разработка на Luxms BI решила нетипичные задачи
Будет интересно всем, кто работает с нестандартной аналитикой, сложными требованиями бизнеса и хочет понимать, как кастомная BI-разработка может быть управляемой и удобной
Самая недооценённая функция электронных таблиц — таблицы. Что за ерунда, подумает читатель. Дело в том, что есть два английских слова: spreadsheet и table. При переводе на русский язык возникает путаница.
Таблица — это набор данных в виде столбцов (как в SQL). Изначально таблицы были реализованы в Excel, а в 2024 появилась поддержка и в Google Sheets.
Пусть есть список сотрудников из трёх столбцов: ID, ФИО и Оклад. Преобразуем его в таблицу. Для этого достаточно в любом месте диапазона с данными нажать сочетание клавиш:
Excel: Ctrl + T (⌘ + T)
Google Sheets: Ctrl + Alt + T (⌘ + ⌥ + T)
Поначалу кажется, что данные просто красиво отформатировали. Но это лишь внешнее изменение. Главное отличие: названия таблицы и её столбцов можно использовать в формулах в виде табличных ссылок.
Переименуем таблицу в Сотрудники (в Excel это делается не совсем очевидно). Теперь посчитаем сумму окладов двумя способами: с помощью обычных и табличных ссылок.
Как в электронной таблице найти строчку не по одному столбцу, а по двум? XLOOKUP умеет искать только по одному, поэтому приходится выкручиваться.
Пример: есть таблица продаж, где в столбцах A и B хранятся дата и идентификатор товара. Нужно найти продажи определённого товара за конкретный день.
Первое решение: создать в исходной таблице вспомогательный столбец C, в котором склеить дату и идентификатор товара. Для склейки используем оператор & (амперсанд):
=A2&B2 (и так для всех строчек)
Теперь можно искать по этому столбцу и доставать необходимые данные, например, из столбца D. Если нужно найти продажи товара 1234567 за сегодня, используем формулу:
=XLOOKUP(TODAY()&"1234567";C:C;D:D)
Второе решение: генерировать этот вспомогательный столбец на лету с помощью ARRAYFORMULA и так же искать по нему:
Почти каждый пользователь электронных таблиц рано или поздно сталкивается с задачей провэпээрить таблицу: найти значение в одном столбце и вернуть соответствующее значение из другого столбца. Типичный сценарий: перенести данные из одной таблицы в другую по какому-то идентификатору.
Функция VLOOKUP (ВПР) появилась в 1985 году в самой первой версии Excel и занимала третье место по популярности среди пользователей (после SUM и AVERAGE). За это время она морально устарела, поэтому в 2020 году разработчики Excel добавили новую функцию XLOOKUP. В 2022 году она появилась и в Google Sheets.
Напомню, VLOOKUP принимает на вход четыре параметра:
искомое значение;
ссылку на таблицу (поиск идёт по первому столбцу);
номер столбца с результатами;
тип поиска: точный или приблизительный.
1️⃣ VLOOKUP закладывается на структуру исходной таблицы. Если завтра порядок столбцов поменяется, формула может сломаться. Придётся руками обновлять номер столбца с результатами. XLOOKUP принимает на вход два диапазона и спокойно переживает перемещение любого из них:
2️⃣ Для VLOOKUP столбец с результатами должен располагаться справа от столбца для поиска. Передать третьим аргументом отрицательное число нельзя. XLOOKUP лишён этого ограничения и позволяет доставать результаты слева от столбца для поиска:
=XLOOKUP("needle";B:B;A:A)
3️⃣ При неудачном поиске VLOOKUP возвращает #N/A. Если вместо ошибки хочется выводить что-то другое (например, пустое значение), приходится дополнительно вызывать функцию IFNA. В XLOOKUP можно четвёртым аргументом передать значение, которое будет выводиться при неудачном поиске:
4️⃣ По умолчанию VLOOKUP ищет приблизительное совпадение. Для поиска точного соответствия надо передать FALSE или ноль четвёртым параметром. Часто про это забывают и долго разбираются, почему функция работает не так, как ожидалось. XLOOKUP по умолчанию ищет точное соответствие, помогая избежать ошибок.
5️⃣ Приблизительный поиск VLOOKUP умеет искать только ближайшее меньшее значение. При этом исходная таблица должна быть отсортирована. XLOOKUP в режиме приблизительного поиска позволяет искать как меньшее, так и большее значение. Таблицу сортировать необязательно.
6️⃣ Если подходящих значений в таблице больше одного, VLOOKUP ищет только первое совпадение. XLOOKUP умеет запускать поиск с любого конца и может находить как первое, так и последнее совпадение.
Единственный минус XLOOKUP: функция недоступна в Excel 2019 и более ранних версиях. Да и по-русски называется ПРОСМОТРХ, где Х — это «икс», а не «ха». К вопросу, почему я избегаю русскоязычные названия функций.
В Google Sheets есть две функции, позволяющие производить операции над целыми массивами: ARRAYFORMULA и MAP.
Пусть в столбце A лежит цена товара, а в столбце B — скидка в процентах. Посчитаем финальную цену для всех товаров:
=ARRAYFORMULA(A2:A*(1-B2:B))
Как видно, ARRAYFORMULA позволяет обращаться с массивами как с одиночными ячейками, выполняя любые арифметические (и не только) действия. Под капотом формула работает построчно: сначала обрабатывает первые ячейки столбцов A и B, потом вторые, и т.д. Всего одной формулой мы посчитали финальные цены сразу для всех товаров. Минус такого подхода: когда формула разрастается, становится тяжело разобраться, какие действия с какими столбцами производятся.
Функция принимает на вход неограниченное количество массивов (в нашем случае — два). Далее она последовательно берёт элементы этих массивов, передаёт в функцию LAMBDA под именами, указанными в первых аргументах (price и discount), и выполняет вычисление, переданное последним аргументом (price*(1-discount)). Благодаря явному именованию массивов формула читается понятнее.
Встречаются случаи, когда ARRAYFORMULA в принципе не работает. Например, когда внутри необходимо использовать другую формулу массива.
Пример: пусть для каждого значения из столбца A нужно отфильтровать и склеить через запятую значения из другой таблицы:
=ARRAYFORMULA(JOIN(", ";FILTER(D2:D;E2:E=A2:A)))
Формула не работает, т.к. FILTER получает вторым аргументом сравнение двух массивов и не понимает, что от него требуется.
MAP же успешно справляется с этой задачей, т.к. передаёт в лямбда-функцию конкретное значение, по которому можно отфильтровать другую таблицу:
Пусть в столбце A лежит массив переменной длины (например, результат работы FILTER). В столбце B мы хотим написать формулу массива, например, удвоить все значения столбца A.
Можно применить формулу ко всему столбцу A:
Excel: =2*A2:A1000
Sheets: =ARRAYFORMULA(2*A2:A)
Но так возникнут лишние нули там, где данные закончились. Вопрос, как применить формулу только к диапазону с данными, учитывая, что количество строк может в любой момент поменяться?
В Google Sheets такого оператора нет, приходится выкручиваться:
=ARRAYFORMULA(2*OFFSET(A2;0;0;COUNTA(A2:A)))
Функция COUNTA считает количество непустых значений в столбце.
Функция OFFSET возвращает диапазон нужного размера, начиная с указанной ячейки.
Из первого пункта следует важное ограничение: формула работает только при отсутствии пустых значений в данных, иначе функция COUNTA неправильно посчитает высоту диапазона.
Запустить в Dimension-UI мониторинг данных PostgreSQL с помощью запроса с интервалом 3 сек.
WITH params AS (
SELECT
15 AS total_frames,
20 AS canvas_height,
3 AS frame_duration_sec
),
animation_state AS (
SELECT
(CAST(EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) AS INTEGER) / frame_duration_sec) % total_frames AS frame_idx
FROM params
),
tree_definition AS (
SELECT
frame_id,
y_pos,
CASE
-- ═══════════════════════════════════════
-- ЗВЕЗДА на верхушке
-- ═══════════════════════════════════════
WHEN y_pos = 20 AND frame_id = 7 THEN '*'
-- ═══════════════════════════════════════
-- ВЕРХУШКА елки (острая)
-- ═══════════════════════════════════════
WHEN y_pos = 19 AND frame_id = 7 THEN 'G'
-- ═══════════════════════════════════════
-- ЯРУС 1 (y=16-18) — расширяется книзу
-- ═══════════════════════════════════════
WHEN y_pos = 18 AND frame_id BETWEEN 6 AND 8 THEN 'G'
WHEN y_pos = 17 AND frame_id BETWEEN 5 AND 9 THEN 'G'
WHEN y_pos = 16 AND frame_id BETWEEN 4 AND 10 THEN 'G' -- широкий низ яруса
-- Сужение перед ярусом 2
WHEN y_pos = 15 AND frame_id BETWEEN 5 AND 9 THEN 'G'
-- ═══════════════════════════════════════
-- ЯРУС 2 (y=12-14)
-- ═══════════════════════════════════════
WHEN y_pos = 14 AND frame_id BETWEEN 4 AND 10 THEN 'G'
WHEN y_pos = 13 AND frame_id BETWEEN 3 AND 11 THEN 'G'
WHEN y_pos = 12 AND frame_id BETWEEN 2 AND 12 THEN 'G' -- широкий низ яруса
-- Сужение перед ярусом 3
WHEN y_pos = 11 AND frame_id BETWEEN 4 AND 10 THEN 'G'
-- ═══════════════════════════════════════
-- ЯРУС 3 (y=8-10)
-- ═══════════════════════════════════════
WHEN y_pos = 10 AND frame_id BETWEEN 3 AND 11 THEN 'G'
WHEN y_pos = 9 AND frame_id BETWEEN 2 AND 12 THEN 'G'
WHEN y_pos = 8 AND frame_id BETWEEN 1 AND 13 THEN 'G' -- широкий низ яруса
-- Сужение перед ярусом 4
WHEN y_pos = 7 AND frame_id BETWEEN 3 AND 11 THEN 'G'
-- ═══════════════════════════════════════
-- ЯРУС 4 — нижний, самый широкий (y=4-6)
-- ═══════════════════════════════════════
WHEN y_pos = 6 AND frame_id BETWEEN 2 AND 12 THEN 'G'
WHEN y_pos = 5 AND frame_id BETWEEN 1 AND 13 THEN 'G'
WHEN y_pos = 4 AND frame_id BETWEEN 0 AND 14 THEN 'G' -- во всю ширину!
-- ═══════════════════════════════════════
-- СТВОЛ (y=1-3)
-- ═══════════════════════════════════════
WHEN y_pos BETWEEN 1 AND 3 AND frame_id BETWEEN 6 AND 8 THEN 'T'
-- Всё остальное — фон
ELSE 'S'
END AS pixel_char
FROM generate_series(0, 14) AS frame(frame_id)
CROSS JOIN generate_series(1, 20) AS y(y_pos)
),
pixel_data AS (
SELECT td.*
FROM tree_definition td
JOIN animation_state ast ON td.frame_id = ast.frame_idx
),
layers_logic AS (
SELECT
y_pos,
pixel_char,
MAX(CASE WHEN pixel_char IN ('T', 'G', '*') THEN y_pos ELSE 0 END) OVER () as max_obj_height
FROM pixel_data
)
SELECT
CURRENT_TIMESTAMP as dt,
CASE
WHEN pixel_char = 'T' THEN '4_Trunk'
WHEN pixel_char = 'G' THEN '3_Tree'
WHEN pixel_char = '*' THEN '2_Star'
WHEN pixel_char = 'S' THEN
CASE WHEN y_pos > max_obj_height
p.s. Данные по запросу любезно предоставлены Claude Opus 4.5.
Пусть есть список однотипных объектов: товаров, заказов или сотрудников. У каждого элемента есть идентификатор. Как предотвратить ситуацию, когда при заполнении таблицы кто-нибудь добавит элемент дважды? Другими словами, как гарантировать уникальность идентификаторов?
В sql для этого используется PRIMARY KEY или UNIQUE, в электронных таблицах встроенных инструментов нет. Как вариант, можно реализовать подсветку дубликатов с помощью условного форматирования и функции COUNTIF:
Формат → Условное форматирование Применить к диапазону: A2:A Правила форматирования → Ваша формула =AND(LEN(A2);COUNTIF(A$2:A;"="&A2)>1) Цвет фона: красный
Как работает формула:
LEN(A2) проверяет, что ячейка заполнена;
COUNTIF(A$2:A;"="&A2) считает количество ячеек, совпадающих с текущей. Если оно больше одного, срабатывает условное форматирование.
В результате при вводе идентификатора, который уже присутствует в списке, дубликаты будут подсвечиваться красным.
Пробежимся по основным статьям, которые наши авторы написали в этом году.
Год начался с "ПИКантной миграции" – активный участник сообщества FineBI GlowByte от первого лица рассказал о том, как компания ПИК мигрировала c Tableau на FineBI.
Ведущий архитектор GlowByte Марк Лебедев поделился результатами нагрузочного тестирования, которое он с коллегами провел для сравнения Greenplum 6 с Greenplum 7 и Cloudberry, а спустя время дополнил картину, рассказав о тестировании YMatrix.
Следующий год планируем открыть статьей о выборе BI-системы на основе разработанной в GlowByte методики.
В большинстве случаев результатом вычисления формулы в электронной таблице является какое-то значение. Но иногда необходимо просто оставить ячейку пустой. В Google Sheets для этого достаточно передать в функцию пустой аргумент:
=IF(A1;A1*100;) — если другая ячейка заполнена, то произвести вычисление, в противном случае оставить ячейку пустой.
=XLOOKUP("needle";A:A;B:B;) — если needle найден в столбце A, вывести соответствующие значение из столбца B, в противном случае оставить ячейку пустой.
Точка с запятой перед закрывающей скобкой обязательна, без неё первая формула вернёт FALSE, вторая — #N/A.
Занятно, что в Excel это не работает. Там в принципе нельзя написать формулу, которая вернёт пустое значение. Приходится возвращать пустой текст (""):
=ЕСЛИ(A1;A1*100;"")
Но это полурешение, т.к. пустой текст не то же самое, что пустое значение. Например, навигация по таблице, позволяющая быстро перемещаться между блоками данных, «перепрыгивает» ячейки с пустым значением, но «спотыкается» о ячейки с пустым текстом.
Знаете вот когда сделал что-то, что тебе самому очень нравится, хочется показывать это всем - друзьям, родным, коллегам и даже рассказать при случае попутчику в метро) так и мы ждём сегодняшний вебинар про итоги года, чтобы поделиться с вами всем классным, что сделали в 2025 году и рассказать что задумали в 2026. Буквально спрашиваем друг у друга "Мы уже приехали?" «А сколько уже зарегистрировалось? А сейчас?»:)
Мы будем очень рады, если вы придете!
Вот ссылка, где проведем встречу) приходите, пожелаем друг другу счастливого Нового года❤️
Знаете вот когда сделал что-то, что тебе самому очень нравится, хочется показывать это всем - друзьям, родным, коллегам и даже рассказать при случае попутчику в метро) так и мы ждём сегодняшний вебинар про итоги года, чтобы поделиться с вами всем классным, что сделали в 2025 году и рассказать что задумали в 2026. Буквально спрашиваем друг у друга "Мы уже приехали?" «А сколько уже зарегистрировалось? А сейчас?»:)
Мы будем очень рады, если вы придете!
Вот ссылка, где проведем встречу) приходите, пожелаем друг другу счастливого Нового года❤️
Компания «Форсайт» представляет новый релиз своего флагманского программного продукта - «Форсайт. Аналитическая платформа» 10.10!
Новая версия 10.10 – это STS-релиз для быстрого развития (Short Term Support), промежуточный выпуск, который включает новые функции перед их интеграцией в релиз с долгосрочной поддержкой. В версии 10.10 много новых возможностей для визуализации данных в веб-приложении. Мы сделали удобнее инструмент Self-Service BI – информационные панели: • добавили гибкую настройку элементов управления • реализовали настройку параметров вложенных объектов • добавили в табличный визуализатор условное форматирование и закрепление строк
Мы расширили возможности регламентных отчетов и форм ввода в вебе: • стало удобнее работать с диаграммами и формулами • мастер функций пополнился новыми функциями • расширены возможности настройки печати • при вводе формулы в строку формул и ячейку таблицы появилось отображение подсказок • реализовано отображение окна подтверждения перед сохранением и отменой изменённых данных
Что еще нового в релизе 10.10? • расширены возможности администрирования приложений • расширена функциональность менеджера обновлений • реализован новый API платформы для разработки прикладного приложения в системных сборках: Dashboard, Express, Fore, Metabase, RDS, WebForms
Напоминаем, что начиная с выпуска «Форсайт. Аналитическая платформа» 10.11 LTS (апрель 2026 года): • в стандартной поставке будут отсутствовать настольное приложение для настройки платформы и Конструктор бизнес-приложения версии 9.x; • будет прекращена поддержка платформы на Astra Linux SE 1.7 в связи с прекращением её поддержки производителем. Подробнее о новой версии читайте здесь.
Как быстро перейти в конец текущего столбца с данными?
Достаточно нажать Ctrl + ↓ (⌘ + ↓).
Ctrl + ↑ (⌘ + ↑) перемещает в начало текущего столбца.
Ctrl + → (⌘ + →) переносит в конец текущей строки, а Ctrl + ← (⌘ + ←) — в начало.
Важно: если в столбце есть пустые значения, курсор будет прыгать не в конец столбца, а на последнюю заполненную строку текущего блока данных. При повторном нажатии он перепрыгнет на первую заполненную строку следующего блока данных и т.д.
В сложных электронных таблицах легко запутаться, где данные, а где формулы, т. к. выглядят они одинаково. Можно временно включить (и так же выключить) отображение формул вместо значений с помощью сочетания клавиш Ctrl + ~
В электронных таблицах часто возникает необходимость захардкодить ячейку, т.е. заменить формулу результатом её вычисления. Кажется, единственный способ это сделать: скопировать ячейку и вставить в неё же только значение:
Правка → Специальная вставка → Только значения
Или, что гораздо быстрее, воспользоваться последовательными сочетаниями клавиш:
Ctrl + C / ⌘ + C (копировать ячейку)
Shift + Ctrl + V / Shift + ⌘ + V (вставить как значение)
Работает как с одиночными ячейками, так и с целыми диапазонами.
Друзья, делюсь новостью, которой горжусь: коллеги запускают премьерный вебинар и впервые подробно покажут DataForge — новую российскую self-service платформу для централизованного управления аналитическими данными.
Я внимательно следила за развитием этого продукта и на некоторых этапах принимала участие в обсуждениях — особенно за те функции, которые лично для меня, как аналитика, принципиально важны: — быстрый сбор и систематизация витрин — возможность видеть и настраивать бизнес-логику — единый подход к расчётам для всех систем без бесконечного ручного труда в Excel
DataForge — это инструмент, который сам собирает и поддерживает Data Mart слой для любых связанных систем. Особенно актуален для тех, кто строит витрины на ClickHouse: автоматическая генерация витрин, согласованность расчётов для всех потребителей данных — и всё это без лишних доработок со стороны разработчиков.
О чём расскажут на вебинаре:
Какие задачи решает DataForge и как ускоряет работу всех подключённых систем, включая BI
Как устроена структура продукта: его место в архитектуре и ключевые компоненты
Демонстрационный атлас Luxms BI: лучшие практики в одном месте
Демонстрационный атлас – удобный набор готовых примеров, который позволяет увидеть и изучить возможности платформы на практике.
Атлас содержит более 40 демонстрационных дэшбордов, каждый из которых показывает конкретную функцию Luxms BI: от стилизации таблиц и условий форматирования до использования write-back, LPE-выражений, расширенного расчетного функционала и многого другого.
Каждый дэшборд – это компактный «мини-кейc». Справа – готовая визуализация, слева – объяснение, из чего она состоит и как настроена. Вы сразу понимаете механику, видите конечный результат и можете повторить его у себя в проекте.
Демоатлас Luxms BI
Все примеры построены на локальных кубах, которые устанавливаются вместе с пакетом. Это значит, что можно изучить структуру данных и свободно экспериментировать с собственными сценариями.
Атлас объясняет, как решить большое количество прикладных задач: как покрасить строки в таблице, как настроить write-back, как выполнить расчет, как скрыть столбец, как настроить действие по клику, как внедрить интерактивные элементы и многое другое.
Готовые решения, собранные в одном месте, делают работу с платформой намного проще, атлас выполняет роль и некого справочника лучших практик, и источника быстрых находок для разработчиков, аналитиков, или тех, кто только начинает знакомство с Luxms BI.
Посмотреть видеообзор и узнать, как получить доступ к демоатласу, можно на нашем сайте.
Делимся записью прошедшего вебинара "Самые необычные применения BI. Решения, которые уже работают".
BI уже давно не только про графики, на его основе создают приложения, интеграционные решения и рабочие инструменты для бизнеса.
Эксперты поделились практическими кейсами использования BI в нестандартных сценариях, а на круглом столе поговорили о тенденциях, качестве данных и о том, почему необычные BI-сценарии становятся новым трендом.
Получился насыщенный вебинар, который вдохновляет искать новые точки применения аналитики!