2013-06-05 5 views
6

मैं पूर्वनिर्धारित प्रश्नों/विचारों को छोड़कर Google के BigQuery डैशबोर्ड के समान कुछ बनाने की कोशिश कर रहा हूं। जिस समस्या में मैं चल रहा हूं वह डेटा को पेजिंग कर रहा है।बिगक्चर

tabledata endpoint आप एक शुरुआत के सूचकांक एक पृष्ठ टोकन, मुझे इस तरह कुछ करने के लिए अनुमति देता है तैयार करें या उपयोग कर सकते हैं कि में पृष्ठांकन समर्थन करता है:

query_reply = table_data_job.list(projectId=settings.PROJECT_ID, 
            datasetId=settings.DATASET_ID, 
            tableId=table, 
            startIndex=offset, 
            maxResults=page_size).execute() 

इस के साथ समस्या यह है कि मैं विशिष्ट प्रश्न को चलाने के लिए चाहते हैं (या, कम से कम, तालिका डेटा परिणामों को ऑर्डर करें)।

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() 

मेरे ज्ञान के लिए, उपर्युक्त कोड के साथ ऑफ़सेट करने का कोई तरीका नहीं है। क्या यह कुछ ऐसा है जो BigQuery के लिए उपयुक्त नहीं है? मुझे लगता है कि विकल्प स्मृति में अंकन और छोटे परिणाम सेट पर काम करना होगा?

उत्तर

5

BigQuery क्वेरी परिणाम टेबल हैं। तो आप एक क्वेरी चला सकते हैं और परिणाम तालिका से गंतव्य तालिका प्राप्त कर सकते हैं और फिर tabledata.list() api का उपयोग कर परिणामों के माध्यम से पृष्ठ प्राप्त कर सकते हैं। वैकल्पिक रूप से आप उत्तर से नौकरी आईडी प्राप्त कर सकते हैं और jobs.getQueryResults() का उपयोग कर सकते हैं, जिसमें अंकन समर्थन है।

1

आप केवल ROW_NUMBER()

यहाँ का उपयोग करके 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