2017-05-24 92 views
1

我正在從這樣的代碼中查詢inlfluxdb數據庫。如何處理從代碼查詢influxdb數據庫獲得的結果

q := fmt.Sprintf("select step,timeTaken from ZtpBoot where cvpVersion = 
        2017.1.1 group by step,numberOfDevices" 
res, _ := queryDB(clnt, q) 
Result when executing query in influxdb is like:- 
name: ZtpBoot 
tags: numberOfDevices=2, step=Step3.verifyZtpViaPost 
time    step     timeTaken 
----    ----     --------- 
1495540747000000000 Step3.verifyZtpViaPost 0.108520030975 
1495541643000000000 Step3.verifyZtpViaPost 0.115226984024 

name: ZtpBoot 
tags: numberOfDevices=2, step=Step4.verifyZtpViaHttp 
time    step     timeTaken 
----    ----     --------- 
1495540747000000000 Step4.verifyZtpViaHttp 0.100101947784 
1495541643000000000 Step4.verifyZtpViaHttp 0.103901863098 

我如何處理從res,_:= queryDB(clnt,q)獲取的res以顯示如表中所示的結果。

+0

yes我看着它,但我不能得到我想要的輸出:(。 – supriya

+0

當你運行'fmt.Printf(「Res:%v \ nType:%T \ n」, res,res)'? – jrefior

+0

我得到了這個 - > Res:[{[{ZtpBoot map [numberOfDevices:1 step:Step1.dhcpSetupTime] [time step timeTaken] [[2017-05-16T10:09:44Z Step1.dhcpSetupTime [2017-05-16] [2017-05-16 \ T10:17:14Z Step1.dhcpSetupTime 0.893213033676] [2017-05-16T10:24:44Z Step1.dhcpSetupTime 0.476826906204] [2017-05-16T10:32:17Z Step1.dhcpSetupTime 0.80868196 \ 4874] [2017-05-16T10:42:39Z Step1.dhcpSetupTime 0.484630823135] [2017-05-23T12:14:03Z totalRunTime 4 \ 19.631438017]] false}] []}] 類型:[] client.Result – supriya

回答

1

如果仔細檢查每種類型並理解如何使用Go類型,一般情況下如何解析res是否存在於driver documentation中。

正如您在評論中顯示的那樣,res[]client.Result類型,這意味着它是結果的一部分。結果在文檔中定義。查看結果中的每個字段,並查找它們的每個類型。如果他們對你沒有意義,請嘗試閱讀更多關於Go類型的含義。考慮通過編寫和運行一些以某種方式使用該類型的代碼來進一步推進 - 例如創建它的文字並打印它或訪問它的一部分 - 直到您習慣使用它並擁有它更好地理解它。

查找您不明白的文檔的任何部分,例如Go中的什麼符號[](slice/array)和*(指針)的意思,或者Go中的切片和地圖的工作方式,如果您不是已經確定這些東西。 language specification是一個很好的資源。如果一篇文檔沒有意義,並且您有更多關於它的具體問題,您可以向StackOverflow發佈一個關於它的問題。

我希望這個例子足以讓你開始。正如你所看到的,我使用不同類型的文字初始化一些變量,然後運行你在註釋中運行的相同的打印命令。請注意,它會部分填充您發佈的結構。

package main 

import(
    "fmt" 
    "github.com/influxdata/influxdb/client/v2" 
    "github.com/influxdata/influxdb/models" 
) 

func main() { 
    tags := map[string]string{ 
     "numberOfDevices":"1", 
     "step":"Step1.dhcpSetupTime", 
    } 
    cols := []string{"time", "step", "timeTaken"} 
    row := models.Row{ 
     Name: "ZtpBoot", 
     Tags: tags, 
     Columns: cols, 
     // add Values and Partial 
    } 
    rows := []models.Row{row} 
    res := client.Result{ 
     Series: rows, 
     // Add Messages and Err 
    } 
    fmt.Printf("Res: %v\nType: %T\n", res, res) 
} 

從這個程序的輸出是:

Res: {[{ZtpBoot map[numberOfDevices:1 step:Step1.dhcpSetupTime] [time step timeTaken] [] false}] [] } 
Type: client.Result 

我希望這是足以讓你在正確的方向開始。如果你在這方面工作,並且看看我做了什麼並閱讀了更多的Go文檔,那麼你可以填寫其餘的文檔,並瞭解如何訪問這些數據結構的一部分。

相關問題