すべてのクエリは、エンティティのコレクションで始まります。 エンティティ コレクションには次のものが含まれます。
-
EntitySet リソース: Web API
EntitySetコレクションのひとつです。 - フィルターしたコレクション: 特定のレコードに対して コレクション値ナビゲーション プロパティ ごとに返される一連のエンティティ。
- 展開したコレクション値ナビゲーション プロパティ。
- 関数によって返されるコレクション。
EntitySet リソース
ご利用の環境で利用可能なすべての EntitySet リソースを見つけるには、Web API サービス ドキュメント に GET リクエストを送信します:
要求:
GET [Organization URI]/api/data/v9.2/
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
応答:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata",
"value": [
{
"name": "aadusers",
"kind": "EntitySet",
"url": "aadusers"
},
{
"name": "accountleadscollection",
"kind": "EntitySet",
"url": "accountleadscollection"
},
{
"name": "accounts",
"kind": "EntitySet",
"url": "accounts"
},
... <Truncated for brevity>
[
}
ヒント
これらの値は通常、テーブルの複数名ですが、異なる場合もあります。 この要求の結果を使用して、正しい EntitySet リソース名を使用していることを確認します。
たとえば、accounts EntitySet リソースから開始して、アカウント エンティティ型からデータを取得します。
GET [Organization URI]/api/data/v9.2/accounts
フィルターしたコレクション
コレクション値のナビゲーション プロパティが表すエンティティの任意のコレクションに対して、指定されたレコードをクエリできます。 たとえば、特定のユーザーが OwningUser であるアカウント エンティティ型からデータを取得する場合は、指定した user_accounts レコードからコレクション値ナビゲーション プロパティ使用します。
GET [Organization URI]/api/data/v9.2/systemusers(<systemuserid value>)/user_accounts?$select=name
コレクション値ナビゲーション プロパティの名前を検索するには:
- Dataverse テーブルとリレーションシップについては、 Web API Entity Type Referenceを確認します。
- カスタム テーブルまたはリレーションシップについては、$metadata サービス ドキュメント内でコレクション値ナビゲーション プロパティを探します。
データの取得
コレクションからデータを取得するには、 GET 要求をコレクション リソースに送信します。 次の例では、アカウント エンティティ タイプからデータを取得しています。
この例では、次のことも示しています:
-
$selectを使用して返される列を制限する。 列の選択について詳しくは、こちらをご覧ください。 -
$orderbyを使用して結果を並べ替えます。 列の順序付けの詳細を確認します。 -
$topを使用して返される行を制限する。 行数の制限について説明します。 - 要求ヘッダーを使用して書式設定された値を表示する:
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"。 書式設定された値について学ぶ。
要求:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,statecode,statuscode&$orderby=name&$top=1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
応答:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Preference-Applied: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,statecode,statuscode)",
"value": [
{
"@odata.etag": "W/\"112430907\"",
"name": "A. Datum Corporation (sample)",
"statecode@OData.Community.Display.V1.FormattedValue": "Active",
"statecode": 0,
"statuscode@OData.Community.Display.V1.FormattedValue": "Active",
"statuscode": 1,
"accountid": "4b757ff7-9c85-ee11-8179-000d3a9933c9"
}
]
}
クエリを絞り込む
クエリを開始するテーブルを選択したら、必要なデータを取得するようにクエリを絞り込みます。 次の記事では、クエリを完了する方法について説明します。
| 記事 | タスク |
|---|---|
| 列の選択 | 返すデータの列を指定します。 |
| テーブルの結合 | 結果としてどの関連テーブルを返すかを指定します。 |
| 行を並べ替える | 返す行の並べ替え順を指定します。 |
| 行のフィルター | 返すデータの行を指定します。 |
| ページの結果 | 各リクエストで返すデータの行数を指定します。 |
| データの集計 | 返されたデータのグループ化と集計を行う方法。 |
| 行数のカウント | 返された行数を取得する方法。 |
| パフォーマンスの最適化 | パフォーマンスを最適化する方法。 |
OData クエリ オプション
これらのオプションを使用して、コレクションから返される結果を変更する。 次の表では、Dataverse Web API がサポートする OData クエリ オプションについて説明します。
| 回答内容 | 用途 | 詳細情報 |
|---|---|---|
$select |
エンティティや複合型ごとに特定のプロパティ セットを要求します。 | 列の選択 |
$expand |
取得したリソースに合わせて、含める関連リソースを指定します。 | テーブルの結合 |
$orderby |
特定の順序でリソースを要求します。 | 行を並べ替える |
$filter |
リソースのコレクションをフィルターします。 | 行のフィルター |
$apply |
データを集約し、グループ化します。 | データの集計 |
$top |
結果に含めるクエリ対象コレクション内の項目の数を指定します。 | 行数の制限 |
$count |
応答に含める一致するリソースの数を要求します。 | 行数のカウント |
複数のオプションを適用するためには、クエリ オプションとリソース パスを疑問符 (?) で区切ります。 最初の後の各オプションはアンパサンド (&) で区切ります。 オプション名は大文字と小文字が区別されます。
クエリ オプションを持つパラメーター エイリアスを使用します
次のパラメーター エイリアスを、$expand オプション内ではなく、$filter と $orderby クエリ オプションで使用できます。 パラメーターのエイリアスを使用すると、要求の中で同じ値を複数回使用することができます。 エイリアスに割り当てられた値がない場合は null になります。
パラメーター エイリアスなし:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,revenue
&$orderby=revenue asc,name desc
&$filter=revenue ne null
パラメーター エイリアスあり:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,revenue
&$orderby=@p1 asc,@p2 desc
&$filter=@p1 ne @p3&@p1=revenue&@p2=name
また、関数を使用するとき、パラメーター エイリアスを使用することもできます。 Web API 機能の使用方法を説明します
サポートされていない OData クエリ オプション
Dataverse Web API では、、$skip、$searchの $formatはサポートされていません。
URL 長さ制限
GET 要求内の URL の長さは 32 KB (32,768 文字) に制限されています。 URL にパラメーターとして複雑な OData クエリ オプションを多数含めると、制限に達する可能性があります。 OData クエリ オプションを URL から、制限の 2 倍の長さの要求の本文に移動する方法として、$batch要求を使用して、POST操作を実行できます。
GET内で$batch要求を送信することで、最大 64 KB (65,536 文字) の長さの URL を使用できます。
Web API を使用したバッチ操作の詳細。
行数の制限
返される行数を制限するには、$topOData クエリ オプションを使用します。 この制限がない場合、Dataverse は最大 5,000 行の標準テーブル行と 500 行のエラスティック テーブル行を返します。
または、ページングを使用して返すレコードの数を指定します。 データのページを要求するときは、$top を使用しないでください。
ページングされた結果を要求する方法について説明します。
制限
OData でサポートされていない FetchXml を使用してできることがいくつかあります。
テーブルリレーションシップのない結合をすることはできません。 OData では、
$expandクエリ オプションを使用して、データ モデル内のリレーションシップの一部であるナビゲーション プロパティを使用してテーブルを結合することのみが許可されます。集計の制限事項には、 OData を使用した集計に関する次の制限事項が示されています。
テーブル間の列比較を実行します。 OData は、同じ行の列値のフィルタリングをサポートしていますが、同じテーブル内にある必要があります。
選択肢列の既定の並べ替え順序を上書きする必要はありません。 選択列を並べ替える際の既定の動作は、ローカライズされたラベル値ではなく整数値を使用します。
Late Materialize クエリ パフォーマンス最適化は使用できません。
コミュニティ ツール
メモ
Microsoft では、コミュニティによって作成されたツールはサポートされていません。 コミュニティ ツールに関する質問や問題がある場合は、ツールの発行元にお問い合わせください。
Dataverse REST Builder は、クエリの作成など、Dataverse Web API を使用して多くのことを行うのに役立つユーザー インターフェイスを提供するオープン ソース プロジェクトです。
XrmToolBoxFetchXMLBuilder は FetchXml 要求を作成およびテストするための無料のツールですが、同じデザイナー エクスペリエンスを使用して OData クエリのコードも生成します。
OData バージョン 4.0 の機能
Dataverse Web API は OData バージョン 4.0 のサービス です。 OData 4.0 の仕様のこれらのセクションでは、データの取得方法について説明しています:
- OData バージョン 4.0。 パート 1: Protocol Plus Errata 03. 11.2 データの要求
- OData バージョン 4.0。 パート 2: URL Conventions Plus Errata 03 5 クエリ オプション
この記事とこのセクションの他の記事では、Dataverse Web API が実装する 4.0 OData 仕様の部分と、それを使用して Dataverse からビジネス データを取得する方法について説明します。
メモ
OData バージョン 4.01 は最新バージョンです。 これには、バージョン 4.0 では使用できない拡張機能とより多くの機能が含まれているため、Dataverse Web API では現在使用できません。
次の手順
列を選択する方法について説明します。