猿问

BigQuery - 从 Cloud Run 中的 Go Server 获取表数据

我能够通过Golang服务器获取大查询表输出为json。但是有没有办法直接获取架构,而不是将其定义为?此外,任何方法都可以使它变得更好。ColStatsRow


type ColStatsRow struct {

        COLUMN_NAME       string `bigquery:"column_name"`

        COLUMN_VALUE      string `bigquery:"column_value"`

        FREQUENCY int64  `bigquery:"frequency"`

}


// getOutput prints results from a query 

func getOutput(w http.ResponseWriter, iter *bigquery.RowIterator) error {

        var rows []ColStatsRow

        for {

                var row ColStatsRow

                err := iter.Next(&row)

                if err == iterator.Done {

                        out, err := json.Marshal(rows)

                        if err != nil {

                            return fmt.Errorf("error marshalling results: %v", err)

                        }


                        w.Write([]byte(out))

                        return nil

                }

                if err != nil {

                        return fmt.Errorf("error iterating through results: %v", err)

                }


                rows = append(rows, row)

        }

}


烙印99
浏览 97回答 2
2回答

慕仙森

根据文档,您可以指定一个 JSON 架构文件,如下所示:[ {   "description": "[DESCRIPTION]",   "name": "[NAME]",   "type": "[TYPE]",   "mode": "[MODE]" }, {   "description": "[DESCRIPTION]",   "name": "[NAME]",   "type": "[TYPE]",   "mode": "[MODE]" }]然后,您可以使用以下命令编写此架构:bq show --schema --format=prettyjson project_id:dataset.table > path_to_file

开满天机

如果位于结果的架构之后,则它在 RowIterator 上可用。如果你的意思是你想在没有特定结构的情况下更动态地处理行,通常检查架构和/或利用类型开关的某种组合是实现这一目标的方法。
随时随地看视频慕课网APP

相关分类

Go
我要回答