Skip to content

Commit ca275d8

Browse files
emar-karGurov Ilya
authored and
Gurov Ilya
committed
BigQuery: deprecate client.dataset() part 1 (#9032)
Deprecate `client.dataset()` part 1
1 parent 451d76f commit ca275d8

40 files changed

+511
-246
lines changed

bigquery/docs/snippets.py

-205
Original file line numberDiff line numberDiff line change
@@ -125,133 +125,6 @@ def test_create_client_default_credentials():
125125
assert client is not None
126126

127127

128-
def test_list_datasets_by_label(client, to_delete):
129-
dataset_id = "list_datasets_by_label_{}".format(_millis())
130-
dataset = bigquery.Dataset(client.dataset(dataset_id))
131-
dataset.labels = {"color": "green"}
132-
dataset = client.create_dataset(dataset) # API request
133-
to_delete.append(dataset)
134-
135-
# [START bigquery_list_datasets_by_label]
136-
# from google.cloud import bigquery
137-
# client = bigquery.Client()
138-
139-
# The following label filter example will find datasets with an
140-
# arbitrary 'color' label set to 'green'
141-
label_filter = "labels.color:green"
142-
datasets = list(client.list_datasets(filter=label_filter))
143-
144-
if datasets:
145-
print("Datasets filtered by {}:".format(label_filter))
146-
for dataset in datasets: # API request(s)
147-
print("\t{}".format(dataset.dataset_id))
148-
else:
149-
print("No datasets found with this filter.")
150-
# [END bigquery_list_datasets_by_label]
151-
found = set([dataset.dataset_id for dataset in datasets])
152-
assert dataset_id in found
153-
154-
155-
# [START bigquery_dataset_exists]
156-
def dataset_exists(client, dataset_reference):
157-
"""Return if a dataset exists.
158-
159-
Args:
160-
client (google.cloud.bigquery.client.Client):
161-
A client to connect to the BigQuery API.
162-
dataset_reference (google.cloud.bigquery.dataset.DatasetReference):
163-
A reference to the dataset to look for.
164-
165-
Returns:
166-
bool: ``True`` if the dataset exists, ``False`` otherwise.
167-
"""
168-
from google.cloud.exceptions import NotFound
169-
170-
try:
171-
client.get_dataset(dataset_reference)
172-
return True
173-
except NotFound:
174-
return False
175-
176-
177-
# [END bigquery_dataset_exists]
178-
179-
180-
def test_dataset_exists(client, to_delete):
181-
"""Determine if a dataset exists."""
182-
DATASET_ID = "get_table_dataset_{}".format(_millis())
183-
dataset_ref = client.dataset(DATASET_ID)
184-
dataset = bigquery.Dataset(dataset_ref)
185-
dataset = client.create_dataset(dataset)
186-
to_delete.append(dataset)
187-
188-
assert dataset_exists(client, dataset_ref)
189-
assert not dataset_exists(client, client.dataset("i_dont_exist"))
190-
191-
192-
@pytest.mark.skip(
193-
reason=(
194-
"update_dataset() is flaky "
195-
"https://github.com/GoogleCloudPlatform/google-cloud-python/issues/5588"
196-
)
197-
)
198-
def test_manage_dataset_labels(client, to_delete):
199-
dataset_id = "label_dataset_{}".format(_millis())
200-
dataset = bigquery.Dataset(client.dataset(dataset_id))
201-
dataset = client.create_dataset(dataset)
202-
to_delete.append(dataset)
203-
204-
# [START bigquery_label_dataset]
205-
# from google.cloud import bigquery
206-
# client = bigquery.Client()
207-
# dataset_ref = client.dataset('my_dataset')
208-
# dataset = client.get_dataset(dataset_ref) # API request
209-
210-
assert dataset.labels == {}
211-
labels = {"color": "green"}
212-
dataset.labels = labels
213-
214-
dataset = client.update_dataset(dataset, ["labels"]) # API request
215-
216-
assert dataset.labels == labels
217-
# [END bigquery_label_dataset]
218-
219-
# [START bigquery_get_dataset_labels]
220-
# from google.cloud import bigquery
221-
# client = bigquery.Client()
222-
# dataset_id = 'my_dataset'
223-
224-
dataset_ref = client.dataset(dataset_id)
225-
dataset = client.get_dataset(dataset_ref) # API request
226-
227-
# View dataset labels
228-
print("Dataset ID: {}".format(dataset_id))
229-
print("Labels:")
230-
if dataset.labels:
231-
for label, value in dataset.labels.items():
232-
print("\t{}: {}".format(label, value))
233-
else:
234-
print("\tDataset has no labels defined.")
235-
# [END bigquery_get_dataset_labels]
236-
assert dataset.labels == labels
237-
238-
# [START bigquery_delete_label_dataset]
239-
# from google.cloud import bigquery
240-
# client = bigquery.Client()
241-
# dataset_ref = client.dataset('my_dataset')
242-
# dataset = client.get_dataset(dataset_ref) # API request
243-
244-
# This example dataset starts with one label
245-
assert dataset.labels == {"color": "green"}
246-
# To delete a label from a dataset, set its value to None
247-
dataset.labels["color"] = None
248-
249-
dataset = client.update_dataset(dataset, ["labels"]) # API request
250-
251-
assert dataset.labels == {}
252-
# [END bigquery_delete_label_dataset]
253-
254-
255128
def test_create_table_nested_repeated_schema(client, to_delete):
256129
dataset_id = "create_table_nested_repeated_{}".format(_millis())
257130
dataset_ref = client.dataset(dataset_id)
@@ -612,43 +485,6 @@ def test_update_table_expiration(client, to_delete):
612485
# [END bigquery_update_table_expiration]
613486

614487

615-
@pytest.mark.skip(
616-
reason=(
617-
"update_table() is flaky "
618-
"https://github.com/GoogleCloudPlatform/google-cloud-python/issues/5589"
619-
)
620-
)
621-
def test_add_empty_column(client, to_delete):
622-
"""Adds an empty column to an existing table."""
623-
dataset_id = "add_empty_column_dataset_{}".format(_millis())
624-
table_id = "add_empty_column_table_{}".format(_millis())
625-
dataset = bigquery.Dataset(client.dataset(dataset_id))
626-
dataset = client.create_dataset(dataset)
627-
to_delete.append(dataset)
628-
629-
table = bigquery.Table(dataset.table(table_id), schema=SCHEMA)
630-
table = client.create_table(table)
631-
632-
# [START bigquery_add_empty_column]
633-
# from google.cloud import bigquery
634-
# client = bigquery.Client()
635-
# dataset_id = 'my_dataset'
636-
# table_id = 'my_table'
637-
638-
table_ref = client.dataset(dataset_id).table(table_id)
639-
table = client.get_table(table_ref) # API request
640-
641-
original_schema = table.schema
642-
new_schema = original_schema[:] # creates a copy of the schema
643-
new_schema.append(bigquery.SchemaField("phone", "STRING"))
644-
645-
table.schema = new_schema
646-
table = client.update_table(table, ["schema"]) # API request
647-
648-
assert len(table.schema) == len(original_schema) + 1 == len(new_schema)
649-
# [END bigquery_add_empty_column]
650-
651-
652488
@pytest.mark.skip(
653489
reason=(
654490
"update_table() is flaky "
@@ -737,47 +573,6 @@ def test_update_table_cmek(client, to_delete):
737573
# [END bigquery_update_table_cmek]
738574

739575

740-
def test_browse_table_data(client, to_delete, capsys):
741-
"""Retreive selected row data from a table."""
742-
743-
# [START bigquery_browse_table]
744-
# from google.cloud import bigquery
745-
# client = bigquery.Client()
746-
747-
dataset_ref = client.dataset("samples", project="bigquery-public-data")
748-
table_ref = dataset_ref.table("shakespeare")
749-
table = client.get_table(table_ref) # API call
750-
751-
# Load all rows from a table
752-
rows = client.list_rows(table)
753-
assert len(list(rows)) == table.num_rows
754-
755-
# Load the first 10 rows
756-
rows = client.list_rows(table, max_results=10)
757-
assert len(list(rows)) == 10
758-
759-
# Specify selected fields to limit the results to certain columns
760-
fields = table.schema[:2] # first two columns
761-
rows = client.list_rows(table, selected_fields=fields, max_results=10)
762-
assert len(rows.schema) == 2
763-
assert len(list(rows)) == 10
764-
765-
# Use the start index to load an arbitrary portion of the table
766-
rows = client.list_rows(table, start_index=10, max_results=10)
767-
768-
# Print row data in tabular format
769-
format_string = "{!s:<16} " * len(rows.schema)
770-
field_names = [field.name for field in rows.schema]
771-
print(format_string.format(*field_names)) # prints column headers
772-
for row in rows:
773-
print(format_string.format(*row)) # prints row data
774-
# [END bigquery_browse_table]
775-
776-
out, err = capsys.readouterr()
777-
out = list(filter(bool, out.split("\n"))) # list of non-blank lines
778-
assert len(out) == 11
779-
780-
781576
@pytest.mark.skip(
782577
reason=(
783578
"update_table() is flaky "

bigquery/docs/usage/datasets.rst

+48
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ List datasets for a project with the
2525
:start-after: [START bigquery_list_datasets]
2626
:end-before: [END bigquery_list_datasets]
2727

28+
List datasets by label for a project with the
29+
:func:`~google.cloud.bigquery.client.Client.list_datasets` method:
30+
31+
.. literalinclude:: ../samples/list_datasets_by_label.py
32+
:language: python
33+
:dedent: 4
34+
:start-after: [START bigquery_list_datasets_by_label]
35+
:end-before: [END bigquery_list_datasets_by_label]
36+
2837
Getting a Dataset
2938
^^^^^^^^^^^^^^^^^
3039

@@ -37,6 +46,15 @@ Get a dataset resource (to pick up changes made by another client) with the
3746
:start-after: [START bigquery_get_dataset]
3847
:end-before: [END bigquery_get_dataset]
3948

49+
Determine if a dataset exists with the
50+
:func:`~google.cloud.bigquery.client.Client.get_dataset` method:
51+
52+
.. literalinclude:: ../samples/dataset_exists.py
53+
:language: python
54+
:dedent: 4
55+
:start-after: [START bigquery_dataset_exists]
56+
:end-before: [END bigquery_dataset_exists]
57+
4058
Creating a Dataset
4159
^^^^^^^^^^^^^^^^^^
4260

@@ -70,6 +88,36 @@ Modify user permissions on a dataset with the
7088
:start-after: [START bigquery_update_dataset_access]
7189
:end-before: [END bigquery_update_dataset_access]
7290

91+
Manage Dataset labels
92+
^^^^^^^^^^^^^^^^^^^^^
93+
94+
Add labels to a dataset with the
95+
:func:`~google.cloud.bigquery.client.Client.update_dataset` method:
96+
97+
.. literalinclude:: ../samples/label_dataset.py
98+
:language: python
99+
:dedent: 4
100+
:start-after: [START bigquery_label_dataset]
101+
:end-before: [END bigquery_label_dataset]
102+
103+
Get dataset's labels with the
104+
:func:`~google.cloud.bigquery.client.Client.get_dataset` method:
105+
106+
.. literalinclude:: ../samples/get_dataset_labels.py
107+
:language: python
108+
:dedent: 4
109+
:start-after: [START bigquery_get_dataset_labels]
110+
:end-before: [END bigquery_get_dataset_labels]
111+
112+
Delete dataset's labels with the
113+
:func:`~google.cloud.bigquery.client.Client.update_dataset` method:
114+
115+
.. literalinclude:: ../samples/delete_dataset_labels.py
116+
:language: python
117+
:dedent: 4
118+
:start-after: [START bigquery_delete_label_dataset]
119+
:end-before: [END bigquery_delete_label_dataset]
120+
73121
Deleting a Dataset
74122
^^^^^^^^^^^^^^^^^^
75123

bigquery/docs/usage/tables.rst

+10-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Get a table resource with the
3131
Browse data rows in a table with the
3232
:func:`~google.cloud.bigquery.client.Client.list_rows` method:
3333

34-
.. literalinclude:: ../snippets.py
34+
.. literalinclude:: ../samples/browse_table_data.py
3535
:language: python
3636
:dedent: 4
3737
:start-after: [START bigquery_browse_table]
@@ -113,6 +113,15 @@ Insert rows into a table's data with the
113113
:start-after: [START bigquery_table_insert_rows]
114114
:end-before: [END bigquery_table_insert_rows]
115115

116+
Add an empty column to the existing table with the
117+
:func:`~google.cloud.bigquery.update_table` method:
118+
119+
.. literalinclude:: ../samples/add_empty_column.py
120+
:language: python
121+
:dedent: 4
122+
:start-after: [START bigquery_add_empty_column]
123+
:end-before: [END bigquery_add_empty_column]
124+
116125
Copying a Table
117126
^^^^^^^^^^^^^^^
118127

bigquery/samples/add_empty_column.py

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Copyright 2019 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
16+
def add_empty_column(client, table_id):
17+
18+
# [START bigquery_add_empty_column]
19+
from google.cloud import bigquery
20+
21+
# TODO(developer): Construct a BigQuery client object.
22+
# client = bigquery.Client()
23+
24+
# TODO(developer): Set table_id to the ID of the table to add an empty column.
25+
# table_id = "your-project.your_dataset.your_table_name"
26+
27+
table = client.get_table(table_id)
28+
29+
original_schema = table.schema
30+
new_schema = original_schema[:] # creates a copy of the schema
31+
new_schema.append(bigquery.SchemaField("phone", "STRING"))
32+
33+
table.schema = new_schema
34+
table = client.update_table(table, ["schema"]) # API request
35+
36+
if len(table.schema) == len(original_schema) + 1 == len(new_schema):
37+
print("A new column has been added.")
38+
else:
39+
print("The column has not been added.")
40+
# [END bigquery_add_empty_column]

0 commit comments

Comments
 (0)