"""Code for interacting with BigQuery."""
from typing import Generator
from google.cloud import bigquery
from google.cloud import bigquery_storage
import pandas
class Querier:
def __init__(self, billing_project: str):
self._billing_project = billing_project
def GetSeriesForQuery(self,
query: str) -> Generator[pandas.Series, None, None]:
"""Generates results for |query|.
Args:
query: The BigQuery query to run.
Yields:
A pandas.Series object for each row returned by the query. Columns can be
accessed directly as attributes.
"""
client = bigquery.Client(project=self._billing_project)
job = client.query(query)
row_iterator = job.result()
dataframe_iterator = row_iterator.to_dataframe_iterable(
bigquery_storage.BigQueryReadClient())
for df in dataframe_iterator:
for _, row in df.iterrows():
yield row