Мне нужно сгенерировать данные тепловых карт в формате CSV, что-то вроде этого:
X,Y,OCCURRENCES
269,697,41
199,493,8
125,318,2
205,526,24
261,572,2
В моей базе данных neo4j есть объект «Точка», который содержит дату, координаты X и Y, и выглядит вот так:
Point: {
"at": "2018-06-26T06:54:42.671141000+12:00"
"locationPlanX": 367,
"locationPlanY": 716
}
У меня есть запрос, который дает желаемый результат, он хорошо работает с несколькими тысячами точек, но начинает бороться с миллионами.
Запрос:
MATCH (point:Point)
WHERE datetime("2018-06-22T15:00:00.000000+12:00") <= point.at < datetime("2018-06-23T16:00:00.000000+12:00")
AND point.locationPlanX >= 0
AND point.locationPlanY >= 0
WITH point.locationPlanX as x, point.locationPlanY as y, COUNT(point) AS occurrences
RETURN x, y, occurrences
Как я уже говорил, запрос хорошо работает для часа данных, но начинает бороться с днями / неделями. Есть ли что-то еще, что я могу сделать, чтобы улучшить свой запрос? Или любой другой способ сделать это?
ОБНОВЛЕНИЕ: 3 свойства в узле проиндексированы.