首页 > 解决方案 > BigQuery - 从 Cloud Run 中的 Go 服务器获取表数据

问题描述

我能够通过 Golang 服务器将 Big Query 表输出作为 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)
        }
}

谢谢你。

标签: gogoogle-cloud-platformgoogle-bigquerygoogle-cloud-run

解决方案


如果您追求结果的架构,它可以在RowIterator.

如果您的意思是您想要更动态地处理没有特定结构的行,通常检查架构和/或利用类型开关的某种组合是解决此问题的方法。


推荐阅读