Recherche…


Lecture des données de BigQuery avec les informations d'identification du compte utilisateur

In [1]: import pandas as pd

Pour exécuter une requête dans BigQuery, vous devez avoir votre propre projet BigQuery. Nous pouvons demander des exemples de données publiques:

In [2]: data = pd.read_gbq('''SELECT title, id, num_characters
   ...:                       FROM [publicdata:samples.wikipedia]
   ...:                       LIMIT 5'''
   ...:                    , project_id='<your-project-id>')

Cela va imprimer:

Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/v2/auth...[looong url cutted]

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

  --noauth_local_webserver

Si vous opérez depuis un ordinateur local, le navigateur apparaîtra. Après avoir accordé des privilèges, les pandas continueront avec la sortie:

Authentication successful.
Requesting query... ok.
Query running...
Query done.
Processed: 13.8 Gb

Retrieving results...
Got 5 rows.

Total time taken 1.5 s.
Finished at 2016-08-23 11:26:03.

Résultat:

In [3]: data
Out[3]: 
               title       id  num_characters
0       Fusidic acid   935328            1112
1     Clark Air Base   426241            8257
2  Watergate scandal    52382           25790
3               2005    35984           75813
4               .BLP  2664340            1659

Comme effet secondaire, les pandas créeront le fichier json bigquery_credentials.dat qui vous permettra d'exécuter d'autres requêtes sans avoir à accorder de privilèges:

In [9]: pd.read_gbq('SELECT count(1) cnt FROM [publicdata:samples.wikipedia]'
                   , project_id='<your-project-id>')
Requesting query... ok.
[rest of output cutted]

Out[9]: 
         cnt
0  313797035

Lecture des données de BigQuery avec les informations d'identification du compte de service

Si vous avez créé un compte de service et que vous avez un fichier json de clé privée, vous pouvez utiliser ce fichier pour vous authentifier avec des pandas

In [5]: pd.read_gbq('''SELECT corpus, sum(word_count) words
                       FROM [bigquery-public-data:samples.shakespeare]       
                       GROUP BY corpus                                
                       ORDER BY words desc
                       LIMIT 5'''
                   , project_id='<your-project-id>'
                   , private_key='<private key json contents or file path>')
Requesting query... ok.
[rest of output cutted]

Out[5]: 
           corpus  words
0          hamlet  32446
1  kingrichardiii  31868
2      coriolanus  29535
3       cymbeline  29231
4    2kinghenryiv  28241


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow