diff --git a/sdk/python/feast/infra/offline_stores/bigquery.py b/sdk/python/feast/infra/offline_stores/bigquery.py index fbea3dc5c3e..b3a500665ed 100644 --- a/sdk/python/feast/infra/offline_stores/bigquery.py +++ b/sdk/python/feast/infra/offline_stores/bigquery.py @@ -44,9 +44,9 @@ from feast.infra.registry.base_registry import BaseRegistry from feast.on_demand_feature_view import OnDemandFeatureView from feast.repo_config import FeastConfigBaseModel, RepoConfig +from feast.saved_dataset import SavedDatasetStorage +from feast.usage import get_user_agent, log_exceptions_and_usage -from ...saved_dataset import SavedDatasetStorage -from ...usage import get_user_agent, log_exceptions_and_usage from .bigquery_source import ( BigQueryLoggingDestination, BigQuerySource, diff --git a/sdk/python/feast/infra/offline_stores/bigquery_source.py b/sdk/python/feast/infra/offline_stores/bigquery_source.py index a9c7924c660..28d6a3ed77e 100644 --- a/sdk/python/feast/infra/offline_stores/bigquery_source.py +++ b/sdk/python/feast/infra/offline_stores/bigquery_source.py @@ -15,8 +15,16 @@ ) from feast.repo_config import RepoConfig from feast.saved_dataset import SavedDatasetStorage +from feast.usage import get_user_agent from feast.value_type import ValueType +try: + from google.api_core import client_info as http_client_info +except ImportError as e: + from feast.errors import FeastExtrasDependencyImportError + + raise FeastExtrasDependencyImportError("gcp", str(e)) + @typechecked class BigQuerySource(DataSource): @@ -159,7 +167,14 @@ def get_table_column_names_and_types( ) -> Iterable[Tuple[str, str]]: from google.cloud import bigquery - client = bigquery.Client() + project_id = ( + config.offline_store.billing_project_id or config.offline_store.project_id + ) + client = bigquery.Client( + project=project_id, + location=config.offline_store.location, + client_info=http_client_info.ClientInfo(user_agent=get_user_agent()), + ) if self.table: schema = client.get_table(self.table).schema if not isinstance(schema[0], bigquery.schema.SchemaField):