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

Commit81ef7f4

Browse files
shobsichalmerlowe
authored andcommitted
feat: addconnection_properties andcreate_session toLoadJobConfig (#1509)
* feat: added `connection_properties` and `create_session` in load job
1 parent0005519 commit81ef7f4

File tree

4 files changed

+83
-0
lines changed

4 files changed

+83
-0
lines changed

‎.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ docs.metadata
5151

5252
# Virtual environment
5353
env/
54+
venv/
5455

5556
# Test logs
5657
coverage.xml

‎google/cloud/bigquery/job/load.py‎

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
fromgoogle.cloud.bigquery.job.baseimport_AsyncJob
2929
fromgoogle.cloud.bigquery.job.baseimport_JobConfig
3030
fromgoogle.cloud.bigquery.job.baseimport_JobReference
31+
fromgoogle.cloud.bigquery.queryimportConnectionProperty
3132

3233

3334
classLoadJobConfig(_JobConfig):
@@ -120,6 +121,25 @@ def clustering_fields(self, value):
120121
else:
121122
self._del_sub_prop("clustering")
122123

124+
@property
125+
defconnection_properties(self)->List[ConnectionProperty]:
126+
"""Connection properties.
127+
128+
See
129+
https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#JobConfigurationLoad.FIELDS.connection_properties
130+
131+
.. versionadded:: 3.7.0
132+
"""
133+
resource=self._get_sub_prop("connectionProperties", [])
134+
return [ConnectionProperty.from_api_repr(prop)forpropinresource]
135+
136+
@connection_properties.setter
137+
defconnection_properties(self,value:Iterable[ConnectionProperty]):
138+
self._set_sub_prop(
139+
"connectionProperties",
140+
[prop.to_api_repr()forpropinvalue],
141+
)
142+
123143
@property
124144
defcreate_disposition(self):
125145
"""Optional[google.cloud.bigquery.job.CreateDisposition]: Specifies behavior
@@ -134,6 +154,27 @@ def create_disposition(self):
134154
defcreate_disposition(self,value):
135155
self._set_sub_prop("createDisposition",value)
136156

157+
@property
158+
defcreate_session(self)->Optional[bool]:
159+
"""[Preview] If :data:`True`, creates a new session, where
160+
:attr:`~google.cloud.bigquery.job.LoadJob.session_info` will contain a
161+
random server generated session id.
162+
163+
If :data:`False`, runs load job with an existing ``session_id`` passed in
164+
:attr:`~google.cloud.bigquery.job.LoadJobConfig.connection_properties`,
165+
otherwise runs load job in non-session mode.
166+
167+
See
168+
https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#JobConfigurationLoad.FIELDS.create_session
169+
170+
.. versionadded:: 3.7.0
171+
"""
172+
returnself._get_sub_prop("createSession")
173+
174+
@create_session.setter
175+
defcreate_session(self,value:Optional[bool]):
176+
self._set_sub_prop("createSession",value)
177+
137178
@property
138179
defdecimal_target_types(self)->Optional[FrozenSet[str]]:
139180
"""Possible SQL data types to which the source decimal values are converted.
@@ -629,13 +670,31 @@ def autodetect(self):
629670
"""
630671
returnself._configuration.autodetect
631672

673+
@property
674+
defconnection_properties(self)->List[ConnectionProperty]:
675+
"""See
676+
:attr:`google.cloud.bigquery.job.LoadJobConfig.connection_properties`.
677+
678+
.. versionadded:: 3.7.0
679+
"""
680+
returnself._configuration.connection_properties
681+
632682
@property
633683
defcreate_disposition(self):
634684
"""See
635685
:attr:`google.cloud.bigquery.job.LoadJobConfig.create_disposition`.
636686
"""
637687
returnself._configuration.create_disposition
638688

689+
@property
690+
defcreate_session(self)->Optional[bool]:
691+
"""See
692+
:attr:`google.cloud.bigquery.job.LoadJobConfig.create_session`.
693+
694+
.. versionadded:: 3.7.0
695+
"""
696+
returnself._configuration.create_session
697+
639698
@property
640699
defencoding(self):
641700
"""See

‎tests/unit/job/test_load.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,8 @@ def test_from_api_repr_bare(self):
392392
job=klass.from_api_repr(RESOURCE,client=client)
393393
self.assertIs(job._client,client)
394394
self._verifyResourceProperties(job,RESOURCE)
395+
self.assertEqual(len(job.connection_properties),0)
396+
self.assertIsNone(job.create_session)
395397

396398
deftest_from_api_with_encryption(self):
397399
self._setUpConstants()

‎tests/unit/job/test_load_config.py‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,27 @@ def test_create_disposition_setter(self):
122122
config.create_disposition=disposition
123123
self.assertEqual(config._properties["load"]["createDisposition"],disposition)
124124

125+
deftest_connection_properties(self):
126+
fromgoogle.cloud.bigquery.queryimportConnectionProperty
127+
128+
config=self._get_target_class()()
129+
self.assertEqual(len(config.connection_properties),0)
130+
131+
session_id=ConnectionProperty("session_id","abcd")
132+
time_zone=ConnectionProperty("time_zone","America/Chicago")
133+
config.connection_properties= [session_id,time_zone]
134+
self.assertEqual(len(config.connection_properties),2)
135+
self.assertEqual(config.connection_properties[0].key,"session_id")
136+
self.assertEqual(config.connection_properties[0].value,"abcd")
137+
self.assertEqual(config.connection_properties[1].key,"time_zone")
138+
self.assertEqual(config.connection_properties[1].value,"America/Chicago")
139+
140+
deftest_create_session(self):
141+
config=self._get_target_class()()
142+
self.assertIsNone(config.create_session)
143+
config.create_session=True
144+
self.assertTrue(config.create_session)
145+
125146
deftest_decimal_target_types_miss(self):
126147
config=self._get_target_class()()
127148
self.assertIsNone(config.decimal_target_types)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp