Summary of Table service functionality

The Table service REST API is compliant with the OData Protocol Specification, with some differences, as described in the following sections.

Table Service Extensions

Table Service Restrictions

Table Service Extensions

The Table service extends the functionality of OData in the following ways.

Shared Key, Shared Key Lite and Azure Active Directory Authorization

The Table service requires that each request be authorized. Shared Key, Shared Key Lite and Azure Active Directory (Azure AD) authorization are supported. Azure AD authorization is more secure and is recommended for requests made against the Table service using the REST API.

For more information about authorizing requests, see Authorize requests to Azure Storage.

Continuation Tokens for Query Pagination

A query against the Table service may return a maximum of 1,000 items at one time and may execute for a maximum of five seconds. If the result set contains more than 1,000 items, or if the query did not complete within five seconds, the response includes headers which provide the developer with continuation tokens to use in order to resume the query at the next item in the result set. Continuation token headers may be returned for a Query Tables operation or a Query Entities operation.

Note that the total time allotted to the request for scheduling and processing the query is 30 seconds, including the five seconds for query execution.

For more information about continuation tokens, see Query Timeout and Pagination.

Primary Key System Properties

Every entity in the Table service has two key properties: the PartitionKey property and the RowKey property. These properties together form the table's primary key and uniquely identify each entity in the table.

Both properties require string values. It is the developer's responsibility to provide values for these properties when a new entity is inserted, and to include them in any update or delete operation on an entity.

For more information about these required key properties, see Understanding the Table Service Data Model.

Timestamp System Property

Every entity in the Table service has a Timestamp system property. The Timestamp property is a DateTime value that is maintained on the server side to record the time an entity was last modified. The Table service uses the Timestamp property internally to provide optimistic concurrency. The value of Timestamp is a monotonically increasing value, meaning that each time the entity is modified, the value of Timestamp increases for that entity. This property should not be set on insert or update operations (the value will be ignored).

For more information about the Timestamp property, see Understanding the Table Service Data Model.

Batch Operations

The Table service supports batch transactions on entities that are in the same table and belong to the same partition group, which means they have the same PartitionKey value. This allows multiple insert, update, merge, and delete operations to be supported within a single atomic transaction. The Table service supports a subset of the functionality provided by the OData protocol.

For more information about batch operations, see Performing Entity Group Transactions.

Table Service Restrictions

The Table service has the following restrictions on functionality provided by OData.

Credentials Property

The Table service does not support using the Credentials property of the DataServiceContext class to authorize a request. Instead, you must authorize a request against the Table service by adding an Authorization header to the request. For more information, see Authorize requests to Azure Storage.

Property Types

Not all property types supported by the OData are supported by the Table service. For a list of supported property types, see Understanding the Table Service Data Model.

The Table service does not currently support links between tables. Links are associative relationships between data.

Operations on Select Properties

Projection refers to querying a subset of the properties for an entity or entities. It is analogous to selecting a subset of the columns or properties of a table when querying in LINQ. Projection reduces the amount of data that must be returned by a query by specifying that only certain properties are returned in the response. Projection is supported as part of the 2011-08-18 version of the Azure storage services. For more information, refer to Query Entities, Writing LINQ Queries Against the Table Service, and OData: Select System Query Option ($select).

LINQ Query Operators

The Table service supports using language-integrated queries (LINQ). Only these LINQ query operators are supported for use with the Table service:

  • From

  • Where

  • Take

For more information, see Query Operators Supported for the Table Service.

LINQ Comparison Operators

The Table service supports using a subset of the comparison operators provided by LINQ. For more information, see Querying Tables and Entities and Writing LINQ Queries Against the Table Service.

GetMetadataURI Method

The Table service supports the GetMetadataURI method of the DataServiceContext class, but it does not return any schema information beyond the three fixed schema properties. These properties are PartitionKey, RowKey, and Timestamp.

Payload Formats

OData supports sending payloads in JSON format. The Azure Table service supports the OData JSON format as of API version 2013-08-15, with the OData data service version set to 3.0; prior versions do not support the JSON format.

Atom payloads are supported in all versions prior to 2015-12-11. Version 2015-12-11 and newer support only JSON payloads.


JSON is the recommended payload format, and is the only format supported for versions 2015-12-11 and later.

For more information, see Payload Format for Table Service Operations and Setting the OData Data Service Version Headers.

See Also

Table Service REST API