Skip to content

Commit f24872d

Browse files
committed
BigQuery: add reference property to Table and Dataset
This makes it easier to call `get_table`, `get_dataset`, or other functions that want just a reference, not a full resource.
1 parent f308bd4 commit f24872d

4 files changed

Lines changed: 31 additions & 0 deletions

File tree

bigquery/google/cloud/bigquery/dataset.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,17 @@ def full_dataset_id(self):
279279
"""
280280
return self._properties.get('id')
281281

282+
@property
283+
def reference(self):
284+
"""A :class:`~google.cloud.bigquery.dataset.DatasetReference` pointing to
285+
this dataset.
286+
287+
Returns:
288+
google.cloud.bigquery.dataset.DatasetReference:
289+
A pointer to this dataset
290+
"""
291+
return DatasetReference(self.project, self.dataset_id)
292+
282293
@property
283294
def etag(self):
284295
"""ETag for the dataset resource.

bigquery/google/cloud/bigquery/table.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,20 @@ def table_id(self):
223223
"""
224224
return self._table_id
225225

226+
@property
227+
def reference(self):
228+
"""A :class:`~google.cloud.bigquery.table.TableReference` pointing to
229+
this table.
230+
231+
Returns:
232+
google.cloud.bigquery.table.TableReference:
233+
A pointer to this table
234+
"""
235+
from google.cloud.bigquery import dataset
236+
237+
dataset_ref = dataset.DatasetReference(self.project, self.dataset_id)
238+
return TableReference(dataset_ref, self.table_id)
239+
226240
@property
227241
def path(self):
228242
"""URL path for the table's APIs.

bigquery/tests/unit/test_dataset.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,10 @@ def _verify_access_entry(self, access_entries, resource):
245245

246246
def _verify_readonly_resource_properties(self, dataset, resource):
247247

248+
self.assertEqual(dataset.project, self.PROJECT)
248249
self.assertEqual(dataset.dataset_id, self.DS_ID)
250+
self.assertEqual(dataset.reference.project, self.PROJECT)
251+
self.assertEqual(dataset.reference.dataset_id, self.DS_ID)
249252

250253
if 'creationTime' in resource:
251254
self.assertEqual(dataset.created, self.WHEN)

bigquery/tests/unit/test_table.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,9 @@ def test_ctor(self):
293293
self.assertEqual(table.table_id, self.TABLE_NAME)
294294
self.assertEqual(table.project, self.PROJECT)
295295
self.assertEqual(table.dataset_id, self.DS_ID)
296+
self.assertEqual(table.reference.table_id, self.TABLE_NAME)
297+
self.assertEqual(table.reference.project, self.PROJECT)
298+
self.assertEqual(table.reference.dataset_id, self.DS_ID)
296299
self.assertEqual(
297300
table.path,
298301
'/projects/%s/datasets/%s/tables/%s' % (

0 commit comments

Comments
 (0)