5

jestem pobierania rekordów z Google dużym zapytania używając gem „google-API-klienta”, Kiedy pobrać rekordy z tabeliodpowiedź analizowaniem z Google dużym zapytania

client.execute(api_method: @compute_api.tabledata.list, 
            parameters: {projectId: project, 
               datasetId: dataset, 
               tableId: table, 
               maxResults: 10}).body 

uzyskać odpowiedź jak,

{ 
"kind": "bigquery#tableDataList", 
"etag": "\"iBDiwpngzDA0oFU52344ksWOrjA/-xEFKhLUueR63_XVaLG4z_mJt-8\"", 
"totalRows": "2000113", 
"pageToken": "BEIYURQ3J4AQAAAS23IIBAEAAUNAICAMCAGCBMFOCU======", 
"rows": [ 
{ 
"f": [ 
{ 
"v": "11873943041" 
}, 
{ 
"v": "[email protected]" 
}, 
{ 
"v": "1.430438401E9" 
}, 
{ 
"v": "1.430438402E9" 
}, 
{ 
"v": "1.430438404E9" 
}, 
{ 
"v": "1.430438862E9" 
}]}]} 

Który nie zawiera nazw kolumn, Czy ktoś ma pojęcie o tym, jak uzyskać nazwy kolumn wraz z danymi?

Obecnie potrzebuję wykonać inne żądanie API, aby pobrać schemat i uzyskać nazwy kolumn.

Odpowiedz

1

znalazłem odpowiedź na ten sam korzystają z tego narzędzia narzędzie wiersza polecenia (BQ),

bq --format=json query "select * from calls.details limit 10" 

podczas korzystania BQ jeśli nie zapewniają opcję --quiet wówczas zwraca odpowiedź z dodatkowego tekstu do niego (stan o wielkim praca zapytania), który powoduje problem parsowania JSON, jak pokazano poniżej

Waiting on bqjob_r36676afce1bcba8d_0000014f1ba0e36b_1 ... (0s) Current status: DONE 
[{"status":null,"userfield":null,"answer_stamp":"2015-05-01 00:00:04","term_roid":"a"}] 

Ów Dlatego przeniosłem się do korzystania z google API do pobierania danych i znowu, że nie daje nazwy kolumn wraz z danymi. Ale uważam, że możemy usunąć ten dodatkowy tekst za pomocą opcji --quiet dla komendy bq jak

bq --quiet --format=json query "select * from calls.details limit 10" 
1

API nie zapewnia sposób, aby uzyskać schemat i wiersze dla dowolnej tabeli w pojedynczym wywołaniu API. Aby uzyskać schemat, należy wywołać tables.get, a następnie tabledata.list, aby uzyskać wiersze.

Jeśli jednak używasz kwerendy, możesz uzyskać schemat wyjściowy i wiersze wyjściowe w jednym wywołaniu API, używając jobs.query lub jobs.getQueryResults. Możesz nawet zadzwonić pod numer jobs.getQueryResults już zakończonego zadania zapytania, nawet jeśli zadanie to zostało wykonane w inny sposób.

https://cloud.google.com/bigquery/docs/reference/v2/jobs/query https://cloud.google.com/bigquery/docs/reference/v2/jobs/getQueryResults

+0

Nawet po użyciu jobs.getQueryResults, wygląda jak trzeba mapować te etykiety schematu z rzeczywistymi danymi. Narzędzie wiersza poleceń bq wydaje się być lepszym rozwiązaniem, które daje odpowiedni wynik, jak wspomniałem w powyższej odpowiedzi. –

+0

Tak, nadal musisz wykonać mapowanie, ale musisz wykonać tylko jedno wywołanie API, aby uzyskać wszystkie informacje. Używanie bq jest dobre, jeśli działa dla ciebie (ponieważ robi to wszystko pod maską), ale nie ma też być API, więc formatowanie i dane wyjściowe mogą ulec zmianie. –