[docs]@deprecated(since="0.0.32",removal="1.0",alternative_import="langchain_google_community.BigQueryLoader",)classBigQueryLoader(BaseLoader):"""Load from the Google Cloud Platform `BigQuery`. Each document represents one row of the result. The `page_content_columns` are written into the `page_content` of the document. The `metadata_columns` are written into the `metadata` of the document. By default, all columns are written into the `page_content` and none into the `metadata`. """
[docs]def__init__(self,query:str,project:Optional[str]=None,page_content_columns:Optional[List[str]]=None,metadata_columns:Optional[List[str]]=None,credentials:Optional[Credentials]=None,):"""Initialize BigQuery document loader. Args: query: The query to run in BigQuery. project: Optional. The project to run the query in. page_content_columns: Optional. The columns to write into the `page_content` of the document. metadata_columns: Optional. The columns to write into the `metadata` of the document. credentials : google.auth.credentials.Credentials, optional Credentials for accessing Google APIs. Use this parameter to override default credentials, such as to use Compute Engine (`google.auth.compute_engine.Credentials`) or Service Account (`google.oauth2.service_account.Credentials`) credentials directly. """self.query=queryself.project=projectself.page_content_columns=page_content_columnsself.metadata_columns=metadata_columnsself.credentials=credentials
[docs]defload(self)->List[Document]:try:fromgoogle.cloudimportbigqueryexceptImportErrorasex:raiseImportError("Could not import google-cloud-bigquery python package. ""Please install it with `pip install google-cloud-bigquery`.")fromexbq_client=bigquery.Client(credentials=self.credentials,project=self.project,client_info=get_client_info(module="bigquery"),)ifnotbq_client.project:error_desc=("GCP project for Big Query is not set! Either provide a ""`project` argument during BigQueryLoader instantiation, ""or set a default project with `gcloud config set project` ""command.")raiseValueError(error_desc)query_result=bq_client.query(self.query).result()docs:List[Document]=[]page_content_columns=self.page_content_columnsmetadata_columns=self.metadata_columnsifpage_content_columnsisNone:page_content_columns=[column.nameforcolumninquery_result.schema]ifmetadata_columnsisNone:metadata_columns=[]forrowinquery_result:page_content="\n".join(f"{k}: {v}"fork,vinrow.items()ifkinpage_content_columns)metadata={k:vfork,vinrow.items()ifkinmetadata_columns}doc=Document(page_content=page_content,metadata=metadata)docs.append(doc)returndocs