2017-05-24 93 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文档,那么你可以填写其余的文档,并了解如何访问这些数据结构的一部分。

相关问题