Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5ceed05

Browse files
SalemJordenSalem Boylandtswast
authored
feat: addModel.transform_columns property (#1661)
---------Co-authored-by: Salem Boyland <salemb@google.com>Co-authored-by: Tim Swast <swast@google.com>
1 parentfaa50b9 commit5ceed05

File tree

3 files changed

+140
-1
lines changed

3 files changed

+140
-1
lines changed

‎google/cloud/bigquery/model.py‎

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
"""Define resources for the BigQuery ML Models API."""
1818

19+
from __future__importannotations# type: ignore
20+
1921
importcopy
2022
importdatetime
2123
importtyping
@@ -184,6 +186,21 @@ def feature_columns(self) -> Sequence[standard_sql.StandardSqlField]:
184186
standard_sql.StandardSqlField.from_api_repr(column)forcolumninresource
185187
]
186188

189+
@property
190+
deftransform_columns(self)->Sequence[TransformColumn]:
191+
"""The input feature columns that were used to train this model.
192+
The output transform columns used to train this model.
193+
194+
See REST API:
195+
https://cloud.google.com/bigquery/docs/reference/rest/v2/models#transformcolumn
196+
197+
Read-only.
198+
"""
199+
resources:Sequence[Dict[str,Any]]=typing.cast(
200+
Sequence[Dict[str,Any]],self._properties.get("transformColumns", [])
201+
)
202+
return [TransformColumn(resource)forresourceinresources]
203+
187204
@property
188205
deflabel_columns(self)->Sequence[standard_sql.StandardSqlField]:
189206
"""Label columns that were used to train this model.
@@ -434,6 +451,60 @@ def __repr__(self):
434451
)
435452

436453

454+
classTransformColumn:
455+
"""TransformColumn represents a transform column feature.
456+
457+
See
458+
https://cloud.google.com/bigquery/docs/reference/rest/v2/models#transformcolumn
459+
460+
Args:
461+
resource:
462+
A dictionary representing a transform column feature.
463+
"""
464+
465+
def__init__(self,resource:Dict[str,Any]):
466+
self._properties=resource
467+
468+
@property
469+
defname(self)->Optional[str]:
470+
"""Name of the column."""
471+
returnself._properties.get("name")
472+
473+
@property
474+
deftype_(self)->Optional[standard_sql.StandardSqlDataType]:
475+
"""Data type of the column after the transform.
476+
477+
Returns:
478+
Optional[google.cloud.bigquery.standard_sql.StandardSqlDataType]:
479+
Data type of the column.
480+
"""
481+
type_json=self._properties.get("type")
482+
iftype_jsonisNone:
483+
returnNone
484+
returnstandard_sql.StandardSqlDataType.from_api_repr(type_json)
485+
486+
@property
487+
deftransform_sql(self)->Optional[str]:
488+
"""The SQL expression used in the column transform."""
489+
returnself._properties.get("transformSql")
490+
491+
@classmethod
492+
deffrom_api_repr(cls,resource:Dict[str,Any])->"TransformColumn":
493+
"""Constructs a transform column feature given its API representation
494+
495+
Args:
496+
resource:
497+
Transform column feature representation from the API
498+
499+
Returns:
500+
Transform column feature parsed from ``resource``.
501+
"""
502+
this=cls({})
503+
resource=copy.deepcopy(resource)
504+
this._properties=resource
505+
returnthis
506+
507+
437508
def_model_arg_to_model_ref(value,default_project=None):
438509
"""Helper to convert a string or Model to ModelReference.
439510

‎mypy.ini‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[mypy]
2-
python_version = 3.6
2+
python_version = 3.8
33
namespace_packages = True

‎tests/unit/model/test_model.py‎

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818

1919
importpytest
2020

21+
2122
importgoogle.cloud._helpers
23+
importgoogle.cloud.bigquery.model
2224

2325
KMS_KEY_NAME="projects/1/locations/us/keyRings/1/cryptoKeys/1"
2426

@@ -136,6 +138,7 @@ def test_from_api_repr(target_class):
136138
google.cloud._helpers._rfc3339_to_datetime(got.training_runs[2]["startTime"])
137139
==expiration_time
138140
)
141+
assertgot.transform_columns== []
139142

140143

141144
deftest_from_api_repr_w_minimal_resource(target_class):
@@ -293,6 +296,71 @@ def test_feature_columns(object_under_test):
293296
assertobject_under_test.feature_columns==expected
294297

295298

299+
deftest_from_api_repr_w_transform_columns(target_class):
300+
resource= {
301+
"modelReference": {
302+
"projectId":"my-project",
303+
"datasetId":"my_dataset",
304+
"modelId":"my_model",
305+
},
306+
"transformColumns": [
307+
{
308+
"name":"transform_name",
309+
"type": {"typeKind":"INT64"},
310+
"transformSql":"transform_sql",
311+
}
312+
],
313+
}
314+
got=target_class.from_api_repr(resource)
315+
assertlen(got.transform_columns)==1
316+
transform_column=got.transform_columns[0]
317+
assertisinstance(transform_column,google.cloud.bigquery.model.TransformColumn)
318+
asserttransform_column.name=="transform_name"
319+
320+
321+
deftest_transform_column_name():
322+
transform_columns=google.cloud.bigquery.model.TransformColumn(
323+
{"name":"is_female"}
324+
)
325+
asserttransform_columns.name=="is_female"
326+
327+
328+
deftest_transform_column_transform_sql():
329+
transform_columns=google.cloud.bigquery.model.TransformColumn(
330+
{"transformSql":"is_female"}
331+
)
332+
asserttransform_columns.transform_sql=="is_female"
333+
334+
335+
deftest_transform_column_type():
336+
transform_columns=google.cloud.bigquery.model.TransformColumn(
337+
{"type": {"typeKind":"BOOL"}}
338+
)
339+
asserttransform_columns.type_.type_kind=="BOOL"
340+
341+
342+
deftest_transform_column_type_none():
343+
transform_columns=google.cloud.bigquery.model.TransformColumn({})
344+
asserttransform_columns.type_isNone
345+
346+
347+
deftest_transform_column_from_api_repr_with_unknown_properties():
348+
transform_column=google.cloud.bigquery.model.TransformColumn.from_api_repr(
349+
{
350+
"name":"is_female",
351+
"type": {"typeKind":"BOOL"},
352+
"transformSql":"is_female",
353+
"test":"one",
354+
}
355+
)
356+
asserttransform_column._properties== {
357+
"name":"is_female",
358+
"type": {"typeKind":"BOOL"},
359+
"transformSql":"is_female",
360+
"test":"one",
361+
}
362+
363+
296364
deftest_label_columns(object_under_test):
297365
fromgoogle.cloud.bigqueryimportstandard_sql
298366

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp