Skip to content

Commit 10f5a2d

Browse files
alixhamitswast
authored andcommitted
BigQuery: Add TestReference class. Add table function to DatasetReference (#3942)
1 parent f17bb9c commit 10f5a2d

File tree

4 files changed

+71
-0
lines changed

4 files changed

+71
-0
lines changed

bigquery/google/cloud/bigquery/dataset.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from google.cloud._helpers import _datetime_from_microseconds
2020
from google.cloud.exceptions import NotFound
2121
from google.cloud.bigquery.table import Table
22+
from google.cloud.bigquery.table import TableReference
2223

2324

2425
class AccessEntry(object):
@@ -126,6 +127,14 @@ def dataset_id(self):
126127
"""
127128
return self._dataset_id
128129

130+
def table(self, table_id):
131+
"""Constructs a TableReference.
132+
133+
:rtype: :class:`google.cloud.bigquery.table.TableReference`
134+
:returns: a TableReference for a table in this dataset.
135+
"""
136+
return TableReference(self, table_id)
137+
129138

130139
class Dataset(object):
131140
"""Datasets are containers for tables.

bigquery/google/cloud/bigquery/table.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,42 @@
4848
_DEFAULT_NUM_RETRIES = 6
4949

5050

51+
class TableReference(object):
52+
"""TableReferences are pointers to tables.
53+
54+
See
55+
https://cloud.google.com/bigquery/docs/reference/rest/v2/tables
56+
57+
:type dataset_ref: :class:`google.cloud.bigquery.dataset.DatasetReference`
58+
:param dataset_ref: a pointer to the dataset
59+
60+
:type table_id: str
61+
:param table_id: the ID of the table
62+
"""
63+
64+
def __init__(self, dataset_ref, table_id):
65+
self._dataset_ref = dataset_ref
66+
self._table_id = table_id
67+
68+
@property
69+
def dataset_ref(self):
70+
"""Pointer to the dataset.
71+
72+
:rtype: :class:`google.cloud.bigquery.dataset.DatasetReference`
73+
:returns: a pointer to the dataset.
74+
"""
75+
return self._dataset_ref
76+
77+
@property
78+
def table_id(self):
79+
"""Table ID.
80+
81+
:rtype: str
82+
:returns: the table ID.
83+
"""
84+
return self._table_id
85+
86+
5187
class Table(object):
5288
"""Tables represent a set of rows whose values correspond to a schema.
5389

bigquery/tests/unit/test_dataset.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ def test_ctor_defaults(self):
101101
self.assertEqual(dataset_ref.project_id, 'some-project-1')
102102
self.assertEqual(dataset_ref.dataset_id, 'dataset_1')
103103

104+
def test_table(self):
105+
dataset_ref = self._make_one('some-project-1', 'dataset_1')
106+
table_ref = dataset_ref.table('table_1')
107+
self.assertIs(table_ref.dataset_ref, dataset_ref)
108+
self.assertEqual(table_ref.table_id, 'table_1')
109+
104110

105111
class TestDataset(unittest.TestCase):
106112
PROJECT = 'project'

bigquery/tests/unit/test_table.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,26 @@ def _verifySchema(self, schema, resource):
3737
self._verify_field(field, r_field)
3838

3939

40+
class TestTableReference(unittest.TestCase):
41+
42+
@staticmethod
43+
def _get_target_class():
44+
from google.cloud.bigquery.table import TableReference
45+
46+
return TableReference
47+
48+
def _make_one(self, *args, **kw):
49+
return self._get_target_class()(*args, **kw)
50+
51+
def test_ctor_defaults(self):
52+
from google.cloud.bigquery.dataset import DatasetReference
53+
dataset_ref = DatasetReference('project_1', 'dataset_1')
54+
55+
table_ref = self._make_one(dataset_ref, 'table_1')
56+
self.assertIs(table_ref.dataset_ref, dataset_ref)
57+
self.assertEqual(table_ref.table_id, 'table_1')
58+
59+
4060
class TestTable(unittest.TestCase, _SchemaBase):
4161

4262
PROJECT = 'prahj-ekt'

0 commit comments

Comments
 (0)