[PYTHON] Lesen / Schreiben zwischen BigQuery ↔ Pandas

Einführung

BigQuery-Client-Bibliothek "google-cloud-bigquery" Ich werde schreiben, wie man den Wrapper pandas-gbq benutzt.

Umgebung

Registrierung des GCP-Kontos

[Erklärung mit Bild] Registrieren Sie ein Konto mit einer kostenlosen Testversion von Google Cloud Platform (GCP)

Installieren Sie das Google Cloud SDK

Installieren des Google Cloud SDK ~ Initialisieren

Projekterstellung

Erstellen Sie ein Projekt mit Google Cloud SDK

Erstellen eines Dienstkontos / Dienstkontoschlüssels

Erstellen Sie ein Dienstkonto / einen Dienstkontoschlüssel, damit Sie von Python aus auf GCS zugreifen können.

Erstellung eines Dienstkontos

gcloud iam service-Konten erstellen den Namen des Dienstkontos\
                                   --display-Name Anzeigename des Dienstkontos\
スクリーンショット 2020-02-10 0.10.39.png

Überprüfen Sie jetzt die mit dem Projekt verknüpften Berechtigungen

gcloud projects get-iam-policy mypj-id

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

Erteilen Sie Berechtigungen für Dienstkonten

Gewähren Sie BigQuery-Administratorrechte

gcloud projects add-iam-policy-verbindliche Projekt-ID\
--member serviceAccount:Name des [email protected] \
--role roles/bigquery.admin
スクリーンショット 2020-02-10 0.16.18.png

Rollenliste

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

Überprüfen Sie die Berechtigungen erneut

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

Erstellung des Dienstkontoschlüssels

$ gcloud iam service-accounts keys create ./anata_no_key.json \
--iam-Kontodienst [email protected]

Verzeichnisaufbau

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

Bei Verwendung von Google-Cloud-Bigquery

Installieren Sie "google-cloud-bigquery" mit pip

$ pip install google-cloud-bigquery

Lesen Sie das Abfrageergebnis mit DataFrame

main.py


import os

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


#Holen Sie sich das Verzeichnis Ihrer eigenen Datei
cwd = os.path.dirname(os.path.abspath(__file__))
#In Umgebungsvariable setzen
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)

Bei Verwendung von pandas-gbq

Installiere pandas-gbq mit pip

$ pip install pandas-gbq

Lesen Sie das Abfrageergebnis mit DataFrame

import pandas as pd


#Laden aus BigQuery im DataFrame-Format
project_id = 'project_id'
dataset_id = 'dataset_id'
table_id = 'table_id'
query = f"""
SELECT *
FROM {dataset_id}.{table_id}
LIMIT 10
"""

# dialect='standard'Verwenden Sie Standard-SQL in
df = pd.read_gbq(query, project_id, dialect='standard')
display(df)

Schreiben Sie einen DataFrame in eine BigQuery-Tabelle

import pandas as pd


#Importieren Sie DataFrame in 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

Lesen / Schreiben zwischen BigQuery ↔ Pandas
Pandas Daten lesen
Lesen Sie die CSV-Datei: pandas
CSV-Datei lesen und schreiben
Lesen Sie CSV mit Python-Pandas
Dateien lesen und schreiben
Dateien schreiben und lesen
Wie man nüchtern mit Pandas schreibt
# Zeile ignorieren und mit Pandas lesen
Unterschiede zwischen Python, read (), readline (), readlines ()