-
Notifications
You must be signed in to change notification settings - Fork 306
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: created samples for load table and create table from schema file (
#1436) * docs: created samples for load table and create table from schema file * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Apply suggestions from code review Co-authored-by: Tim Swast <[email protected]> * Update samples/snippets/create_table_schema_from_json.py Co-authored-by: Tim Swast <[email protected]> Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Tim Swast <[email protected]>
- Loading branch information
1 parent
89f8e9b
commit 8ad2e5b
Showing
11 changed files
with
201 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# 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 pathlib | ||
|
||
|
||
def create_table(table_id: str) -> None: | ||
orig_table_id = table_id | ||
current_directory = pathlib.Path(__file__).parent | ||
orig_schema_path = str(current_directory / "schema.json") | ||
# [START bigquery_schema_file_create] | ||
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" | ||
# TODO(dev): Change schema_path variable to the path of your schema file. | ||
schema_path = "path/to/schema.json" | ||
# [END bigquery_schema_file_create] | ||
table_id = orig_table_id | ||
schema_path = orig_schema_path | ||
|
||
# [START bigquery_schema_file_create] | ||
# To load a schema file use the schema_from_json method. | ||
schema = client.schema_from_json(schema_path) | ||
|
||
table = bigquery.Table(table_id, schema=schema) | ||
table = client.create_table(table) # API request | ||
print(f"Created table {table_id}.") | ||
# [END bigquery_schema_file_create] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# 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 create_table_schema_from_json | ||
|
||
if typing.TYPE_CHECKING: | ||
import pytest | ||
|
||
|
||
def test_create_table( | ||
capsys: "pytest.CaptureFixture[str]", | ||
random_table_id: str, | ||
) -> None: | ||
|
||
create_table_schema_from_json.create_table(random_table_id) | ||
|
||
out, _ = capsys.readouterr() | ||
assert "Created" in out | ||
assert random_table_id in out |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# 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 pathlib | ||
|
||
|
||
def load_table(table_id: str) -> None: | ||
orig_uri = "gs://cloud-samples-data/bigquery/us-states/us-states.csv" | ||
orig_table_id = table_id | ||
current_directory = pathlib.Path(__file__).parent | ||
orig_schema_path = str(current_directory / "schema_us_states.json") | ||
# [START bigquery_schema_file_load] | ||
from google.cloud import bigquery | ||
|
||
client = bigquery.Client() | ||
|
||
# TODO(dev): Change uri variable to the path of your data file. | ||
uri = "gs://your-bucket/path/to/your-file.csv" | ||
# TODO(dev): Change table_id to the full name of the table you want to create. | ||
table_id = "your-project.your_dataset.your_table" | ||
# TODO(dev): Change schema_path variable to the path of your schema file. | ||
schema_path = "path/to/schema.json" | ||
# [END bigquery_schema_file_load] | ||
uri = orig_uri | ||
table_id = orig_table_id | ||
schema_path = orig_schema_path | ||
# [START bigquery_schema_file_load] | ||
# To load a schema file use the schema_from_json method. | ||
schema = client.schema_from_json(schema_path) | ||
|
||
job_config = bigquery.LoadJobConfig( | ||
# To use the schema you loaded pass it into the | ||
# LoadJobConfig constructor. | ||
schema=schema, | ||
skip_leading_rows=1, | ||
) | ||
|
||
# Pass the job_config object to the load_table_from_file, | ||
# load_table_from_json, or load_table_from_uri method | ||
# to use the schema on a new table. | ||
load_job = client.load_table_from_uri( | ||
uri, table_id, job_config=job_config | ||
) # Make an API request. | ||
|
||
load_job.result() # Waits for the job to complete. | ||
|
||
destination_table = client.get_table(table_id) # Make an API request. | ||
print(f"Loaded {destination_table.num_rows} rows to {table_id}.") | ||
# [END bigquery_schema_file_load] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# 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 load_table_schema_from_json | ||
|
||
if typing.TYPE_CHECKING: | ||
import pytest | ||
|
||
|
||
def test_load_table( | ||
capsys: "pytest.CaptureFixture[str]", | ||
random_table_id: str, | ||
) -> None: | ||
|
||
load_table_schema_from_json.load_table(random_table_id) | ||
|
||
out, _ = capsys.readouterr() | ||
assert "Loaded" in out | ||
assert random_table_id in out |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
[ | ||
{ | ||
"name": "qtr", | ||
"type": "STRING", | ||
"mode": "REQUIRED", | ||
"description": "quarter" | ||
}, | ||
{ | ||
"name": "rep", | ||
"type": "STRING", | ||
"mode": "NULLABLE", | ||
"description": "sales representative" | ||
}, | ||
{ | ||
"name": "sales", | ||
"type": "FLOAT", | ||
"mode": "NULLABLE", | ||
"defaultValueExpression": "2.55" | ||
} | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
[ | ||
{ | ||
"name": "name", | ||
"type": "STRING", | ||
"mode": "NULLABLE" | ||
}, | ||
{ | ||
"name": "post_abbr", | ||
"type": "STRING", | ||
"mode": "NULLABLE" | ||
} | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters