Оформление
Типы данных полей
Платформа не работает с типами источника напрямую: при подключении таблицы каждый столбец получает один из пяти типов платформы. От него зависит всё дальнейшее — какие функции примет формула, какие настройки формата покажет окно поля, можно ли положить поле в иерархию и что предложит фильтр.
Пять типов
| Тип | Что это | Значок в списке полей |
|---|---|---|
number | Целое число | 123 |
float | Дробное число | 1.23 |
string | Строка | Aa |
date | Дата, время или дата со временем | календарь |
bool | Логическое значение | галочка |
Исходное имя типа при этом не теряется: рядом платформа хранит то, как столбец называется в источнике — UInt32, Decimal(12, 2), String. Оно видно в описании датасета и помогает понять, откуда взялся тот или иной тип платформы.
Как тип источника превращается в тип платформы
Для баз данных сопоставление идёт по типу JDBC, а не по названию в конкретной СУБД — поэтому правило одинаково для PostgreSQL, ClickHouse, Oracle и всех остальных:
| Тип платформы | Что в него попадает |
|---|---|
number | TINYINT, SMALLINT, INTEGER, BIGINT, а также NUMERIC без дробной части |
float | FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL |
date | DATE, TIME, TIMESTAMP и их варианты с часовым поясом |
bool | BOOLEAN, BIT |
string | всё остальное — включая то, чего платформа не знает |
Примеры с демо-витрины ClickHouse:
| Столбец | Тип в источнике | Тип платформы |
|---|---|---|
order_id | UInt32 | number |
quantity | UInt8 | number |
amount | Decimal(12, 2) | float |
order_date | Date | date |
status | String | string |
Незнакомый тип становится строкой
Массивы, JSON, geometry, enum, UUID и прочая экзотика приходит как string: платформа не отбрасывает такой столбец, но и не понимает его содержимое. Считать по нему нельзя, сортировка будет лексикографической, а фильтр — текстовым. Если такой столбец нужен как число или дата, приведите его на стороне источника — представлением или начальным SQL, а не в датасете.
Для файлов (CSV, XLSX) действует то же правило, только исходные типы определяет разбор файла: целые → number, дробные → float, даты и метки времени → date, логические → bool, остальное → string — Файлы и объектные хранилища.
Что зависит от типа
| Тип | Агрегация по умолчанию | Формат значения | Иерархия | Фильтр |
|---|---|---|---|---|
number, float | SUM при переносе в меру | Разряды, знаки после запятой, префикс и постфикс, сокращение крупных чисел | Да, кроме float | Диапазон и сравнение |
string | Нет; доступны COUNT, COUNTD, MIN, MAX | Префикс, постфикс, подпись пустого значения | Да | Список значений, поиск, шаблон |
date | Нет; доступны COUNT, COUNTD, MIN, MAX | Шаблон вывода даты | Да | Период, в том числе относительный |
bool | Нет; доступны COUNT, COUNTD | Подписи значений | Да | Список из двух значений |
Дробное число не кладётся в иерархию
Уровнем иерархии может стать поле любого типа, кроме float: непрерывная величина не даёт уровней, по которым имеет смысл проваливаться. Нужна группировка по числу — сделайте корзины: они дают строковое поле с интервалами, и оно в иерархию годится.
Тип вычисляемого поля
У поля с формулой тип не берётся из источника — его определяет само выражение: COUNT() даёт number, AVG() — float, CONCAT() — string, DATETRUNC() — date. Поэтому поле, посчитанное от целых, может оказаться дробным, и это нормально.
Проверить, что вышло, проще всего в окне настройки полей: тип показан рядом с именем — Настройка полей.
Тип не приводится молча
Если формула складывает строку с числом, платформа не догадается, что имелось в виду: источник ответит ошибкой, а виджет — «Внутренней ошибкой сервера». Приводите тип явно — INT(), FLOAT(), STR(), DATE() — функции преобразования.
Тип значения параметра
У параметров датасета словарь свой и чуть другой: число, строка, дата, дата и время, логическое. Отдельного дробного типа у параметра нет — дробное значение задаётся числовым параметром.
Что дальше
- Настройка полей — как поле настраивается в датасете.
- Справочник функций — что принимает и что возвращает каждая функция.
- Формат значений — как тип влияет на вид числа и даты в виджете.