約 500 個のセンサーがあり、それぞれ約 1 分に 1 回値を出力します。センサーの値は、次の値が出力されるまで一定のままであると想定できるため、時系列が作成されます。センサーは、いつデータを送信するかという点では同期されませんが (そのため、観測のタイムスタンプは異なります)、すべてが一元的に収集され、センサーごとに保存されます (センサーのサブセットによるフィルタリングを可能にするため)。
センサーからのデータの合計を示す集計時系列を作成するにはどうすればよいですか? n (1 日の一連の観測で時系列を作成する必要があるため、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