Skip to content

Commit

Permalink
Merge pull request #78 from GoogleCloudPlatform/getting-started
Browse files Browse the repository at this point in the history
Move bigquery 'getting started' sample into github.
  • Loading branch information
jerjou committed Sep 8, 2015
2 parents 89880d7 + ab2c5e0 commit 98dd920
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 1 deletion.
66 changes: 66 additions & 0 deletions bigquery/samples/getting_started.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/usr/bin/env python

# Copyright 2015, Google, Inc.
# 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.

"""Sample for making BigQuery queries using the python sdk.
This is a command-line script that queries a public shakespeare dataset, and
displays the 10 of Shakespeare's works with the greatest number of distinct
words.
"""
# [START all]
from apiclient.discovery import build
from apiclient.errors import HttpError

from oauth2client.client import GoogleCredentials


def main(project_id):
# [START build_service]
# Grab the application's default credentials from the environment.
credentials = GoogleCredentials.get_application_default()
# Construct the service object for interacting with the BigQuery API.
bigquery_service = build('bigquery', 'v2', credentials=credentials)
# [END build_service]

try:
# [START run_query]
query_request = bigquery_service.jobs()
query_data = {
'query': ('SELECT TOP(corpus, 10) as title, '
'COUNT(*) as unique_words '
'FROM [publicdata:samples.shakespeare];')
}

query_response = query_request.query(
projectId=project_id,
body=query_data).execute()
# [END run_query]

# [START print_results]
print('Query Results:')
for row in query_response['rows']:
print('\t'.join(field['v'] for field in row['f']))
# [END print_results]

except HttpError as err:
print('Error: {}'.format(err.content))
raise err


if __name__ == '__main__':
# The id of the project to run queries under.
project_id = input("Enter the project ID: ")
main(project_id)
# [END all]
2 changes: 1 addition & 1 deletion bigquery/samples/list_datasets_projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def list_projects(service):

def main(project_id):
credentials = GoogleCredentials.get_application_default()
# Construct the service object for the interacting with the BigQuery API.
# Construct the service object for interacting with the BigQuery API.
service = discovery.build('bigquery', 'v2', credentials=credentials)

list_datasets(service, project_id)
Expand Down
32 changes: 32 additions & 0 deletions bigquery/tests/test_getting_started.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Copyright 2015, Google, Inc.
# 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 re
import unittest

from bigquery.samples import getting_started

import tests


class TestGettingStarted(tests.CloudBaseTest):
def test_main(self):
with tests.capture_stdout() as mock_stdout:
getting_started.main(self.constants['projectId'])
stdout = mock_stdout.getvalue()
self.assertRegexpMatches(stdout, re.compile(
r'Query Results:.hamlet', re.DOTALL))


if __name__ == '__main__':
unittest.main()

0 comments on commit 98dd920

Please sign in to comment.