Агрегирование данных с помощью функции сокращения CouchDB - PullRequest
4 голосов
/ 04 августа 2010

У меня есть процесс, который отправляет документы, аналогичные приведенным ниже, на CouchDB:

{
    "timestamp": [2010, 8, 4, 9, 25, 24],
    "type": "quote",
    "bid": 95.0,
    "offer": 96.5
}

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

Я читал View Cookbook for SQL Jockeys о том, как создавать сложные виды, но у меня не получается увидеть, как комбинировать карту и сокращать функции для достижения желаемого результата.Функция карты проста;У меня проблемы с функцией уменьшения.

С благодарностью получили любые указатели.

1 Ответ

2 голосов
/ 04 августа 2010

Создать карту-функцию, которая возвращает все документы за заданный период времени, используя тот же ключ. Например, вернуть все документы в 17-й час дня с ключом 17.

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

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

Обновление

http://wiki.apache.org/couchdb/View_Snippets#Computing_simple_summary_statistics_.28min.2Cmax.2Cmean.2Cstandard_deviation.29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...