エクスポート (0) 印刷
すべて展開

Query Entities

更新日: 2014年2月

Query Entities 操作は、テーブル内のエンティティをクエリします。$filter オプションと $select オプションがあります。

$select クエリ オプションを使用する要求では、バージョン 2011-08-18 以降を使用する必要があります。また、DataServiceVersion ヘッダーと MaxDataServiceVersion ヘッダーを 2.0 に設定する必要があります。Query Entities 要求の構成は次のとおりです。HTTPS が推奨されます。myaccount をストレージ アカウントの名前で、mytable をテーブルの名前でそれぞれ置き換えます。

 

メソッド 要求 URI HTTP バージョン

GET

https://myaccount.table.core.windows.net/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

https://myaccount.table.core.windows.net/mytable()?$filter=<query-expression>&$select=<comma-separated-property-names>

HTTP/1.1

クエリ対象のエンティティ セットのアドレスは、要求の URI でいくつかの形式をとります。詳細については、「テーブルおよびエンティティのクエリ」を参照してください。

エミューレートされたストレージ サービスに対する要求では、エミュレーターのホスト名とテーブル サービス ポートを 127.0.0.1:10002 と指定し、その後にエミューレートされたストレージ アカウント名を指定します。

 

メソッド 要求 URI HTTP バージョン

GET

http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

http://127.0.0.1:10002/devstoreaccount1/mytable()?$filter=<query-expression>?$select=<comma-separated-property-names>

HTTP/1.1

ストレージ エミュレーターのテーブル サービスは、Windows® Azure™ のテーブル サービスとはいくつかの点で異なります。詳細については、「About Development Storage」および「ストレージ エミュレーターと Azure ストレージ サービスとの違い」を参照してください。

Query Entities 操作は、OData プロトコル仕様で定義されているクエリ オプションをサポートしています。詳細については、「OData URI 規則」を参照してください。

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。

 

要求ヘッダー 説明

Authorization

必須。認証スキーム、アカウント名、および署名を指定します。詳細については、「Azure ストレージ サービスの認証」を参照してください。

Date またはx-ms-date

必須。要求の世界協定時刻 (UTC) を指定します。詳細については、「Azure ストレージ サービスの認証」を参照してください。

x-ms-version

省略可能。この要求に使用する操作のバージョンを指定します。詳細については、「Azure ストレージ サービスのバージョン設定」を参照してください。

Accept

省略可能。応答ペイロードの受け入れられたコンテンツの種類を指定します。次の値をとります。

  • application/atom+xml

  • application/json;odata=nometadata

  • application/json;odata=minimalmetadata

  • application/json;odata=fullmetadata

詳細については、「テーブル サービス操作のペイロード形式」を参照してください。

x-ms-client-request-id

省略可能。Storage Analytics Logging が有効な場合に解析ログに記録される、クライアントで生成された非透過の値を 1 KB の文字制限付きで提供します。クライアント側のアクティビティとサーバーが受け取る要求を相互に関連付けるには、このヘッダーを使用することを強くお勧めします。詳細については、「Storage Analytics Logging について」および「Windows Azure のログ: ログを使用した、ストレージ要求の追跡」を参照してください。

なし。

Request Syntax:
GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  HTTP/1.1

Request Headers:
x-ms-version: 2013-08-15
x-ms-date: Mon, 25 Nov 2013 15:25:14 GMT
Authorization: SharedKeyLite myaccount:<some key>
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

応答には、HTTP 状態コード、一連の応答ヘッダー、および応答本文が含まれています。

操作が正常に終了すると、ステータス コード 200 (OK) が返されます。

ステータス コードの詳細については、「ステータス コードとエラー コード」および「テーブル サービスのエラー コード」を参照してください。

この操作の応答には、次のヘッダーが含まれています。応答に追加の標準 HTTP ヘッダーが含まれる場合もあります。標準ヘッダーはすべて、HTTP/1.1 プロトコル仕様に準拠しています。

 

応答ヘッダー 説明

x-ms-continuation-NextPartitionKey

x-ms-continuation-NextRowKey

返されるエンティティの数が 1,000 個を超える場合、サーバーのタイムアウト間隔が経過した場合、またはクエリがパーティション境界を超えた場合、応答ヘッダーには x-ms-continuation-NextPartitionKey 継続ヘッダーと x-ms-continuation-NextRowKey 継続ヘッダーが含まれます。

継続トークンの使用方法の詳細については、「クエリのタイムアウトと改ページ」を参照してください。

x-ms-request-id

このヘッダーは要求を一意に識別するので、要求のトラブルシューティングに使用できます。詳細については、「API 操作のトラブルシューティング」を参照してください。

x-ms-version

要求の実行に使用するテーブル サービスのバージョンを示します。このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。

Date

サービスによって生成される、応答の開始時刻を示す UTC 日付/時刻値。

Content-Type

ペイロードのコンテンツの種類を示します。このヘッダーの値は、Accept 要求ヘッダーの値によって異なります。次の値をとります。

  • application/atom+xml

  • application/json;odata=nometadata

  • application/json;odata=minimalmetadata

  • application/json;odata=fullmetadata

有効なコンテンツの種類の詳細については、「テーブル サービス操作のペイロード形式」を参照してください。

Response Status:
HTTP/1.1 200 OK

Response Headers:
Content-Type: application/atom+xml;charset=utf-8
x-ms-request-id: 87f178c0-44fe-4123-a4c1-96c8fa6d9654
Date: Mon, 25 Nov 2013 15:25:14 GMT
x-ms-version: 2013-08-15
Connection: close

Query Entities 操作は、要求の Accept ヘッダーに応じて、テーブル内のエンティティの一覧を OData エンティティ セット (JSON または Atom フィード) として返します。

Customers テーブルに対する Query Entities 操作の要求 URI の例を次に示します。

GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince

Atom フィードの応答本文を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="https://myaccount.table.core.windows.net">
   <id>https://myaccount.table.core.windows.net/Customers</id>
   <title type="text">Customers</title>
   <updated>2013-08-22T00:50:32Z</updated>
   <link rel="self" title="Customers" href="Customers" />
   <entry m:etag="W/&quot;0x5B168C7B6E589D2&quot;">
      <id>https://myaccount.table.core.windows.net/Customers(PartitionKey='Customer',RowKey='Name')</id>
      <category term="myaccount.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
      <link rel="edit" title="Customers" href="Customers(PartitionKey='Customer',RowKey='Name')" />
      <title />
      <updated>2013-08-22T00:50:32Z</updated>
      <author>
         <name />
      </author>
      <content type="application/xml">
         <m:properties>
            <d:PartitionKey>Customer</d:PartitionKey>
            <d:RowKey>Name</d:RowKey>
            <d:Timestamp m:type="Edm.DateTime">2013-08-22T00:20:16.3134645Z</d:Timestamp>
            <d:CustomerSince m:type="Edm.DateTime">2008-10-01T15:25:05.2852025Z</d:CustomerSince>
         </m:properties>
      </content>
   </entry>
</feed>

JSON 応答フィードは次のとおりです。

メタデータなし:

{
   "value":[
      {
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

最小のメタデータ:

{
   "odata.metadata":"https://myaccount.table.core.windows.net/$metadata#Customers",
   "value":[
      {
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince@odata.type":"Edm.DateTime",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

完全なメタデータ:

{
   "odata.metadata":" https://myaccount.table.core.windows.net/metadata#Customers",
   "value":[
      {
         "odata.type":"myaccount.Customers",
         "odata.id":"https://myaccount.table.core.windows.net/Customers(PartitionKey=Customer',RowKey='Name')",
         "odata.etag":"W/\"0x5B168C7B6E589D2\"",
         "odata.editLink":"Customers(PartitionKey=Customer',RowKey='Name')",
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp@odata.type":"Edm.DateTime",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince@odata.type":"Edm.DateTime",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

この操作を実行できるのは、アカウント所有者と、この操作を実行するアクセス許可を持つ共有アクセス署名を使用する任意のユーザーです。

テーブル サービスに対するクエリは最長 5 秒間実行され、一度に最大 1,000 個のエンティティが返されます。返されるエンティティ数が 1,000 個を超える場合、クエリが 5 秒以内に終了しない場合、またはクエリがパーティション境界を超える場合は、継続トークンのセットを含むカスタム ヘッダーが応答に含まれます。この継続トークンを使用して、引き続き次のデータ ページを要求できます。継続トークンの詳細については、「クエリのタイムアウトと改ページ」を参照してください。

$select クエリ オプションを使用するプロジェクション要求では、バージョン 2011-08-18 以上を使用する必要があります。取得できるプロパティの最大数は 255 です。射影されたすべてのプロパティは、返されるエンティティに含まれていない場合であっても、応答本文に含まれます。たとえば、射影されたエンティティに含まれないプロパティが要求に含まれている場合、欠落しているプロパティは null 属性としてマークされます。前に示した応答例には、射影されたエンティティに含まれていない Address プロパティが含まれているため、プロパティは null です。<d:Address m:null=”true” />

クエリのスケジュール設定および処理用として要求に割り当てられる時間は、クエリの実行に要する 5 秒を含め、合計で 30 秒間です。

クエリ式の右辺は定数である必要があります。式の右辺のプロパティは参照できません。クエリ式の作成の詳細については、「テーブルおよびエンティティのクエリ」を参照してください。

クエリ式に null 値を含めることはできません。次の文字は、クエリ文字列に使用する場合にはエンコードする必要があります。

  • スラッシュ (/)

  • 疑問符 (?)

  • コロン (:)

  • アットマーク (@)

  • アンパサンド (&)

  • 等号 (=)

  • プラス記号 (+)

  • コンマ (,)

  • ドル記号 ($)

HTTP GET 要求を認証および送信できるアプリケーションは、テーブル内のエンティティを照会できます。

LINQ を使用してテーブル サービスに対して実行できるクエリ操作の詳細については、「テーブル サービスでサポートされるクエリ演算子」および「テーブル サービスに対する LINQ クエリの作成」を参照してください。

表示:
© 2014 Microsoft