У нас есть конвейер обработки данных на основе:
pandas
(0.23.4) google.cloud.bigquery
(1.5.0) и pyarrow
(0.10.0)
Для предотвращения проблем с преобразованием типов и т. Д. Я смотрю на то, что происходит под капотом.
Из исходного кода я вижу, чтозагрузка кадра данных с bigquery.client.load_table_from_dataframe()
использует паркет в качестве промежуточного формата.dateframe.to_parquet
вызывается и буфер загружается в bigquery.
Я не понимаю, как это работает наоборот.Исходный код bigquery.client.sql.to_dataframe()
гласит:
def to_dataframe(self):
"""Return a pandas DataFrame from a QueryJob
Returns:
A :class:`~pandas.DataFrame` populated with row data and column
headers from the query results. The column headers are derived
from the destination table's schema.
Raises:
ValueError: If the `pandas` library cannot be imported.
"""
return self.result().to_dataframe()
У меня не так много опыта работы с Python с классами, на самом деле это означает, что to_dataframe()
определено выше в иерархии классов.
Возвращаясь, я в конечном итоге на _AsyncJob
, который является ребенком google.api_core.future.polling.PollingFuture
.Но я нигде не могу найти определение.
Помогите, кто-нибудь?