Статьи

Временные ряды для разработчиков: какого черта данные временных рядов?

Разработчики и компании используют данные временных рядов каждый день, знают они это или нет. Независимо от того, собираете ли вы данные с датчиков IoT, анализируете прошлую производительность на рынке, отслеживаете облачную инфраструктуру или инфраструктуру приложений или используете приложение для доставки продуктов по требованию, данные временных рядов помогут вашему бизнесу работать. Но что именно представляют собой данные временных рядов и как они полезны? 

Этот пост призван дать ответы на эти вопросы и проиллюстрировать силу данных временных рядов в действии, рассматривая реальный сценарий с использованием общедоступного набора данных из Комиссии по такси и лимузинам Нью-Йорка. Во-первых, давайте углубимся в несколько основных концепций, чтобы заложить основу для запросов, которые мы напишем и проанализируем в разделе «Давайте кодировать». 

Памятное (не очень теоретическое) определение данных временного ряда

На фундаментальном уровне данные временных рядов представляют, как что-то меняется со временем. Это «что-то» может быть системой, процессом, поведением или объектом.

Когда люди говорят о данных временных рядов, они имеют в виду ситуацию, когда с каждой точкой данных связана метка времени, и мы собираем и сохраняем все точки данных о системе, процессе, поведении или объекте, о которых идет речь. Вместо того, чтобы перезаписывать предыдущие данные, мы используем временную метку, чтобы различать значения (например, когда что-то произошло, так же, если не больше, важно, чем само значение).

Это приводит нас к двум определяющим характеристикам данных временных рядов:

  1. Время является главной осью данных временных рядов (то есть ось X на графике)
  2. Данные временных рядов является INSERTS, не UPDATES (то есть, мы не перезаписывать данные)

Подводя итог, данные временных рядов представляют собой изменения во времени, где мы рассматриваем время как основную ось наших данных, а новые точки данных рассматриваются как INSERT не UPDATE.


Вы также можете быть заинтересованы в чтении:
Работа с данными временных рядов

Вот забавное упражнение: если подумать, все данные — это данные временных рядов! 

Если вы чем-то похожи на меня, это может привести к тому, что вы скажете: «Подождите, что? Однако по сей день я до сих пор не могу вспомнить ни одного. Это связано с тем, что все данные по определению происходят в определенный момент времени (а время уходит вперед, насколько нам известно). 

Если мы «выбрасываем» или игнорируем элемент времени наших данных, мы теряем ценную информацию. И наоборот, когда мы рассматриваем наши данные как данные временных рядов, мы (и наши команды) можем лучше понять, как меняются мир и вещи, которые нас интересуют.

Как данные временного ряда могут мне помочь?

Данные временных рядов важны, потому что, отслеживая, как все меняется со временем, данные временных рядов превращают точки данных в истории данных.

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

Данные временных рядов помогают людям:

  1. Проанализируйте прошлое
  2. Следи за настоящим 
  3. Планируйте и предсказывайте будущее

Давайте посмотрим на пример, чтобы ехать домой. Большинство, если не все из нас, получили посылки от Amazon, DHL, UPS, FedEx или какой-либо другой службы доставки посылок. К настоящему времени вас не должно удивлять то, что информация о доставке вашей посылки является данными временного ряда! 

В таблице ниже показано, как компания по доставке посылок могла (и должна) использовать свои данные для:

Проанализируйте прошлое

Монитор присутствует

Предсказывать будущее

Компания по доставке посылок (Amazon, DHL, FedEx и др.)

Анализ исторических данных доставки для оптимизации маршрутов доставки

Мониторинг в реальном времени местоположения посылки и статуса доставки 

Используйте исторические данные для прогнозирования объема и времени доставки, реалистичных ожиданий клиентов и управления планированием мощностей (например, укомплектование достаточного количества водителей во время пиковых нагрузок).

Поскольку все данные могут иметь временные ряды по своей природе, компании и команды всех размеров — от небольших стартапов и участников до проектов с открытым исходным кодом и крупных компаний с многомиллионными ценами — могут и должны использовать данные временных рядов.

Теперь, когда у нас есть кое-какие теории и определения, давайте разберемся с практикой и рассмотрим реальный пример. 

Давайте код: данные такси Нью-Йорка

Я работаю в нью-йоркском офисе Timescale, поэтому использую пример того, что я и люди, живущие в больших городах, видим каждый день: такси. Этот пример иллюстрирует, как данные временных рядов помогают нам анализировать прошлое.

Сценарий, приведенный ниже, взят из Hello NYC , учебника из трех частей, посвященного анализу данных такси Нью-Йорка с использованием PostgreSQL и Timescale. Для завершения учебника не требуется никаких предварительных знаний, кроме базовых знаний по SQL.

Сценарий

Нью-Йорк поставил цель сократить выбросы парниковых газов на 20% к 2024 году. * Учитывая количество поездок на такси, совершаемых каждый день, они считают, что изучение прошлой истории водителей такси сыграет важную роль в достижении этой цели.

New York Data Team * наняла вас, чтобы помочь им разобраться в исторических данных о поездках на такси, получить представление и использовать свой анализ для планирования на будущее. Ваша цель — провести анализ всех поездок на такси в Нью-Йорке, проведенных в январе 2016 года.

* Примечание: это вымышленный сценарий. Однако мы разработали этот сценарий и связанные с ним цели, чтобы реалистично отразить вопросы, которые реальные градостроительные организации могут задать своим данным, и методы, используемые для ответа на эти вопросы.

Dataset

Мы рассмотрим набор данных всех поездок на такси, совершенных в Нью-Йорке в январе 2016 года. Данные получены из общедоступных наборов данных Комиссии по такси и лимузинам Нью-Йорка (NYC TLC). NYC TLC — это агентство, отвечающее за лицензирование и регулирование такси такси Yellow Taxi в Нью-Йорке и других транспортных средств. NYC TLC имеет более 200 000 автомобилей, на которые у лицензиата совершается около 1 миллиона поездок в день — это много поездок!

Они собирают следующие данные о каждой поездке:

  • Дата и время выдачи (как отметка времени)
  • Место выдачи (широта и долгота)
  • Отбросить дату и время (как отметку времени)
  • Место высадки (широта и долгота)
  • Расстояние поездки (в милях)
  • Тарифы (в долларах США)
  • Количество пассажиров 
  • Тип тарифа (например, стандартный, аэропорт. Подробнее см. RateCodeID в этом документе )
  • Тип платежа (Наличные, кредитная карта. Подробнее см. Payment_type в этом документе )

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

Для удобства использования мы создали три таблицы для хранения данных о поездке:

  1. 1 обычная таблица Postgres   payment_types , которая отображает числовые коды типов платежей в английском описании (например, кредитная карта, наличные и т. Д.)


SQL