Перейти к основному содержимому

Типы данных

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_idUUIDID проекта
planLowCardinality(String)Тарифный план
event_idUUIDID события
platform_user_idStringID пользователя
session_idUUIDID сессии
event_nameStringНазвание события
received_atDateTime64(3, 'UTC')Время получения
created_atDateTime64(6, 'UTC')Время создания
bodyNullable(String)Тело события
propsJSONСвойства (JSON)
Технические детали

Поле props имеет тип JSON в ClickHouse, что позволяет хранить произвольные вложенные структуры данных и эффективно их запрашивать.

Работа с вложенными структурами

Свойства могут содержать вложенные объекты:

{
"user": {
"id": 123,
"name": "Иван",
"premium": true
},
"product": {
"id": "premium_month",
"price": 299,
"currency": "RUB"
}
}

Доступ к вложенным свойствам осуществляется через точку:

  • user.id → Number
  • user.name → String
  • user.premium → Boolean
  • product.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" }

Что дальше?

  • События — узнайте больше о структуре событий
  • Фильтры — как использовать типы данных в фильтрах
  • Виджеты — визуализация данных разных типов