Как сделать запрос в cqlengine, чтобы получить агрегированные значения из таблиц cassandra

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

SELECT avg(race_points) FROM cycling.cyclist_points WHERE id=e3b19ec4-774a-4d1c-9e5a-decec1e30aac;

Но как это сделать в cqlengine? У меня есть столбцы с именем и возрастом. Я хочу получить средний возраст из списка. Пожалуйста, помогите мне получить средний (возраст) в cqlengine.


person Andan Patil    schedule 24.05.2017    source источник


Ответы (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
person Thomas John    schedule 21.01.2018
comment
используйте функции карты numpy или python для оптимизации производительности при агрегировании - person Thomas John; 23.05.2018