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

Фильтры

Фильтры позволяют выбирать подмножество данных для анализа. С их помощью вы можете сегментировать пользователей, отбирать определенные события и строить сложные условия.

Что такое фильтры?

Фильтр — это набор условий, которые определяют, какие события или пользователи будут включены в анализ. Фильтры работают на уровне SQL запросов (но вам не нужно знать SQL), обеспечивая быстрое и эффективное выполнение.

Структура фильтров

Фильтры в Metriox имеют иерархическую структуру:

Фильтр
├── Логика (AND / OR)
└── Предикаты
├── Предикат 1
├── Предикат 2
└── ...

Логика фильтров

Определяет, как комбинируются условия:

  • AND — все условия должны выполняться
  • OR — хотя бы одно условие должно выполняться

Типы предикатов

Предикат — это отдельное условие фильтра. Он состоит из:

  1. Тип — событие или свойство
  2. Оператор — операция сравнения
  3. Значение — с чем сравниваем
  4. Отрицание — NOT (опционально)

Предикаты для событий

Фильтрация по названию события:

Event [NOT] equals "button_click"
Event [NOT] contains "purchase"

Операторы для событий:

  • equals — точное совпадение
  • contains — содержит подстроку

Примеры:

✅ Event equals "purchase_completed"
→ Только события с названием "purchase_completed"

✅ Event contains "button"
→ События: button_click, button_view, share_button, etc.

✅ Event NOT equals "bot_started"
→ Все события, кроме "bot_started"

Предикаты для свойств

Фильтрация по свойствам событий:

Property [NOT] <operator> <value>

Операторы зависят от типа данных свойства.


Операторы по типам данных

String (Строка)

Операторы:

  • equals — точное совпадение
  • contains — содержит подстроку
  • not equals — не равно

Примеры:

✅ props.plan equals "premium"
→ Только события с plan = "premium"

✅ props.button_name contains "buy"
→ button_name: "buy_now", "buy_premium", "buy_subscription"

✅ props.language NOT equals "en"
→ Все языки, кроме английского

Number (Число)

Операторы:

  • equals (=) — равно
  • not equals (!=) — не равно
  • greater than (>) — больше
  • less than (<) — меньше
  • greater than or equal (>=) — больше или равно
  • less than or equal (<=) — меньше или равно

Примеры:

✅ props.price greater than 100
→ Цена больше 100

✅ props.quantity equals 1
→ Количество равно 1

✅ props.age greater than or equal 18
→ Возраст 18 и старше

✅ props.rating NOT less than 4.0
→ Рейтинг 4.0 и выше

DateTime (Дата и время)

Операторы:

  • equals (=) — точное совпадение
  • not equals (!=) — не равно
  • greater than (>) — после даты
  • less than (<) — до даты
  • greater than or equal (>=) — начиная с даты
  • less than or equal (<=) — до даты включительно

Примеры:

✅ props.subscription_start greater than "2026-03-01T00:00:00Z"
→ Подписки, начавшиеся после 1 марта 2026

✅ props.trial_ends_at less than or equal "2026-03-31T23:59:59Z"
→ Пробный период заканчивается до конца марта

✅ props.last_login NOT equals "2026-03-02T10:00:00Z"
→ Последний вход не в указанное время
Формат даты

Используйте ISO 8601 формат: YYYY-MM-DDTHH:mm:ssZ


Boolean (Логический)

Операторы:

  • equals — равно (true/false)
  • not equals — не равно

Примеры:

✅ props.is_premium equals true
→ Только премиум пользователи

✅ props.email_verified equals false
→ Email не подтвержден

✅ props.has_completed_onboarding NOT equals false
→ Завершили онбординг (true или null)

Комбинирование условий

Логика AND

Все условия должны выполняться одновременно.

Пример:

AND
├── Event equals "purchase_completed"
├── props.amount greater than 500
└── props.currency equals "RUB"

→ Покупки на сумму больше 500 рублей

Логика OR

Хотя бы одно условие должно выполняться.

Пример:

OR
├── Event equals "purchase_completed"
├── Event equals "subscription_renewed"
└── Event equals "trial_started"

→ Любое событие монетизации

Вложенная логика

Комбинируйте AND и OR для сложных условий:

Пример:

AND
├── OR
│ ├── Event equals "button_click"
│ └── Event equals "link_click"
└── props.plan equals "premium"

→ Клики премиум пользователей


Отрицание (NOT)

Добавьте NOT к любому предикату для инверсии условия:

✅ Event NOT equals "bot_started"
→ Все события, кроме "bot_started"

✅ props.plan NOT equals "free"
→ Платные пользователи

✅ props.age NOT less than 18
→ Возраст 18 и старше (инверсия "меньше 18")

Примеры фильтров

Простые фильтры

Все покупки:

Event equals "purchase_completed"

Премиум пользователи:

props.is_premium equals true

Покупки дороже 1000 руб:

AND
├── Event equals "purchase_completed"
└── props.amount greater than 1000

Сложные фильтры

Новые премиум пользователи:

AND
├── Event equals "subscription_started"
├── props.plan equals "premium"
└── props.is_trial equals false

Активные пользователи (не боты):

AND
├── OR
│ ├── Event contains "button"
│ ├── Event contains "screen"
│ └── Event contains "message"
└── props.is_bot NOT equals true

Проблемные транзакции:

AND
├── Event equals "payment_failed"
├── props.attempt_number greater than 2
└── props.amount greater than or equal 500

Сегментация пользователей

Молодая аудитория из России:

AND
├── props.age less than 25
├── props.country equals "RU"
└── props.language equals "ru"

High-value пользователи:

AND
├── props.total_spent greater than 5000
├── props.is_premium equals true
└── props.last_activity greater than "2026-02-01T00:00:00Z"

Применение фильтров

Фильтры можно применять на разных уровнях:

Уровень виджета

Каждый виджет имеет свои фильтры:

Виджет "Премиум покупки"
├── Тип: Series
├── Метрика: Events
└── Фильтр:
AND
├── Event equals "purchase_completed"
└── props.plan equals "premium"

Уровень дашборда

Глобальные фильтры применяются ко всем виджетам:

Дашборд фильтр:
└── props.country equals "RU"

Все виджеты будут показывать только данные из России

Технические детали

Компиляция в SQL

Фильтры компилируются в SQL WHERE условия:

Фильтр:

AND
├── Event equals "purchase_completed"
└── props.amount greater than 500

SQL (концептуально):

WHERE event_name = 'purchase_completed'
AND JSONExtractFloat(props, 'amount') > 500
Примечание

Вам не нужно знать SQL — Metriox автоматически преобразует ваши фильтры в оптимизированные запросы.

Производительность

Metriox использует ClickHouse для быстрого выполнения запросов:

  • Индексация по event_name
  • Эффективная работа с JSON свойствами
  • Параллельное выполнение запросов

Оптимизация:

  • Фильтруйте по событиям в первую очередь
  • Используйте equals вместо contains где возможно
  • Ограничивайте временной диапазон

Лучшие практики

Именование и организация

  • Создавайте переиспользуемые фильтры для частых сегментов
  • Давайте понятные названия: "Премиум пользователи из РФ"
  • Документируйте сложные фильтры

Построение фильтров

  • Начинайте с фильтрации по событиям
  • Добавляйте условия по свойствам
  • Используйте NOT осторожно (может быть медленнее)

Тестирование

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

Что дальше?

  • Метрики — узнайте, какие метрики считать с фильтрами
  • Виджеты — применяйте фильтры в виджетах
  • События — структура событий и свойств