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 ')