[PYTHON] Lecture / écriture entre BigQuery ↔ Pandas

introduction

Bibliothèque cliente BigQuery google-cloud-bigquery J'écrirai comment utiliser le wrapper pandas-gbq.

environnement

Enregistrement du compte GCP

[Explication avec image] Enregistrez un compte avec un essai gratuit de Google Cloud Platform (GCP)

Installez le SDK Google Cloud

Installation du SDK Google Cloud ~ Initialisation

Création de projet

Créer un projet avec le SDK Google Cloud

Création d'un compte de service / clé de compte de service

Créez un compte de service / clé de compte de service pour pouvoir accéder à GCS à partir de Python.

Création de compte de service

gcloud iam service-les comptes créent le nom du compte de service\
                                   --display-nom Nom d'affichage du compte de service\
スクリーンショット 2020-02-10 0.10.39.png

Vérifiez les autorisations actuellement associées au projet

gcloud projects get-iam-policy mypj-id

# bindings:
# - members:
#   - user:[email protected]
#   role: roles/owner
# etag: BwWeTrntoao=
# version: 1

Accorder l'autorisation au compte de service

Accorder des privilèges d'administrateur BigQuery

gcloud projects add-iam-policy-ID de projet de liaison\
--member serviceAccount:Nom du compte de service@ID du projet.iam.gserviceaccount.com \
--role roles/bigquery.admin
スクリーンショット 2020-02-10 0.16.18.png

liste de rôles

https://cloud.google.com/iam/docs/understanding-roles?hl=ja#predefined_roles

Vérifiez à nouveau les autorisations

gcloud projects get-iam-policy mypj-id

# bindings:
# - members:
#   - user:[email protected]
#   role: roles/owner
# - members:
#   - serviceAccount:[email protected]
#   role: roles/bigquery.admin
# etag: BwWeTz6vIBY=
# version: 1

Création de clé de compte de service

$ gcloud iam service-accounts keys create ./anata_no_key.json \
--iam-nom du compte de service de compte@ID du projet.iam.gserviceaccount.com

Structure du répertoire

.
├── anata_no_key.json
└── working/
        └── main.py

Lors de l'utilisation de google-cloud-bigquery

Installez google-cloud-bigquery avec pip

$ pip install google-cloud-bigquery

Lire le résultat de la requête avec DataFrame

main.py


import os

from google.cloud import bigquery
from IPython.display import display


#Obtenez le répertoire de votre propre fichier
cwd = os.path.dirname(os.path.abspath(__file__))
#Définir dans la variable d'environnement
key_path = '{}/../credentials.json'.format(cwd)
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = key_path

project_id = 'project_id'
dataset_id = 'dataset_id'
table_id = 'table_id'

client = bigquery.Client(project=project_id)

sql = f"""
select col1, col2, col3
from {dataset_id}.{table_id}
limit 100
"""

df = client.query(sql).to_dataframe()
display(df)

Lors de l'utilisation de pandas-gbq

Installez pandas-gbq avec pip

$ pip install pandas-gbq

Lire le résultat de la requête avec DataFrame

import pandas as pd


#Charger depuis BigQuery au format DataFrame
project_id = 'project_id'
dataset_id = 'dataset_id'
table_id = 'table_id'
query = f"""
SELECT *
FROM {dataset_id}.{table_id}
LIMIT 10
"""

# dialect='standard'Utiliser SQL standard dans
df = pd.read_gbq(query, project_id, dialect='standard')
display(df)

Écrire un DataFrame dans une table BigQuery

import pandas as pd


#Importer DataFrame dans BigQuery
df = pd.read_csv('path/to/dir/file.csv')
dataset_id = 'dataset_id'
table_id = 'table_id'
df.to_gbq(f'{dataset_id}.{table_id}')

Recommended Posts

Lecture / écriture entre BigQuery ↔ Pandas
lecture de données pandas
Lire le fichier CSV: pandas
Lire et écrire un fichier csv
Lire csv avec des pandas python
Lire et écrire des fichiers
Écrire et lire des fichiers
Comment écrire sobrement avec des pandas
Ignorer # ligne et lire avec les pandas
Différences entre Python, read (), readline (), readlines ()