Skip to main content
Пример Dynamic графика Динамические графики позволяют создавать кастомные визуализации с использованием библиотеки Apache ECharts.

Обзор

Dynamic Chart предоставляет полный контроль над визуализацией через JavaScript-код, который преобразует данные куба в конфигурацию ECharts.
Dynamic Chart подходит для случаев, когда стандартные типы графиков не покрывают требования визуализации.

Поля

"dynamic_chart"
required
Тип графика
Record<string, CubeQuery>
required
Именованные Cube.js запросы. Каждый ключ — произвольное имя запроса, значение — стандартный объект CubeQuery.
string
required
JavaScript-код функции, которая преобразует результаты Cube.js запросов в объект конфигурации ECharts.Код должен быть строкой вида function(queries) { ... }, где queries — объект типа Record<string, FormattedResultSet>. Ключи соответствуют именам запросов из поля queries.
Функция должна возвращать валидный объект конфигурации ECharts. Используйте return в конце.
boolean
default:"false"
Включить сравнение периодов. При включении в data добавляются данные за предыдущий период.

Примеры

Горизонтальная столбчатая диаграмма с порогом

Пример: процент скидки по локациям с выделением значений выше порога.

KPI-плитка (только текст)

Используйте ECharts title для отображения числового KPI без графических элементов.

Линейный график с несколькими запросами

Пример использования нескольких именованных запросов.

Радарная диаграмма

Редактирование в JSON-режиме

При редактировании конфигурации в JSON-режиме значение transform_code должно быть однострочной строкой — переносы строк записываются как \n, табуляция как \t. Это требование формата JSON (многострочные строки не поддерживаются).
В YAML-режиме (transform_code: |) код можно писать в обычном многострочном виде. В JSON-режиме — только в одну строку с escape-символами.

Использование annotation для динамических подписей

Вместо хардкода подписей осей можно читать shortTitle из метаданных куба.

Рекомендации

1

Изучите документацию ECharts

Ознакомьтесь с примерами ECharts для понимания возможностей.
2

Структура данных

Значения в data — это объекты FormattedResultValue с полями value (сырое значение) и formattedValue (отформатированная строка). Используйте .value для вычислений и .formattedValue для отображения в подписях и tooltip.
3

Используйте annotation для динамических подписей

Вместо хардкода названий осей и легенды, используйте queries.имя.annotation.measures['cube.measure'].shortTitle для получения заголовков из метаданных куба.
4

Несколько запросов

Используйте несколько именованных запросов в queries, когда данные приходят из разных кубов или требуют разных группировок. Все результаты будут доступны в transform_code через queries.имя_запроса.
5

Обрабатывайте пустые данные

Всегда проверяйте наличие данных: data.length === 0 и значений: row['measure'].value || 0
6

Функции в ECharts

Функции в возвращаемом объекте (например, tooltip.formatter, label.formatter) поддерживаются — они автоматически сериализуются и восстанавливаются. Используйте обычный синтаксис function(params) { ... }.
7

Начните с простого

Создайте базовый график с одним запросом, затем добавляйте сложность постепенно.
JavaScript-код выполняется в изолированном Web Worker на клиенте. Доступ к DOM, window и document недоступен. Избегайте тяжёлых вычислений и бесконечных циклов — при превышении таймаута выполнение будет прервано. Функция transform_code должна быть строкой вида function(queries) { ... return echartsOptions; }.

Генерация с помощью LLM

Вы можете использовать LLM (ChatGPT, Claude и т.д.) для генерации конфигурации dynamic_chart. Скопируйте промпт ниже, заполните верхнюю часть (запросы и описание графика) и отправьте в LLM. Полученный JSON можно вставить в редактор графика.

Полезные ссылки

ECharts Examples

Галерея примеров ECharts

ECharts Options

Справочник по опциям

Cube.js Query Format

Формат запросов Cube.js

Круговые диаграммы | Обзор графиков