2015-08-18 85 views
2

我有300萬條記錄中包含的條目:查詢在KairosDB/OpenTSDB

~/Abharthan/kairosdb$ head -10 export.txt 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"1","building_type":"ElementarySchool","meter_type":"temperature","unit":"F"},"value":"34.85"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"2","building_type":"Park","meter_type":"temperature","unit":"F"},"value":"0"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"3","building_type":"Industrial","meter_type":"temperature","unit":"F"},"value":"0.07"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"4","building_type":"RecreationCenter","meter_type":"temperature","unit":"F"},"value":"0"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"5","building_type":"Park","meter_type":"temperature","unit":"F"},"value":"2.2"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"6","building_type":"CommunityCenter","meter_type":"temperature","unit":"F"},"value":"31.41"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"7","building_type":"Office","meter_type":"temperature","unit":"F"},"value":"0"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"8","building_type":"ElementarySchool","meter_type":"temperature","unit":"F"},"value":"10.88"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"9","building_type":"ElementarySchool","meter_type":"temperature","unit":"F"},"value":"42.27"} 
    {"name": "meterreadings", "timestamp":"1359695700","tags": {"Building_id":"10","building_type":"ElementarySchool","meter_type":"temperature","unit":"F"},"value":"10.14"} 

這些1年讀數meterreadings每個建築,每小時收集一次building_id。

我的出發數據的時間戳是:1359695700和結束時間戳記是:1422853200. 我要查詢這個數據庫得到以下:

Query hourly average for one building(say building_id:100) for one year (output expected of 8760 points) 
Query monthly sum for one building for one year (output expected of 12 points) 

我已經寫了以下兩個查詢,得到的結果爲上述兩個查詢:

查詢1:

{ 「start_absolute」:1359695700, 「end_absolute」:1422853200, 「指標」:[{ 「標籤」:{「的buildin G_ID 「:[」 100 「]}」,名稱 「:」 meterreadings」, 「聚合」:[{ 「名稱」: 「平均」, 「align_sampling」:真, 「採樣」:{ 「值」: 「1」 ,「unit」:「hours」}}]}]}

迴應:200 {「queries」:[{「sample_size」:70168,「results」:[{「name」:「meterreadings」 GROUP_BY 「:[{」 名稱 「:」 類型 「 」類型「: 」號碼「}], 」標籤「:{ 」Building_id「:[ 」100「], 」building_type「:[ 」及學歷「],」 meter_type 「:[」 溫度 「],」 單元 「:[」 F 「]}」,值「:[[1359695700,42.45377343113282],[1360800000,36.42662912912908],[1364400000,41.12510250000007],[1368000000,54.915547499999946],[1371600000 ,65.07990000000015],[1375200000,55.8904375],[1378800000,47.33335249999986],[1382400000,38.952450000000034],[1386000000,41.99267000000001],[1389600000,41.28209500000009],[1393200000,40.31645895895911],[1396800000,40.758327499999915],[1400400000,54.05608750000002 ],[1404000000,63.410385],[1407600000,65.38089749999993],[1411200000,45.9 9822500000001],[1414800000,39.669450137465724],[1418400000,39.039874999999945],[1422000000,41.795917721519]]}]}]}

問題2:

{ 「start_absolute」:1359695700,「end_absolute 「:1422853200, 」指標「:[{」 標籤 「:{」 Building_id 「:[」 100 「]}」,名稱 「:」 meterreadings 「 」聚合「:[{ 」名稱「: 」和「,」 「sampling_size」:true,「sampling」:{「value」:「1」,「unit」:「months」}}]}]}

響應:200 {「queries」:[{「sample_size」 70168, 「結果」:[{ 「名稱」: 「meterreadings」, 「GROUP_BY」:[{ 「名稱」: 「類型」, 「類型」: 「數字」}], 「標籤」:{ 「Building_id」:[ 「100」], 「building_type」:[ 「及學歷」], 「meter_type」:[ 「溫度」], 「單元」:[ 「F」]},「values」:[[1359695700,3337957.570000005]]}]}]}

我沒有得到我所期望的,我是否錯過了一些東西。

回答

2

答案很簡單,正如我前面指出了:-)參見可能出現的問題Kairosdb error metric[0](name=abcd).tag[xyz].value may not be empty

KairosDB具有精確到毫秒 - 在KairosDB所有時間戳的Unix毫秒。

但你的時間戳是Unix的秒,這是你的問題。

因此,你需要通過1000數據採集和查詢中的所有時間戳繁殖。

例如,query2要求在1970年1月16日至1970年1月17日的不到24小時內收集所有樣本,因爲您在一個月內累計只會得到一個結果。

E.g.數據採集​​:

{"name": "meterreadings", "timestamp":"1359695700000","tags": {"Building_id":"1","building_type":"ElementarySchool","meter_type":"temperature","unit":"F"},"value":"34.85"} 
    {"name": "meterreadings", "timestamp":"1359695700000","tags": {"Building_id":"2","building_type":"Park","meter_type":"temperature","unit":"F"},"value":"0"} 

...和查詢:

{ "start_absolute":1359695700000, "end_absolute":1422853200000, "metrics":[{"tags":{"Building_id":["100"]},"name":"meterreadings","aggregators":[{"name":"sum","align_sampling":true,"sampling":{"value":"1","unit":"months"}}]}]} 
+0

它返回25個數據點,而不是12 – Bharthan

+0

對不起,我有25個月,它的數據..:d:d。 – Bharthan