<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="bigquery_v2.html">BigQuery API</a> . <a href="bigquery_v2.datasets.html">datasets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, datasetId, deleteContents=None)</a></code></p>
<p class="firstline">Deletes the dataset specified by the datasetId value. Before you can delete a dataset, you must delete all its tables, either manually or by specifying deleteContents. Immediately after deletion, you can create another dataset with the same name.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, datasetId)</a></code></p>
<p class="firstline">Returns the dataset specified by datasetID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(projectId, body)</a></code></p>
<p class="firstline">Creates a new empty dataset.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, all=None, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists all datasets in the specified project to which you have been granted the READER dataset role.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(projectId, datasetId, body)</a></code></p>
<p class="firstline">Updates information in an existing dataset. The update method replaces the entire dataset resource, whereas the patch method only replaces fields that are provided in the submitted dataset resource. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(projectId, datasetId, body)</a></code></p>
<p class="firstline">Updates information in an existing dataset. The update method replaces the entire dataset resource, whereas the patch method only replaces fields that are provided in the submitted dataset resource.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(projectId, datasetId, deleteContents=None)</code>
  <pre>Deletes the dataset specified by the datasetId value. Before you can delete a dataset, you must delete all its tables, either manually or by specifying deleteContents. Immediately after deletion, you can create another dataset with the same name.

Args:
  projectId: string, Project ID of the dataset being deleted (required)
  datasetId: string, Dataset ID of dataset being deleted (required)
  deleteContents: boolean, If True, delete all the tables in the dataset. If False and the dataset contains tables, the request will fail. Default is False
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, datasetId)</code>
  <pre>Returns the dataset specified by datasetID.

Args:
  projectId: string, Project ID of the requested dataset (required)
  datasetId: string, Dataset ID of the requested dataset (required)

Returns:
  An object of the form:

    {
      "kind": "bigquery#dataset", # [Output-only] The resource type.
      "description": "A String", # [Optional] A user-friendly description of the dataset.
      "datasetReference": { # [Required] A reference that identifies the dataset.
        "projectId": "A String", # [Optional] The ID of the project containing this dataset.
        "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
      },
      "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
      "access": [ # [Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;
        {
          "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
          "userByEmail": "A String", # [Pick one] An email address of a user to grant access to. For example: fred@example.com.
          "specialGroup": "A String", # [Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
          "groupByEmail": "A String", # [Pick one] An email address of a Google Group to grant access to.
          "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER, WRITER, OWNER.
          "view": { # [Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation.
            "projectId": "A String", # [Required] The ID of the project containing this table.
            "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            "datasetId": "A String", # [Required] The ID of the dataset containing this table.
          },
        },
      ],
      "defaultTableExpirationMs": "A String", # [Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property.
      "etag": "A String", # [Output-only] A hash of the resource.
      "location": "A String", # [Experimental] The geographic location where the dataset should reside. Possible values include EU and US. The default value is US.
      "friendlyName": "A String", # [Optional] A descriptive name for the dataset.
      "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
      "id": "A String", # [Output-only] The fully-qualified unique name of the dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
      "selfLink": "A String", # [Output-only] A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(projectId, body)</code>
  <pre>Creates a new empty dataset.

Args:
  projectId: string, Project ID of the new dataset (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "kind": "bigquery#dataset", # [Output-only] The resource type.
    "description": "A String", # [Optional] A user-friendly description of the dataset.
    "datasetReference": { # [Required] A reference that identifies the dataset.
      "projectId": "A String", # [Optional] The ID of the project containing this dataset.
      "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
    },
    "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
    "access": [ # [Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;
      {
        "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
        "userByEmail": "A String", # [Pick one] An email address of a user to grant access to. For example: fred@example.com.
        "specialGroup": "A String", # [Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
        "groupByEmail": "A String", # [Pick one] An email address of a Google Group to grant access to.
        "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER, WRITER, OWNER.
        "view": { # [Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation.
          "projectId": "A String", # [Required] The ID of the project containing this table.
          "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          "datasetId": "A String", # [Required] The ID of the dataset containing this table.
        },
      },
    ],
    "defaultTableExpirationMs": "A String", # [Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property.
    "etag": "A String", # [Output-only] A hash of the resource.
    "location": "A String", # [Experimental] The geographic location where the dataset should reside. Possible values include EU and US. The default value is US.
    "friendlyName": "A String", # [Optional] A descriptive name for the dataset.
    "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
    "id": "A String", # [Output-only] The fully-qualified unique name of the dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
    "selfLink": "A String", # [Output-only] A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.
  }


Returns:
  An object of the form:

    {
      "kind": "bigquery#dataset", # [Output-only] The resource type.
      "description": "A String", # [Optional] A user-friendly description of the dataset.
      "datasetReference": { # [Required] A reference that identifies the dataset.
        "projectId": "A String", # [Optional] The ID of the project containing this dataset.
        "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
      },
      "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
      "access": [ # [Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;
        {
          "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
          "userByEmail": "A String", # [Pick one] An email address of a user to grant access to. For example: fred@example.com.
          "specialGroup": "A String", # [Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
          "groupByEmail": "A String", # [Pick one] An email address of a Google Group to grant access to.
          "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER, WRITER, OWNER.
          "view": { # [Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation.
            "projectId": "A String", # [Required] The ID of the project containing this table.
            "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            "datasetId": "A String", # [Required] The ID of the dataset containing this table.
          },
        },
      ],
      "defaultTableExpirationMs": "A String", # [Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property.
      "etag": "A String", # [Output-only] A hash of the resource.
      "location": "A String", # [Experimental] The geographic location where the dataset should reside. Possible values include EU and US. The default value is US.
      "friendlyName": "A String", # [Optional] A descriptive name for the dataset.
      "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
      "id": "A String", # [Output-only] The fully-qualified unique name of the dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
      "selfLink": "A String", # [Output-only] A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, all=None, pageToken=None, maxResults=None)</code>
  <pre>Lists all datasets in the specified project to which you have been granted the READER dataset role.

Args:
  projectId: string, Project ID of the datasets to be listed (required)
  all: boolean, Whether to list all datasets, including hidden ones
  pageToken: string, Page token, returned by a previous call, to request the next page of results
  maxResults: integer, The maximum number of results to return

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # A token that can be used to request the next results page. This property is omitted on the final results page.
    "kind": "bigquery#datasetList", # The list type. This property always returns the value "bigquery#datasetList".
    "datasets": [ # An array of the dataset resources in the project. Each resource contains basic information. For full information about a particular dataset resource, use the Datasets: get method. This property is omitted when there are no datasets in the project.
      {
        "friendlyName": "A String", # A descriptive name for the dataset, if one exists.
        "kind": "bigquery#dataset", # The resource type. This property always returns the value "bigquery#dataset".
        "id": "A String", # The fully-qualified, unique, opaque ID of the dataset.
        "datasetReference": { # The dataset reference. Use this property to access specific parts of the dataset's ID, such as project ID or dataset ID.
          "projectId": "A String", # [Optional] The ID of the project containing this dataset.
          "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        },
      },
    ],
    "etag": "A String", # A hash value of the results page. You can use this property to determine if the page has changed since the last request.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(projectId, datasetId, body)</code>
  <pre>Updates information in an existing dataset. The update method replaces the entire dataset resource, whereas the patch method only replaces fields that are provided in the submitted dataset resource. This method supports patch semantics.

Args:
  projectId: string, Project ID of the dataset being updated (required)
  datasetId: string, Dataset ID of the dataset being updated (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "kind": "bigquery#dataset", # [Output-only] The resource type.
    "description": "A String", # [Optional] A user-friendly description of the dataset.
    "datasetReference": { # [Required] A reference that identifies the dataset.
      "projectId": "A String", # [Optional] The ID of the project containing this dataset.
      "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
    },
    "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
    "access": [ # [Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;
      {
        "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
        "userByEmail": "A String", # [Pick one] An email address of a user to grant access to. For example: fred@example.com.
        "specialGroup": "A String", # [Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
        "groupByEmail": "A String", # [Pick one] An email address of a Google Group to grant access to.
        "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER, WRITER, OWNER.
        "view": { # [Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation.
          "projectId": "A String", # [Required] The ID of the project containing this table.
          "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          "datasetId": "A String", # [Required] The ID of the dataset containing this table.
        },
      },
    ],
    "defaultTableExpirationMs": "A String", # [Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property.
    "etag": "A String", # [Output-only] A hash of the resource.
    "location": "A String", # [Experimental] The geographic location where the dataset should reside. Possible values include EU and US. The default value is US.
    "friendlyName": "A String", # [Optional] A descriptive name for the dataset.
    "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
    "id": "A String", # [Output-only] The fully-qualified unique name of the dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
    "selfLink": "A String", # [Output-only] A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.
  }


Returns:
  An object of the form:

    {
      "kind": "bigquery#dataset", # [Output-only] The resource type.
      "description": "A String", # [Optional] A user-friendly description of the dataset.
      "datasetReference": { # [Required] A reference that identifies the dataset.
        "projectId": "A String", # [Optional] The ID of the project containing this dataset.
        "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
      },
      "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
      "access": [ # [Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;
        {
          "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
          "userByEmail": "A String", # [Pick one] An email address of a user to grant access to. For example: fred@example.com.
          "specialGroup": "A String", # [Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
          "groupByEmail": "A String", # [Pick one] An email address of a Google Group to grant access to.
          "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER, WRITER, OWNER.
          "view": { # [Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation.
            "projectId": "A String", # [Required] The ID of the project containing this table.
            "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            "datasetId": "A String", # [Required] The ID of the dataset containing this table.
          },
        },
      ],
      "defaultTableExpirationMs": "A String", # [Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property.
      "etag": "A String", # [Output-only] A hash of the resource.
      "location": "A String", # [Experimental] The geographic location where the dataset should reside. Possible values include EU and US. The default value is US.
      "friendlyName": "A String", # [Optional] A descriptive name for the dataset.
      "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
      "id": "A String", # [Output-only] The fully-qualified unique name of the dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
      "selfLink": "A String", # [Output-only] A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(projectId, datasetId, body)</code>
  <pre>Updates information in an existing dataset. The update method replaces the entire dataset resource, whereas the patch method only replaces fields that are provided in the submitted dataset resource.

Args:
  projectId: string, Project ID of the dataset being updated (required)
  datasetId: string, Dataset ID of the dataset being updated (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "kind": "bigquery#dataset", # [Output-only] The resource type.
    "description": "A String", # [Optional] A user-friendly description of the dataset.
    "datasetReference": { # [Required] A reference that identifies the dataset.
      "projectId": "A String", # [Optional] The ID of the project containing this dataset.
      "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
    },
    "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
    "access": [ # [Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;
      {
        "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
        "userByEmail": "A String", # [Pick one] An email address of a user to grant access to. For example: fred@example.com.
        "specialGroup": "A String", # [Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
        "groupByEmail": "A String", # [Pick one] An email address of a Google Group to grant access to.
        "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER, WRITER, OWNER.
        "view": { # [Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation.
          "projectId": "A String", # [Required] The ID of the project containing this table.
          "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          "datasetId": "A String", # [Required] The ID of the dataset containing this table.
        },
      },
    ],
    "defaultTableExpirationMs": "A String", # [Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property.
    "etag": "A String", # [Output-only] A hash of the resource.
    "location": "A String", # [Experimental] The geographic location where the dataset should reside. Possible values include EU and US. The default value is US.
    "friendlyName": "A String", # [Optional] A descriptive name for the dataset.
    "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
    "id": "A String", # [Output-only] The fully-qualified unique name of the dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
    "selfLink": "A String", # [Output-only] A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.
  }


Returns:
  An object of the form:

    {
      "kind": "bigquery#dataset", # [Output-only] The resource type.
      "description": "A String", # [Optional] A user-friendly description of the dataset.
      "datasetReference": { # [Required] A reference that identifies the dataset.
        "projectId": "A String", # [Optional] The ID of the project containing this dataset.
        "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
      },
      "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
      "access": [ # [Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;
        {
          "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
          "userByEmail": "A String", # [Pick one] An email address of a user to grant access to. For example: fred@example.com.
          "specialGroup": "A String", # [Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
          "groupByEmail": "A String", # [Pick one] An email address of a Google Group to grant access to.
          "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER, WRITER, OWNER.
          "view": { # [Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation.
            "projectId": "A String", # [Required] The ID of the project containing this table.
            "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            "datasetId": "A String", # [Required] The ID of the dataset containing this table.
          },
        },
      ],
      "defaultTableExpirationMs": "A String", # [Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property.
      "etag": "A String", # [Output-only] A hash of the resource.
      "location": "A String", # [Experimental] The geographic location where the dataset should reside. Possible values include EU and US. The default value is US.
      "friendlyName": "A String", # [Optional] A descriptive name for the dataset.
      "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
      "id": "A String", # [Output-only] The fully-qualified unique name of the dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
      "selfLink": "A String", # [Output-only] A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.
    }</pre>
</div>

</body></html>