나는 분당 약 1 회 값을 방출하는 약 500 개의 센서가 있습니다. 다음 값이 방출 될 때까지 센서 값이 일정하게 유지되므로 시계열을 생성한다고 가정 할 수 있습니다. 센서는 데이터를 방출하는 시점에서 동기화되지 않으므로 (관찰 타임 스탬프가 달라 지므로) 모두 중앙에서 수집되어 센서별로 저장됩니다 (센서의 하위 집합을 기준으로 필터링 할 수 있음).센서에서 timeseries 집계
센서의 데이터 합계를 제공하는 총 시계열을 어떻게 만들 수 있습니까? n (1 일의 관측 세트에 대해 시계열을 작성해야하므로 하루 24x60x500 회의 관측을 고려해야합니다.) 계산도 빠르며, 바람직하게는 < 1 초에 실행해야합니다.
예 - 원시 입력 :
q)n:10
q)tbl:([]time:n?.z.t;sensor:n?3;val:n?100.0)
q)select from tbl
time sensor val
----------------------------
01:43:58.525 0 33.32978
04:35:12.181 0 78.75249
04:35:31.388 0 1.898088
02:31:11.594 1 16.63539
07:16:40.320 1 52.34027
00:49:55.557 2 45.47007
01:18:57.918 2 42.46532
02:37:14.070 2 91.98683
03:48:43.055 2 41.855
06:34:32.414 2 9.840246
나도 같은 타임 스탬프를 표시해야합니다 찾고 있어요 출력, 센서에 걸쳐 합계입니다. 센서에 일치하는 타임 스탬프로 정의 된 레코드가 없으면 이전 값을 사용해야합니다 (레코드는 센서의 출력이 변경 될 때만 의미합니다). 시간
time aggregatedvalue
----------------------------
00:49:55.557 45.47007/0 (sensor 0) + 0 (sensor 1) + 45.47007 (sensor 2)
01:18:57.918 42.46532/0 (sensor 0) + 0 (sensor 1) + 42.46532 (new value on sensor 2)
01:43:58.525 75.7951 /33.32978 + 0 + 42.46532
02:31:11.594 92.43049/33.32978 + 16.63539 + 42.46532
02:37:14.070 141.952 /33.32978 + 16.63539 + 91.98683
03:48:43.055 91.82017/33.32978 + 16.63539 + 41.855
04:35:12.181 137.24288/78.75249 + 16.63539 + 41.855
04:35:31.388 60.388478/1.898088 + 16.63539 + 41.855
06:34:32.414 28.373724/1.898088 + 16.63539 + 9.840246
07:16:40.320 64.078604/1.898088 + 52.34027 + 9.840246
빠른 답장을 보내 주셔서 감사합니다.하지만 제대로 출력되지는 않습니다. 질문을 예상 출력으로 업데이트했습니다. 나는 약 3 년 분의 데이터를 가지고 있으므로, splaying/partitioning을 살펴볼 필요가있다. –
방금 내 대답을 업데이 트되었습니다. 제가 언급했듯이, 아마 벡터 형태로 이것을하는 더 효율적인 방법이 있습니다. – user1895961
그래, 그게 옳은 결과를 준다. 불행히도 도착 순서가 보장되지 않습니다 (대략적인 시간 주문 만). –