このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開

テーブルおよびエンティティのクエリ

更新日: 2014年8月

テーブル サービスでテーブルおよびエンティティをクエリするには、要求 URI を慎重に作成する必要があります。以下のセクションでは、クエリのオプションについて説明し、一般的な例を示します。

特定のストレージ アカウントのすべてのテーブルを取得するには、Query Tables 操作で説明されているように、テーブル リソースに対して GET 操作を実行します。テーブル リソースのアドレスを指定する基本的な URI は次のようになります。

https://myaccount.table.core.windows.net/Tables

単一の名前付きテーブルを取得するには、テーブルを次のように指定します。

https://myaccount.table.core.windows.net/Tables('MyTable')

テーブル内のすべてのエンティティを取得するには、URI にテーブル リソースを含めないでテーブル名を指定します。

https://myaccount.table.core.windows.net/MyTable()

クエリ結果は PartitionKey 順、RowKey 順に並べ替えられます。結果のその他の並べ替え方法は現在サポートされていません。

次のセクション、「サポートされるクエリ オプション」の説明に従い、その他のオプションを指定して、取得するテーブルまたはエンティティを制限できます。

noteメモ
クエリがエンティティの最大数を超えた場合、タイムアウト間隔を超えた場合、またはパーティションの境界を超えた場合には、1 つの要求で返されるエンティティ数が制限されることがあります。詳細については、「クエリのタイムアウトと改ページ」を参照してください。

テーブル サービスは、次のクエリ オプションをサポートします。これらは、「OData プロトコル仕様」に準拠しています。これらのオプションを使用して、クエリで取得するテーブル、エンティティ、またはエンティティ プロパティを制限できます。

 

システム クエリ オプション 説明

$filter

指定したフィルターを満たしたテーブルまたはエンティティのみを返します。

$filter 文字列で許可される比較は 15 件までです。

$top

結果セットから最初の n 個のテーブルまたはエンティティのみを返します。

$select

結果セットからエンティティの目的のプロパティを返します。このクエリ オプションは、バージョン 2011-08-18 以上を使用する要求に対してのみサポートされます。詳細については、「テーブル サービスに対する LINQ クエリの作成」を参照してください。

noteメモ
OData で定義されているその他のクエリ オプションは、テーブル サービスでサポートされていません。

$filter 句内で比較演算子を使用して、クエリ結果をフィルター処理する条件を指定できます。

すべてのプロパティ型で次の比較演算子がサポートされています。

 

演算子 URI 表現

Equal

eq

GreaterThan

gt

GreaterThanOrEqual

ge

LessThan

lt

LessThanOrEqual

le

NotEqual

ne

また、ブール型プロパティでは次の演算子がサポートされています。

 

演算子 URI 表現

And

and

Not

not

Or

or

フィルター構文の詳細については、「OData プロトコル仕様」を参照してください。

次の文字は、クエリ文字列に使用する場合にはエンコードする必要があります。

  • スラッシュ (/)

  • 疑問符 (?)

  • コロン (:)

  • アットマーク (@)

  • アンパサンド (&)

  • 等号 (=)

  • プラス記号 (+)

  • コンマ (,)

  • ドル記号 ($)

次の例は、REST 構文を使用して一般的なエンティティ クエリの要求 URI を作成する方法を示しています。同じクエリを LINQ 構文で作成することもできます。詳細については、「テーブル サービスに対する LINQ クエリの作成」を参照してください。

$top オプションおよび $filter オプションは、String 型のプロパティでフィルター処理する構文例を使用して、テーブル名のフィルター処理にも利用できます。

クエリの最初の n 件のエンティティを取得するには、$top クエリ オプションを指定します。次の例は、Customers という名前のテーブルから最初の 10 件のエンティティを返します。

https://myaccount.table.core.windows.net/Customers()?$top=10

PartitionKey プロパティおよび RowKey プロパティはエンティティのプライマリ キーを構成するため、次のような特殊な構文でエンティティを識別できます。

https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')

または、次のセクションで示すように、これらのプロパティを $filter オプションの一部として指定することもできます。

キーのプロパティ名と定数値は大文字と小文字が区別されます。PartitionKey プロパティと RowKey プロパティは String 型です。

フィルター文字列を作成するときは、次の規則に注意してください。

  • プロパティと値を比較するには、「OData プロトコル仕様」で定義された論理演算子を使用します。プロパティを動的な値と比較することはできません。式の 1 つの辺は定数である必要があります。

  • プロパティ名、演算子、および定数値は URL エンコードされたスペースで区切る必要があります。スペースの URL エンコードは %20 です。

  • フィルター文字列のすべての部分で大文字と小文字が区別されます。

  • フィルターが有効な結果を返すようにするには、定数値のデータ型をプロパティと同じデータ型にする必要があります。サポートされているプロパティ型の詳細については、「テーブル サービス データ モデルについて」を参照してください。

noteメモ
プロパティの型を文字列以外として扱う前に、プロパティが明示的に型指定されていることを確認してください。プロパティを明示的に型指定すると、エンティティを返すときの応答内にその型が示されます。明示的に型指定しない場合、プロパティは String 型になり、エンティティを返すときの応答内に型が示されません。

文字列プロパティをフィルター処理する場合は、文字列定数を単一引用符で囲みます。

次の例では、PartitionKey プロパティおよび RowKey プロパティをフィルター処理しています。キー以外のプロパティをクエリ文字列に追加することもできます。

https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'

次の例では、FirstName プロパティおよび LastName プロパティをフィルター処理しています。

https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'

テーブル サービスではワイルドカードによるクエリはサポートされていません。ただし、目的のプレフィックスに対して比較演算子を使用することで、プレフィックス一致を実行できます。次の例は、文字 'A' で始まる LastName プロパティを持つエンティティを返します。

https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'

整数または浮動小数点数をフィルター処理するには、引用符なしで URI の定数値を指定します。

次の例は、値が 30 より大きい Age プロパティを持つすべてのエンティティを返します。

https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030

次の例は、値が 100.25 以下の AmountDue プロパティを持つすべてのエンティティを返します。

https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20

ブール値をフィルター処理するには、引用符なしで true または false を指定します。

次の例は、IsActive プロパティが true に設定されているすべてのエンティティを返します。

https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true

DateTime 値をフィルター処理するには、URI に datetime キーワードを指定し、その後に単一引用符で囲んだ日付/時刻の定数を指定します。日付/時刻の定数は、結合 UTC 形式にする必要があります。詳細については、「DateTime プロパティ値の書式設定」を参照してください。

次の例は、CustomerSince プロパティが 2008 年 7 月 10 日と等しいエンティティを返します。

https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'

GUID 値をフィルター処理するには、URI に guid キーワードを指定し、その後に単一引用符で囲んだ GUID 定数を指定します。

次の例は、GuidValue プロパティが次の値に等しいエンティティを返します。

https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'

関連項目

表示:
© 2015 Microsoft