Ежедневно мы создаем много данных. Сайты, устройства, сервисы, люди. Сейчас как никогда важно иметь возможность организовывать, сортировать, обрабатывать и просеивать эту информационную перегрузку, чтобы принимать лучшие решения и понимать поведение клиентов. В такие моменты на помощь приходит наука о данных.
Наука о данных включает процессы и системы, которые извлекают знания или идеи из данных в различных формах, таких как статистика, интеллектуальный анализ данных и прогнозная аналитика.
В этом руководстве мы рассмотрим создание аналитики в реальном времени с помощью Keen IO и PubNub, что позволит вам отслеживать и передавать аналитические данные по мере их поступления.
Кин ИО
Keen IO позволяет легко собирать, исследовать и визуализировать данные. Они предоставляют аналитику как услугу. Вот что предлагает платформа Keen IO:
- Отслеживайте любые события с вашего веб-сайта, приложения, игры или устройства и сохраняйте их с помощью Keen. Нет необходимости управлять собственной базой данных для данных о событиях. Вы можете очень быстро приступить к работе с их SDK, добавить геолокацию и информацию об устройстве в свои данные, а также добавить сторонние интеграции.
- Напишите свой собственный индивидуальный запрос без написания SQL и по-прежнему имеете доступ к часто используемым функциям, таким как сумма, среднее значение, медиана и т. д.
- Сложные визуализации с готовыми шаблонами. Это также дает возможность создавать пользовательские отчеты.
Как работает аналитика в реальном времени
Наш код состоит из двух частей:
- Код на стороне сервера, отвечающий за публикацию данных о событии в канал PubNub (выполняется файлом server1.js).
- Код на стороне сервера, отвечающий за передачу данных из PubNub в Keen IO (выполняется файлом server2.js).
Исходный код для PubNub:
Исходный код вы можете найти здесь.
Здесь мы воспроизведем ситуацию, когда у нас есть несколько событий, и некоторое случайное целое число, связанное с этим событием, отправляется в PubNub. И данные публикуются каждую секунду с использованием задания Cron.
(cron — это утилита Linux, которая планирует автоматический запуск команды или сценария на вашем сервере в указанное время и дату. Задание cron — это само запланированное задание. Задания Cron могут быть очень полезны для автоматизации повторяющихся задач.)
Во-первых, нам потребуются два пакета: pubnub и cron. Вы можете установить их с помощью:
npm install pubnub -save npm install cron -save
Скрипт на стороне сервера выглядит так:
файл server1.js
var pubnub = require("pubnub")({ // Initialize PubNub subscribe_key: 'YOUR_SUBSCRIBE_KEY', // always required publish_key: 'YOUR_PUBLISH_KEY' // only required if publishing }); var cron = require('cron'); // Initialize Cron // Some sample events var events = ["Event1", "Event2", "Event3"] // Selecting an event randomly and generating a name for it function randomEvent(){ var event = events[Math.floor(Math.random()*events.length)]; return (event + "_data"); } // Generating a random number between high and low value function randomIntInc (low, high) { return Math.floor(Math.random() * (high - low + 1) + low); } // Specifying what job cron needs to perform, at what interval should it repeat. var cronJob = cron.job("*/1 * * * * *", function(){ pubnub.publish({ channel: "keen-pubnub", // channel’s name to publish message: {"event": randomEvent(), "value": randomIntInc(0,9)}, //data to be published callback: function(m){console.log(m)} }); }); // Starting the Cron job cronJob.start();
*/1 * * * * * — это формат времени cron, указывающий, с каким интервалом следует повторять задачу. Подробнее о формате cron можно узнать здесь.
PubNub для Keen IO Code
Вместе с PubNub нужно установить еще один пакет:
npm install keen-js -save
Скрипт на стороне сервера выглядит так:
файл server2.js
var Keen = require('keen.io'); // Initialize KeenIO var pubnub = require("pubnub")({ // Initialize PubNub subscribe_key: 'YOUR_SUBSCRIBE_KEY' // always required }); // Configure instance. Only projectId and writeKey are required to send data. var client = Keen.configure({ projectId: "YOUR_PROJECT_ID", writeKey: "YOUR_WRITE_KEY" }); pubnub.subscribe({ channel : "keen-pubnub", // Subscribing to PubNub's channel message : function(message){ // Sending the message from PubNub to KeenIO client.addEvent(message.event, {"value": message.value}, function(err, res) { if (err) { console.log(err); } else { console.log(res); } }); } })
Вам нужно будет войти в Keen IO, чтобы создать проект. Идентификатор проекта и ключи API доступны на странице Обзор проекта. Дополнительную информацию о том, как использовать SDK Keen IO для JavaScript, можно найти здесь.
Вот снимок того, как инструмент Keen IO Explorer, откуда вы можете запрашивать данные:
Вывод
Этот стек аналитики данных подходит для решений, в которых у вас есть источник, из которого поступает много данных (большой объем и/или множество различных событий), передача этих данных в режиме реального времени является абсолютным требованием, и вам необходимо выполнить аналитику по этому с одинаковой скоростью в реальном времени.
Например, предположим, что мы хотим проанализировать микроклимат Сан-Франциско. Как только мы получим поток данных из PubNub в Keen IO, мы сможем использовать встроенные функции Keen для поиска средних, минимальных и максимальных точек данных для быстрого создания новых идей.
Первоначально опубликовано на www.pubnub.com.