Сбор иерархических событий в Segment.io (чтобы представить его через Keen.io)
Я использую Segment.io JAVA SDK для сбора событий из моего приложения и использую Keen.io для визуального представления того же самого. У меня есть иерархическая структура событий следующим образом,
- Компания
- отдел
- Пользователь (логин, выход)
- Книга (открыть, закрыть)
- Страница (просмотр, следующая, предыдущая)
- Транспортное средство (запуск, вождение, остановка)
- Книга (открыть, закрыть)
- Пользователь (логин, выход)
- отдел
Таким образом, при сборе данных в сегменте мы должны отправить все свойства во всех событиях для последующего анализа (в keen.io или любых других инструментах) следующим образом:
Определить пользователя и отслеживать
логин: идентификатор компании, идентификатор депо, метка времени
открытие книги: идентификатор компании, идентификатор депо, метка времени, идентификатор книги, название книги
просмотр страницы: идентификатор компании, идентификатор депо, метка времени, идентификатор книги, имя книги, идентификатор страницы
запуск транспортного средства: идентификатор компании, идентификатор отдела, метка времени, идентификатор транспортного средства, название транспортного средства
или же
Должны ли мы просто идентифицировать пользователя и отслеживать события, просто отправив соответствующие свойства
логин: идентификатор компании, идентификатор депо, метка времени
открытие книги: метка времени, идентификатор книги, название книги
просмотр страницы: отметка времени, идентификатор страницы
запуск транспортного средства: метка времени, идентификатор транспортного средства, название транспортного средства
Во втором случае, как мы можем определить, что событие "просмотр страницы" предназначено для какой книги?
Любая помощь будет принята с благодарностью.
Спасибо
2 ответа
Я бы определенно предложил отправить все данные в событиях Кин. Чем больше данных вы отправляете, тем больше запросов вы сможете выполнить в будущем.
Чтобы ответить на ваш конкретный вопрос, если вы отправите идентификатор книги для page-view
событие, вы можете сделать запрос, как это:
var popular_books = new Keen.Query('count', {
event_collection: 'page-view',
timeframe: "this_2_months",
group_by: 'book_id'
});
Это вернет ответ, показывающий, сколько просмотров страниц вы получили в каждой книге!
Ваша модель данных в Keen IO будет иметь 4 коллекции событий:
- авторизоваться
- Книга открытой
- Вид страницы
- транспортное средство запуск
Для каждого события у вас будет иерархия данных о событии, пользователе, странице, книге и любом другом соответствующем контексте. В Keen IO не существует отдельной концепции для "идентификации" пользователя - вы опишите пользователя и все, что вы о нем знаете в тот момент, прямо на мероприятии.
Например, для события запуска автомобиля у вас может быть:
vehicle-start-event = {
company: "Airbnb",
department: "Z5",
vehicle : {
name: "Blue Falcon",
id: "8d2fe5",
},
user: {
name: "Lara Croft",
id: "923hniansd909niowoasdl"
}
}
Для входа в систему вы должны иметь:
login-event = {
company: "Airbnb",
department: "Z5",
user: {
name: "Lara Croft",
id: "923hniansd909niowoasdl"
}
}
Вы спросили: "Как мы можем определить, что событие" просмотр страницы "предназначено для какой книги?"
Ответ заключается в том, чтобы хранить связанную книгу во время просмотра страницы, прямо на событии. Что всякий раз, когда вы запускаете запросы к просмотрам страниц, у вас есть название книги прямо на событии.
pageview-event = {
company: "Airbnb",
department: "Z5",
user: {
name: "Lara Croft",
id: "923hniansd909niowoasdl"
},
book: {
name: "Where the Wild Things Are",
id: "293as0d90fjw3"
},
page: {
title: "Wild Thing",
number: 4
}
}
Затем вы можете выполнить запрос, например, подсчет "просмотров страниц, сгруппированных по книгам", чтобы просмотреть все просмотры страниц по книгам, или подсчитать просмотры страниц определенного пользователя или страницы и группы по книге, чтобы увидеть, в какую книгу они входят.
https://keen.io/blog/44565580467/event-data-vs-entity-data-how-to-store-user