Как сделать запрос в cqlengine, чтобы получить агрегированные значения из таблиц Кассандры
В Cassandra для получения агрегированных данных, таких как sum,avg,min,max, мы используем запрос вроде:
SELECT avg(race_points) FROM cycling.cyclist_points WHERE id=e3b19ec4-774a-4d1c-9e5a-decec1e30aac;
Но в cqlengine как это сделать? У меня есть столбцы с именем и возрастом. Я хочу получить средний возраст из списка. Пожалуйста, помогите мне получить среднее (возраст) в cqlengine.
1 ответ
Не удалось найти какой-либо агрегат в движке cql, нам нужно повторять набор запросов один за другим, использовать values_list, чтобы уменьшить использование памяти для большого набора запросов.
live_data = list(LiveStats.objects.all().values_list('cpuinfo', 'memused'))
total_count = len(live_data)
if total_count > 0:
cpu_info, mem_used = 0, 0
for live in live_data:
cpu_info += live[0]
mem_used += live[1]
avg_cpu = cpu_info / total_count
avg_memory = mem_used / total_count