Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add bigquery shakespeare example
Change-Id: I72c8daab71486d808947ddf0a5ae797e8f3bfa62
  • Loading branch information
Jon Wayne Parrott
Jon Wayne Parrott committed Dec 6, 2016
commit f678bbc49731cfd59338252cbdd2c4a101f32a0e
58 changes: 58 additions & 0 deletions bigquery/cloud-client/simple_app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/usr/bin/env python

# Copyright 2016 Google Inc. All Rights Reserved.
#
# 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
#
# http://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.

"""Simple application that performs a query with BigQuery."""
# [START all]
# [START create_client]
from google.cloud import bigquery


def query_shakespeare():
client = bigquery.Client()
# [END create_client]
# [START run_query]
query_results = client.run_sync_query("""
SELECT
APPROX_TOP_COUNT(corpus, 10) as title,
COUNT(*) as unique_words
FROM `publicdata.samples.shakespeare`;""")

# Use standard SQL syntax for queries.
# See: https://cloud.google.com/bigquery/sql-reference/
query_results.use_legacy_sql = False

query_results.run()
# [END run_query]

# [START print_results]
# Drain the query results by requesting a page at a time.
page_token = None

while True:
rows, total_rows, page_token = query_results.fetch_data(
max_results=10,
page_token=page_token)

for row in rows:
print(row)

if not page_token:
break
# [END print_results]

if __name__ == '__main__':
query_shakespeare()
# [END all]
21 changes: 21 additions & 0 deletions bigquery/cloud-client/simple_app_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright 2016 Google Inc. All Rights Reserved.
#
# 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
#
# http://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 simple_app


def test_query_shakespeare(capsys):
simple_app.query_shakespeare()
out, _ = capsys.readouterr()
assert 'Hamlet' in out

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'hamlet' is lower-case in my query output in the Java sample I'm writing.

titles:
    hamlet: 5318
    kinghenryv: 5104
    cymbeline: 4875
    troilusandcressida: 4795
    kinglear: 4784
    kingrichardiii: 4713
    2kinghenryvi: 4683
    coriolanus: 4653
    2kinghenryiv: 4605
    antonyandcleopatra: 4582
total unique words: 164656

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the heads up.