我正在嘗試創(chuàng)建與Google BigQuery儀表盤類似的東西,但帶有預(yù)定義的查詢/視圖。我遇到的問題是分頁數(shù)據(jù)。該資料表端點(diǎn)支持分頁中,你可以指定一個(gè)起始索引或使用網(wǎng)頁的道理,讓我做這樣的事情:query_reply = table_data_job.list(projectId=settings.PROJECT_ID, datasetId=settings.DATASET_ID, tableId=table, startIndex=offset, maxResults=page_size).execute()問題是我想運(yùn)行特定的查詢(或者至少要對(duì)表數(shù)據(jù)結(jié)果進(jìn)行排序)。query_data = {'query': 'SELECT * FROM my_dataset.foo_table LIMIT %s' % page_size}query_reply = job_collection.query(projectId=settings.PROJECT_ID, body=query_data).execute()據(jù)我所知,沒有辦法對(duì)上述代碼進(jìn)行補(bǔ)償。這只是BigQuery不適合的嗎?我想替代方法是在內(nèi)存中進(jìn)行分頁并在較小的結(jié)果集上工作?
2 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
BigQuery查詢結(jié)果是表格。因此,您可以運(yùn)行查詢并從結(jié)果中獲取目標(biāo)表,然后使用tabledata.list()API來對(duì)結(jié)果進(jìn)行分頁?;蛘?,您可以從回復(fù)中獲取作業(yè)ID,并使用具有分頁支持的jobs.getQueryResults()。

慕蓋茨4494581
TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
您只能通過使用ROW_NUMBER()來實(shí)現(xiàn)與SQL的分頁
這是通用模板
SELECT t.*
FROM (
SELECT
1 AS one,
[field],
ROW_NUMBER() OVER(PARTITION BY one) AS rownum
FROM [table] ) t WHERE rownum BETWEEN X AND Y
添加回答
舉報(bào)
0/150
提交
取消