在統計學中,聚合的定義指
使用基於多組觀測結果的總結的統計替換多組觀測結果 -- 來自實現乙個由分鐘到年的聚合系統。
比如小時的資料由分鐘聚合,天的資料由小時聚合,周、月的資料由天聚合,年的資料由月聚合。
要求:
好處:
可以減少計算量。
由於要根據下一級資料聚合,所以每個級別的資料都不能少。所以需要
一般的聚合都是基於時間的,比如從分鐘以下聚合為分鐘,然後小時,天,周,月,年等,所以就會有時區存在。
寫入資料庫的時間要帶上時區。因為 mysql、mongodb 等資料庫會將寫入的 datetime 轉化為 utc 時區再儲存,所以如果寫入的時間沒有帶時區,資料庫就會認為寫入時間是 utc 時區,可能會與你預期的不一致。
同理,查詢時也要帶上時區,因為資料庫預設沒有時區的時間為 utc 時區。
由於當前級別的資料是根據下一級資料聚合的,所以需要儲存級別--時間型別以及時間。
時間型別為
minutely
hourly
daily
weekly
monthly
yearly
聚合時間為時間段的起點,我們把它叫做time_start
。
"date_type" : "minutely", "time_start" : isodate("2018-01-21t05:01:00z")
"date_type" : "minutely", "time_start" : isodate("2018-01-21t05:02:00z")
..."date_type" : "minutely", "time_start" : isodate("2018-01-21t05:59:00z")
// 根據以上的分鐘資料聚合小時資料
"date_type" : "hourly", "time_start" : isodate("2018-01-21t05:00:00z")
由於在不同時區的每天的定義是不同的:
北京時間 07月31日為 「07月30日16:00:00 utc -- 07月31日16:00:00 utc」 而東京則為 「07月30日15:00:00 utc -- 07月31日15:00:00 utc」。
我目前的想法是再給聚合加上時區引數,但在本文不討論聚合包含多時區問題,因為能用到的地方比較少。
如果存在特殊情況導致要等待的久一些:比如由於網路延遲導致資料來的慢一些。我們也要進行調整:比如當前分鐘聚合5分鐘前的資料。
資料聚合(一)
在統計學中,聚合的定義指 使用基於多組觀測結果的總結的統計替換多組觀測結果 來自 實現乙個由分鐘到年的聚合系統。比如小時的資料由分鐘聚合,天的資料由小時聚合,周 月的資料由天聚合,年的資料由月聚合。要求 好處 可以減少計算量。由於要根據下一級資料聚合,所以每個級別的資料都不能少。所以需要 一般的聚合...
多合一查詢
create table student num varchar 20 name varchar 20 subject varchar 10 score float insert student select 001 姓名1 英語 78.00 insert student select 001 姓名...
字典與集合(一
1.字典 字典這種資料結構的特徵也正如字典一樣,使用名稱 內容進行資料的構建,在python中分別對應著鍵 值,習慣上稱之為鍵值對。特徵 1 字典中的資料必須是以鍵值對的形式的出現的 2 邏輯上講,鍵是不能重複的,而值可以重複 3 中的鍵是不可變的,也就是無法修改的 而值是可以變的,可修改的,可以是...