Skip to content

Commit

Permalink
BigQuery: add reference property to Table and Dataset
Browse files Browse the repository at this point in the history
This makes it easier to call `get_table`, `get_dataset`, or other
functions that want just a reference, not a full resource.
  • Loading branch information
tswast committed Nov 17, 2017
1 parent 39e4cd4 commit 74aa1ee
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 0 deletions.
11 changes: 11 additions & 0 deletions bigquery/google/cloud/bigquery/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,17 @@ def full_dataset_id(self):
"""
return self._properties.get('id')

@property
def reference(self):
"""A :class:`~google.cloud.bigquery.dataset.DatasetReference` pointing to
this dataset.
Returns:
google.cloud.bigquery.dataset.DatasetReference:
A pointer to this dataset
"""
return DatasetReference(self.project, self.dataset_id)

@property
def etag(self):
"""ETag for the dataset resource.
Expand Down
14 changes: 14 additions & 0 deletions bigquery/google/cloud/bigquery/table.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,20 @@ def table_id(self):
"""
return self._table_id

@property
def reference(self):
"""A :class:`~google.cloud.bigquery.table.TableReference` pointing to
this table.
Returns:
google.cloud.bigquery.table.TableReference:
A pointer to this table
"""
from google.cloud.bigquery import dataset

dataset_ref = dataset.DatasetReference(self.project, self.dataset_id)
return TableReference(dataset_ref, self.table_id)

@property
def path(self):
"""URL path for the table's APIs.
Expand Down
3 changes: 3 additions & 0 deletions bigquery/tests/unit/test_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,10 @@ def _verify_access_entry(self, access_entries, resource):

def _verify_readonly_resource_properties(self, dataset, resource):

self.assertEqual(dataset.project, self.PROJECT)
self.assertEqual(dataset.dataset_id, self.DS_ID)
self.assertEqual(dataset.reference.project, self.PROJECT)
self.assertEqual(dataset.reference.dataset_id, self.DS_ID)

if 'creationTime' in resource:
self.assertEqual(dataset.created, self.WHEN)
Expand Down
3 changes: 3 additions & 0 deletions bigquery/tests/unit/test_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,9 @@ def test_ctor(self):
self.assertEqual(table.table_id, self.TABLE_NAME)
self.assertEqual(table.project, self.PROJECT)
self.assertEqual(table.dataset_id, self.DS_ID)
self.assertEqual(table.reference.table_id, self.TABLE_NAME)
self.assertEqual(table.reference.project, self.PROJECT)
self.assertEqual(table.reference.dataset_id, self.DS_ID)
self.assertEqual(
table.path,
'/projects/%s/datasets/%s/tables/%s' % (
Expand Down

0 comments on commit 74aa1ee

Please sign in to comment.