第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

BigQuery - 獲取 1000000 條記錄并使用 goLang 對數(shù)據(jù)進(jìn)行一些處理

BigQuery - 獲取 1000000 條記錄并使用 goLang 對數(shù)據(jù)進(jìn)行一些處理

Go
寶慕林4294392 2023-06-19 15:47:54
我在 BigQuery 中有 1000000 條記錄。從數(shù)據(jù)庫中獲取數(shù)據(jù)并使用 goLang 進(jìn)行處理的最佳方法是什么?如果無限制地獲取所有數(shù)據(jù),我會遇到超時問題。我已經(jīng)將限制增加到 5 分鐘,但它需要超過 5 分鐘。我想做一些流式調(diào)用或分頁實現(xiàn),但我不知道在 golang 中我該怎么做。var FetchCustomerRecords = func(req *http.Request) *bigquery.RowIterator {    ctx := appengine.NewContext(req)    ctxWithDeadline, _ := context.WithTimeout(ctx, 5*time.Minute)    log.Infof(ctx, "Fetch Customer records from BigQuery")    client, err := bigquery.NewClient(ctxWithDeadline, "ddddd-crm")    q := client.Query(        "SELECT * FROM Something")    q.Location = "US"    job, err := q.Run(ctx)    if err != nil {        log.Infof(ctx, "%v", err)    }    status, err := job.Wait(ctx)    if err != nil {        log.Infof(ctx, "%v", err)    }    if err := status.Err(); err != nil {        log.Infof(ctx, "%v", err)    }    it, err := job.Read(ctx)    if err != nil {        log.Infof(ctx, "%v", err)    }    return it}
查看完整描述

2 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗 獲得超8個贊

您可以直接讀取表內(nèi)容而無需發(fā)出查詢。這不會產(chǎn)生查詢費用,并提供與您從查詢中獲得的相同的行迭代器。

對于小的結(jié)果,這很好。對于大表,我建議檢查新的存儲 api和示例頁面上的代碼示例。

對于一個小表或只是讀取一小部分行,你可以這樣做(從一個公共數(shù)據(jù)集表中讀取最多 10k 行):

func TestTableRead(t *testing.T) {

? ? ctx := context.Background()

? ? client, err := bigquery.NewClient(ctx, "my-project-id")

? ? if err != nil {

? ? ? ? t.Fatal(err)

? ? }


? ? table := client.DatasetInProject("bigquery-public-data", "stackoverflow").Table("badges")

? ? it := table.Read(ctx)


? ? rowLimit := 10000

? ? var rowsRead int

? ? for {

? ? ? ? var row []bigquery.Value

? ? ? ? err := it.Next(&row)

? ? ? ? if err == iterator.Done || rowsRead >= rowLimit {

? ? ? ? ? ? break

? ? ? ? }


? ? ? ? if err != nil {

? ? ? ? ? ? t.Fatalf("error reading row offset %d: %v", rowsRead, err)

? ? ? ? }

? ? ? ? rowsRead++

? ? ? ? fmt.Println(row)

? ? }

}


查看完整回答
反對 回復(fù) 2023-06-19
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊

您可以拆分查詢以獲取 100000 條記錄中的 10 條并在多個 goroutine 中運行

使用像sql查詢 select * from somewhere order by id DESC limit 100000 offset 0

在下一個協(xié)程中select * from somewhere order by id DESC limit 100000 offset 100000


查看完整回答
反對 回復(fù) 2023-06-19
  • 2 回答
  • 0 關(guān)注
  • 237 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號