Типы данных
Metriox поддерживает четыре терминальных типа данных для свойств событий. Понимание этих типов важно для правильной работы фильтров и построения аналитики.
Поддерживаемые типы
String (Строка)
Текстовые значения любой длины.
Примеры:
{
"button_name": "купить_подписку",
"user_language": "ru",
"screen_name": "onboarding",
"error_message": "Payment failed"
}
Операции:
- Equals (равно)
- Contains (содержит)
- Not equals (не равно)
Number (Число)
Числовые значения: целые числа и числа с плавающей точкой.
Примеры:
{
"price": 299,
"quantity": 5,
"rating": 4.5,
"age": 25,
"balance": 1000.5
}
Операции:
- Equals (=)
- Not equals (!=)
- Greater than (>)
- Less than (<)
- Greater than or equal (>=)
- Less than or equal (<=)
DateTime (Дата и время)
Временные метки и даты.
Примеры:
{
"subscription_start": "2026-03-01T10:00:00Z",
"last_login": "2026-03-02T15:30:00Z",
"trial_ends_at": "2026-03-15T23:59:59Z"
}
Формат: ISO 8601 с поддержкой часовых поясов
Операции:
- Equals (=)
- Not equals (!=)
- Greater than (>) — после указанной даты
- Less than (<) — до указанной даты
- Greater than or equal (>=)
- Less than or equal (<=)
Boolean (Логический)
Логические значения: true или false.
Примеры:
{
"is_premium": true,
"has_completed_onboarding": false,
"email_verified": true,
"push_notifications_enabled": false
}
Операции:
- Equals (true/false)
- Not equals
Автоматическое определение типов
Metriox автоматически определяет тип данных на основе значения:
{
"count": 42, // → Number
"name": "Иван", // → String
"active": true, // → Boolean
"created": "2026-03-02T10:00:00Z" // → DateTime
}
Хранение в ClickHouse
Внутри Metriox использует ClickHouse для хранения данных. Схема таблицы events:
| Поле | Тип ClickHouse | Описание |
|---|---|---|
tenant_id | UUID | ID проекта |
plan | LowCardinality(String) | Тарифный план |
event_id | UUID | ID события |
platform_user_id | String | ID пользователя |
session_id | UUID | ID сессии |
event_name | String | Название события |
received_at | DateTime64(3, 'UTC') | Время получения |
created_at | DateTime64(6, 'UTC') | Время создания |
body | Nullable(String) | Тело события |
props | JSON | Свойства (JSON) |
Поле props имеет тип JSON в ClickHouse, что позволяет хранить произвольные вложенные структуры данных и эффективно их запрашивать.
Работа с вложенными структурами
Свойства могут содержать вложенные объекты:
{
"user": {
"id": 123,
"name": "Иван",
"premium": true
},
"product": {
"id": "premium_month",
"price": 299,
"currency": "RUB"
}
}
Доступ к вложенным свойствам осуществляется через точку:
user.id→ Numberuser.name→ Stringuser.premium→ Booleanproduct.price→ Number
Преобразование типов
При отправке событий убедитесь, что типы данных соответствуют ожидаемым:
✅ Правильно
{
"price": 299, // Number
"is_premium": true, // Boolean
"date": "2026-03-02T10:00:00Z" // DateTime (ISO 8601)
}
❌ Неправильно
{
"price": "299", // String вместо Number
"is_premium": "true", // String вместо Boolean
"date": "02.03.2026" // Неверный формат даты
}
Null значения
Свойства могут быть null или отсутствовать:
{
"optional_field": null
// another_field отсутствует
}
При фильтрации учитывайте, что null значения обрабатываются отдельно.
Лучшие практики
Именование свойств
- Используйте snake_case:
user_id,created_at,is_premium - Делайте имена описательными:
subscription_planвместоplan - Добавляйте префиксы для группировки:
payment_method,payment_amount,payment_status
Выбор типов
- String: категории, статусы, названия
- Number: количество, цены, возраст, рейтинги
- DateTime: временные метки событий
- Boolean: флаги состояния
Консистентность
Используйте одинаковые типы для одних и тех же свойств во всех событиях:
// ✅ Хорошо — везде Number
{ "amount": 299 }
{ "amount": 499 }
// ❌ Плохо — разные типы
{ "amount": 299 }
{ "amount": "499" }