2017-01-08 2 views
0

У меня есть таблица с идентификатором, именем и картой, состоящей из отметки времени и поплавка как пары значений. Каков синтаксис для агрегирования и получения среднего значения float из всех моих значений float на моей карте?Cassandra, суммарное среднее значение из таблицы

таблица выглядит примерно так:

ID | name | temp map<timestamp, float> 

1 | N | {'2016-10-27 13:00:00':6.7,'2016-10-27 13:00:00':6.6} 
+0

Каков ваш первичный ключ? –

+0

Вы не можете использовать avg on collection –

ответ

2

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

CREATE TABLE mytable (
    id int, 
    name text, 
    ts timestamp, 
    value float, 
    PRIMARY KEY ((id, name), ts); 
); 

SELECT avg(value) FROM mytable WHERE id = ? AND name = ?;