From 7e8c875555e3279c1862c34f005a45aa10ae3c7e Mon Sep 17 00:00:00 2001 From: Mario Torres Jr Date: Tue, 20 Dec 2022 11:52:52 -0600 Subject: [PATCH 1/3] docs: revise sample for nested schema --- samples/snippets/nested_repeated_schema.py | 53 +++++++++++++++++++ .../snippets/nested_repeated_schema_test.py | 31 +++++++++++ 2 files changed, 84 insertions(+) create mode 100644 samples/snippets/nested_repeated_schema.py create mode 100644 samples/snippets/nested_repeated_schema_test.py diff --git a/samples/snippets/nested_repeated_schema.py b/samples/snippets/nested_repeated_schema.py new file mode 100644 index 000000000..b00873dfe --- /dev/null +++ b/samples/snippets/nested_repeated_schema.py @@ -0,0 +1,53 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +def nested_schema(table_id: str) -> None: + orig_table_id = table_id + # [START bigquery_nested_repeated_schema] + from google.cloud import bigquery + + client = bigquery.Client() + + # TODO(dev): Change table_id to the full name of the table you want to create. + table_id = "your-project.your_dataset.your_table_name" + + schema = [ + bigquery.SchemaField("id", "STRING", mode="NULLABLE"), + bigquery.SchemaField("first_name", "STRING", mode="NULLABLE"), + bigquery.SchemaField("last_name", "STRING", mode="NULLABLE"), + bigquery.SchemaField("dob", "DATE", mode="NULLABLE"), + bigquery.SchemaField( + "addresses", + "RECORD", + mode="REPEATED", + fields=[ + bigquery.SchemaField("status", "STRING", mode="NULLABLE"), + bigquery.SchemaField("address", "STRING", mode="NULLABLE"), + bigquery.SchemaField("city", "STRING", mode="NULLABLE"), + bigquery.SchemaField("state", "STRING", mode="NULLABLE"), + bigquery.SchemaField("zip", "STRING", mode="NULLABLE"), + bigquery.SchemaField("numberOfYears", "STRING", mode="NULLABLE"), + ], + ), + ] + # [END bigquery_nested_repeated_schema] + + table_id = orig_table_id + + # [START bigquery_nested_repeated_schema] + table = bigquery.Table(table_id, schema=schema) + table = client.create_table(table) # API request + + print(f"Created table {table.project}.{table.dataset_id}.{table.table_id}.") + # [END bigquery_nested_repeated_schema] \ No newline at end of file diff --git a/samples/snippets/nested_repeated_schema_test.py b/samples/snippets/nested_repeated_schema_test.py new file mode 100644 index 000000000..299274966 --- /dev/null +++ b/samples/snippets/nested_repeated_schema_test.py @@ -0,0 +1,31 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import typing + +import nested_repeated_schema + +if typing.TYPE_CHECKING: + import pytest + +def test_create_table( + capsys: "pytest.CaptureFixture[str]", + random_table_id: str, +) -> None: + + nested_repeated_schema.nested_schema(random_table_id) + + out, _ = capsys.readouterr() + assert "Created" in out + assert random_table_id in out \ No newline at end of file From a8add72eac585cebee796f8135dc6a88129d5ae6 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Tue, 20 Dec 2022 17:56:40 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20po?= =?UTF-8?q?st-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- samples/snippets/nested_repeated_schema.py | 3 ++- samples/snippets/nested_repeated_schema_test.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/samples/snippets/nested_repeated_schema.py b/samples/snippets/nested_repeated_schema.py index b00873dfe..5d55860cc 100644 --- a/samples/snippets/nested_repeated_schema.py +++ b/samples/snippets/nested_repeated_schema.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + def nested_schema(table_id: str) -> None: orig_table_id = table_id # [START bigquery_nested_repeated_schema] @@ -50,4 +51,4 @@ def nested_schema(table_id: str) -> None: table = client.create_table(table) # API request print(f"Created table {table.project}.{table.dataset_id}.{table.table_id}.") - # [END bigquery_nested_repeated_schema] \ No newline at end of file + # [END bigquery_nested_repeated_schema] diff --git a/samples/snippets/nested_repeated_schema_test.py b/samples/snippets/nested_repeated_schema_test.py index 299274966..0386fc8fb 100644 --- a/samples/snippets/nested_repeated_schema_test.py +++ b/samples/snippets/nested_repeated_schema_test.py @@ -19,6 +19,7 @@ if typing.TYPE_CHECKING: import pytest + def test_create_table( capsys: "pytest.CaptureFixture[str]", random_table_id: str, @@ -28,4 +29,4 @@ def test_create_table( out, _ = capsys.readouterr() assert "Created" in out - assert random_table_id in out \ No newline at end of file + assert random_table_id in out From fed8bed5ff2a980fc7d16be073bd1e3d09976bd7 Mon Sep 17 00:00:00 2001 From: Mario Torres Jr Date: Tue, 20 Dec 2022 11:58:01 -0600 Subject: [PATCH 3/3] added TODO --- docs/snippets.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/snippets.py b/docs/snippets.py index 05e4fa378..b9860e4da 100644 --- a/docs/snippets.py +++ b/docs/snippets.py @@ -118,6 +118,8 @@ def test_create_client_default_credentials(): assert client is not None +# TODO(Mattix23): After code sample from https://github.com/googleapis/python-bigquery/pull/1446 +# is updated from cloud.google.com delete this. def test_create_table_nested_repeated_schema(client, to_delete): dataset_id = "create_table_nested_repeated_{}".format(_millis()) project = client.project