OData の機能

再フォーマットされた結果

TDV のデフォルトでは、データベース データ サービスとしてパブリッシュされているすべてのリソースは、XML ベースの Atom 形式で OData を介して利用できます。クライアント インターフェイス (データを要求するアプリケーション) は、クライアント インターフェイス定義で $format=json (デフォルトの $format=atom の代わりに) を使用して、Atom の結果を JSON に再フォーマットするように OData に指示できます。たとえば次のようになります。

http://services.odata.org/OData/OData.svc/ds_orders?$format=json

JSON 応答のみが必要なクライアントは、ヘッダーを次のようなものに設定する可能性があります。

GET /OData/OData.svc/ds_orders HTTP/1.1 host: services.odata.org accept: application/json

クライアント アプリケーションは、特定のコンテンツ タイプのみをサポートするか、すべてのコンテンツ タイプをサポートするかを選択できます。すべてのコンテンツ タイプを受け入れる場合、ヘッダーは次のようになります。

GET /OData/OData.svc/ds_orders HTTP/1.1 host: services.odata.org

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

データが返される前に、OData サーバー側で非修飾レコードを除外するオプションを使用できます。これにより、TDV 側で SQL WHERE 句を使用してフィルターを適用する場合と比較して、転送されるデータの量を大幅に削減し、パフォーマンスを向上させることができます。

Expand オプション

expand オプションを使用すると、レコードを取得し、関連するオブジェクトを含めることができます。次はその例です。

http://services.odata.org/OData/OData.svc/ds_orders/?$expand=orders

製品のエンティティー セット内のエンティティーごとに、関連するすべてのオーダーの値がインラインで表されます。

対応する TDV SQL クエリは次のようになります。

SELECT * from /shared/OData/ODataDemo/DemoService/Products ('?$expand=orders') 

Filter オプション

filter オプションを使用すると、特定の条件を満たすレコードのみを取得できます。次はその例です。

http://services.odata.org/OData/OData.svc/ds_orders/?$filter=orderid gt 1000

このリクエストはクエリに使用され、orderid 値が 1000 より大きいレコードのみを返します。

対応する TDV SQL クエリは次のようになります。

SELECT * from /shared/OData/ODataDemo/DemoService/Products ('$filter=orderid gt 1000') 

OrderBy オプション

orderby オプションを使用すると、返されたレコードを指定したエンティティーの値の順序で並べ替えることができます。次はその例です。

http://services.odata.org/OData/OData.svc/ds_orders/?$orderby=customerid

このリクエストは、customerid 値の順序でレコードを表示します。

対応する TDV SQL クエリは次のようになります。

SELECT * from /shared/OData/ODataDemo/DemoService/Products ('$orderby=customerid') 

Skip オプション

skip オプションを使用すると、特定の行数をスキップしてレコードを取得できます。次はその例です。

http://services.odata.org/OData/OData.svc/ds_orders/?$skip=2

このリクエストは、最初の 2行を除くすべてのレコードを返します。

対応する TDV SQL クエリは次のようになります。

SELECT * from /shared/OData/ODataDemo/OData.svc/ds_orders ('$ skip=2') 

Top オプション

top オプションを使用すると、最初の n 件のレコードを取得できます。次はその例です。

http://services.odata.org/OData/OData.svc/ds_orders/?$top=4

このリクエストは最初の 4行を返します。

対応する TDV SQL クエリは次のようになります。

SELECT * from /shared/OData/ODataDemo/DemoService/Products ('$ top=4') 

Select オプション

select オプションを使用すると、指定した名前のカラムの値を取得できます。次はその例です。

http://services.odata.org/OData/OData.svc/ds_orders/?$select=shipname

返されるすべてのレコードには、shipname という名前のカラムの値のみが表示されます。他のカラムには [NULL] が表示されます。

対応する TDV SQL クエリは次のようになります。

SELECT * from /shared/OData/ODataDemo/DemoService/Products (' ?$select=shipname') 

Apply オプション

GROUP BY は、システム クエリ オプションの $apply を介して OData でサポートされています。このクエリ オプションは、OData 4 でのみサポートされています。

$apply オプションは、次の変換をサポートしています。

aggregate
groupby
compute
filter

以下はその例です。

http://localhost:9400/odata4/webservices/soap_test/view_test/CompositeView?\$apply=groupby ( (CustomerContactLastName) ) 

オプションの組み合わせ

システム クエリ オプションの間にアンパサンド (&) を挟むことで、各オプションを連結できます。次はその例です。

http://services.odata.org/OData/OData.svc/ds_orders/?$filter=orderid gt 1000&$top=2

このリクエストは、orderid が 1000 より大きい最初の 2行を返します。

対応する TDV SQL クエリは次のようになります。

SELECT * from /shared/OData/ODataDemo/DemoService/Products (' ?$filter=orderid gt 1000&$top=2 ')