Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 1.8k
Flesh out bigquery API#1045
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Flesh out bigquery API #1045
Changes from all commits
58ae075f46de66e427864f3089d5853d1f9e40949242b5e2653145078b4d6f39a738712cd2cd234a747cFile filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -190,6 +190,29 @@ def location(self, value): | ||
| raise ValueError("Pass a string, or None") | ||
| self._properties['location'] = value | ||
| @classmethod | ||
| def from_api_repr(cls, resource, client): | ||
| """Factory: construct a dataset given its API representation | ||
| :type resource: dict | ||
| :param resource: dataset resource representation returned from the API | ||
| :type client: :class:`gcloud.bigquery.client.Client` | ||
| :param client: Client which holds credentials and project | ||
| configuration for the dataset. | ||
| :rtype: :class:`gcloud.bigquery.dataset.Dataset` | ||
| :returns: Dataset parsed from ``resource``. | ||
| """ | ||
| if ('datasetReference' not in resource or | ||
| 'datasetId' not in resource['datasetReference']): | ||
| raise KeyError('Resource lacks required identity information:' | ||
| '["datasetReference"]["datasetId"]') | ||
| name = resource['datasetReference']['datasetId'] | ||
This comment was marked as spam.Sorry, something went wrong. Uh oh!There was an error while loading. Please reload this page.
This comment was marked as spam.Sorry, something went wrong. Uh oh!There was an error while loading. Please reload this page.
This comment was marked as spam.Sorry, something went wrong. Uh oh!There was an error while loading. Please reload this page. | ||
| dataset = cls(name, client=client) | ||
| dataset._set_properties(resource) | ||
| return dataset | ||
| def _require_client(self, client): | ||
| """Check client or verify over-ride. | ||
| @@ -357,6 +380,43 @@ def delete(self, client=None): | ||
| client = self._require_client(client) | ||
| client.connection.api_request(method='DELETE', path=self.path) | ||
| def list_tables(self, max_results=None, page_token=None): | ||
| """List tables for the project associated with this client. | ||
| See: | ||
| https://cloud.google.com/bigquery/docs/reference/v2/tables/list | ||
This comment was marked as spam.Sorry, something went wrong. Uh oh!There was an error while loading. Please reload this page.
This comment was marked as spam.Sorry, something went wrong. Uh oh!There was an error while loading. Please reload this page. | ||
| :type max_results: int | ||
| :param max_results: maximum number of tables to return, If not | ||
| passed, defaults to a value set by the API. | ||
| :type page_token: string | ||
| :param page_token: opaque marker for the next "page" of datasets. If | ||
| not passed, the API will return the first page of | ||
| datasets. | ||
| :rtype: tuple, (list, str) | ||
| :returns: list of :class:`gcloud.bigquery.table.Table`, plus a | ||
| "next page token" string: if not None, indicates that | ||
| more tables can be retrieved with another call (pass that | ||
| value as ``page_token``). | ||
| """ | ||
| params = {} | ||
| if max_results is not None: | ||
| params['maxResults'] = max_results | ||
| if page_token is not None: | ||
| params['pageToken'] = page_token | ||
| path = '/projects/%s/datasets/%s/tables' % (self.project, self.name) | ||
| connection = self._client.connection | ||
| resp = connection.api_request(method='GET', path=path, | ||
| query_params=params) | ||
| tables = [Table.from_api_repr(resource, self) | ||
| for resource in resp['tables']] | ||
| return tables, resp.get('nextPageToken') | ||
| def table(self, name, schema=()): | ||
| """Construct a table bound to this dataset. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -298,6 +298,28 @@ def view_query(self): | ||
| """Delete SQL query defining the table as a view.""" | ||
| self._properties.pop('view', None) | ||
| @classmethod | ||
| def from_api_repr(cls, resource, dataset): | ||
| """Factory: construct a table given its API representation | ||
| :type resource: dict | ||
| :param resource: table resource representation returned from the API | ||
| :type dataset: :class:`gcloud.bigquery.dataset.Dataset` | ||
| :param dataset: The dataset containing the table. | ||
| :rtype: :class:`gcloud.bigquery.table.Table` | ||
| :returns: Table parsed from ``resource``. | ||
| """ | ||
| if ('tableReference' not in resource or | ||
| 'tableId' not in resource['tableReference']): | ||
| raise KeyError('Resource lacks required identity information:' | ||
| '["tableReference"]["tableId"]') | ||
| table_name = resource['tableReference']['tableId'] | ||
This comment was marked as spam.Sorry, something went wrong. Uh oh!There was an error while loading. Please reload this page.
This comment was marked as spam.Sorry, something went wrong. Uh oh!There was an error while loading. Please reload this page. | ||
| table = cls(table_name, dataset=dataset) | ||
| table._set_properties(resource) | ||
| return table | ||
| def _require_client(self, client): | ||
| """Check client or verify over-ride. | ||
| @@ -344,7 +366,7 @@ def _set_properties(self, api_response): | ||
| """ | ||
| self._properties.clear() | ||
| cleaned = api_response.copy() | ||
| schema = cleaned.pop('schema', {}) | ||
| schema = cleaned.pop('schema', {'fields': ()}) | ||
| self.schema = self._parse_schema_resource(schema) | ||
| if 'creationTime' in cleaned: | ||
| cleaned['creationTime'] = float(cleaned['creationTime']) | ||
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as spam.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as spam.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.