1616
1717from typing import Mapping , Optional , Union
1818
19+ import bigframes_vendored .constants
20+ import google .cloud .bigquery
21+ import pandas as pd
22+
1923import bigframes .core .log_adapter as log_adapter
2024import bigframes .core .sql .ml
2125import bigframes .dataframe as dataframe
@@ -55,6 +59,16 @@ def _get_model_name_and_session(
5559 return model ._bqml_model .model_name , model ._bqml_model .session
5660
5761
62+ def _get_model_metadata (
63+ * ,
64+ bqclient : google .cloud .bigquery .Client ,
65+ model_name : str ,
66+ ) -> pd .Series :
67+ model_metadata = bqclient .get_model (model_name )
68+ model_dict = model_metadata .to_api_repr ()
69+ return pd .Series (model_dict )
70+
71+
5872@log_adapter .method_logger (custom_base_name = "bigquery_ml" )
5973def create_model (
6074 model_name : str ,
@@ -71,7 +85,7 @@ def create_model(
7185 training_data : Optional [Union [dataframe .DataFrame , str ]] = None ,
7286 custom_holiday : Optional [Union [dataframe .DataFrame , str ]] = None ,
7387 session : Optional [bigframes .session .Session ] = None ,
74- ) -> bigframes . ml . base . BaseEstimator :
88+ ) -> pd . Series :
7589 """
7690 Creates a BigQuery ML model.
7791
@@ -105,8 +119,12 @@ def create_model(
105119 The session to use. If not provided, the default session is used.
106120
107121 Returns:
108- bigframes.ml.base.BaseEstimator:
109- The created BigQuery ML model.
122+ pandas.Series:
123+ A Series with object dtype containing the model metadata. Reference
124+ the `BigQuery Model REST API reference
125+ <https://docs.cloud.google.com/bigquery/docs/reference/rest/v2/models#Model>`_
126+ for available fields.
127+
110128 """
111129 import bigframes .pandas as bpd
112130
@@ -138,12 +156,15 @@ def create_model(
138156 )
139157
140158 if session is None :
159+ bpd .read_gbq_query (sql )
141160 session = bpd .get_global_session ()
161+ assert (
162+ session is not None
163+ ), f"Missing connection to BigQuery. Please report how you encountered this error at { bigframes_vendored .constants .FEEDBACK_LINK } ."
164+ else :
165+ session .read_gbq_query (sql )
142166
143- # Use _start_query_ml_ddl which is designed for this
144- session ._start_query_ml_ddl (sql )
145-
146- return session .read_gbq_model (model_name )
167+ return _get_model_metadata (bqclient = session .bqclient , model_name = model_name )
147168
148169
149170@log_adapter .method_logger (custom_base_name = "bigquery_ml" )
0 commit comments