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

Commit645f0fd

Browse files
authored
fix: allow partial streaming_buffer statistics (#37)
* fix: allow partial streaming_buffer statistics.Previously, the BQ backend would supply all fields of thestreamingBuffer statistics or none. This is no longer thecase, so we relax construction to not depend on all valuesbeing present.Related: internal issue b/148720220
1 parent3d77a75 commit645f0fd

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

‎google/cloud/bigquery/table.py‎

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,12 +1139,17 @@ class StreamingBuffer(object):
11391139
"""
11401140

11411141
def__init__(self,resource):
1142-
self.estimated_bytes=int(resource["estimatedBytes"])
1143-
self.estimated_rows=int(resource["estimatedRows"])
1144-
# time is in milliseconds since the epoch.
1145-
self.oldest_entry_time=google.cloud._helpers._datetime_from_microseconds(
1146-
1000.0*int(resource["oldestEntryTime"])
1147-
)
1142+
self.estimated_bytes=None
1143+
if"estimatedBytes"inresource:
1144+
self.estimated_bytes=int(resource["estimatedBytes"])
1145+
self.estimated_rows=None
1146+
if"estimatedRows"inresource:
1147+
self.estimated_rows=int(resource["estimatedRows"])
1148+
self.oldest_entry_time=None
1149+
if"oldestEntryTime"inresource:
1150+
self.oldest_entry_time=google.cloud._helpers._datetime_from_microseconds(
1151+
1000.0*int(resource["oldestEntryTime"])
1152+
)
11481153

11491154

11501155
classRow(object):

‎tests/unit/test_table.py‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,29 @@ def test_from_api_repr_w_properties(self):
855855
table=klass.from_api_repr(RESOURCE)
856856
self._verifyResourceProperties(table,RESOURCE)
857857

858+
deftest_from_api_repr_w_partial_streamingbuffer(self):
859+
importdatetime
860+
fromgoogle.cloud._helpersimportUTC
861+
fromgoogle.cloud._helpersimport_millis
862+
863+
RESOURCE=self._make_resource()
864+
self.OLDEST_TIME=datetime.datetime(2015,8,1,23,59,59,tzinfo=UTC)
865+
RESOURCE["streamingBuffer"]= {"oldestEntryTime":_millis(self.OLDEST_TIME)}
866+
klass=self._get_target_class()
867+
table=klass.from_api_repr(RESOURCE)
868+
self.assertIsNotNone(table.streaming_buffer)
869+
self.assertIsNone(table.streaming_buffer.estimated_rows)
870+
self.assertIsNone(table.streaming_buffer.estimated_bytes)
871+
self.assertEqual(table.streaming_buffer.oldest_entry_time,self.OLDEST_TIME)
872+
# Another partial construction
873+
RESOURCE["streamingBuffer"]= {"estimatedRows":1}
874+
klass=self._get_target_class()
875+
table=klass.from_api_repr(RESOURCE)
876+
self.assertIsNotNone(table.streaming_buffer)
877+
self.assertEqual(table.streaming_buffer.estimated_rows,1)
878+
self.assertIsNone(table.streaming_buffer.estimated_bytes)
879+
self.assertIsNone(table.streaming_buffer.oldest_entry_time)
880+
858881
deftest_from_api_with_encryption(self):
859882
self._setUpConstants()
860883
RESOURCE= {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp