Ежедневно мы создаем много данных. Сайты, устройства, сервисы, люди. Сейчас как никогда важно иметь возможность организовывать, сортировать, обрабатывать и просеивать эту информационную перегрузку, чтобы принимать лучшие решения и понимать поведение клиентов. В такие моменты на помощь приходит наука о данных.

Наука о данных включает процессы и системы, которые извлекают знания или идеи из данных в различных формах, таких как статистика, интеллектуальный анализ данных и прогнозная аналитика.

В этом руководстве мы рассмотрим создание аналитики в реальном времени с помощью Keen IO и PubNub, что позволит вам отслеживать и передавать аналитические данные по мере их поступления.

Кин ИО

Keen IO позволяет легко собирать, исследовать и визуализировать данные. Они предоставляют аналитику как услугу. Вот что предлагает платформа Keen IO:

  1. Отслеживайте любые события с вашего веб-сайта, приложения, игры или устройства и сохраняйте их с помощью Keen. Нет необходимости управлять собственной базой данных для данных о событиях. Вы можете очень быстро приступить к работе с их SDK, добавить геолокацию и информацию об устройстве в свои данные, а также добавить сторонние интеграции.
  2. Напишите свой собственный индивидуальный запрос без написания SQL и по-прежнему имеете доступ к часто используемым функциям, таким как сумма, среднее значение, медиана и т. д.
  3. Сложные визуализации с готовыми шаблонами. Это также дает возможность создавать пользовательские отчеты.

Как работает аналитика в реальном времени

Наш код состоит из двух частей:

  1. Код на стороне сервера, отвечающий за публикацию данных о событии в канал PubNub (выполняется файлом server1.js).
  2. Код на стороне сервера, отвечающий за передачу данных из 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.