Important
データのクエリを実行するときは、パフォーマンスを最適化するために返されるデータの量を制限することが重要です。 必要なデータを含む列のみを選択します。
$select
query オプションを使用して、クエリで返す列を選択します。 OData では、すべての列が プロパティとして表されます。
$select クエリ オプションを含めない場合は、すべてのプロパティが返されます。
次の例では、name EntitySet リソースの最初の行からrevenueプロパティとaccounts プロパティを要求します。
要求:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,revenue&$top=1
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#accounts(name,revenue)",
"value": [
{
"@odata.etag": "W/\"81052965\"",
"name": "Litware, Inc. (sample)",
"revenue": 20000.0000,
"_transactioncurrencyid_value": "228f42f8-e646-e111-8eb7-78e7d162ced1",
"accountid": "4624eff7-53d3-ed11-a7c7-000d3a993550"
}
]
}
主キー プロパティは常に返されるため、 $selectに含める必要はありません。 この例では、 accountid が主キーです。
その他のプロパティ値も応答に含まれる場合があります。 この場合、関連する
使用できるプロパティはどれですか?
エンティティで使用可能なすべてのプロパティは、 $metadata サービス ドキュメントにあります。 詳細情報: Web API のプロパティ
Dataverse に含まれるエンティティ型については、 Web API Entity Type Referenceで説明します。
ヒント
使用可能なプロパティをすばやく見つけ出す最も簡単な方法は、$topを使用せずに、1 クエリ オプションを使用して $select の値を持つ要求を送信することです。
書式設定された値
書式設定された値は、アプリケーションで使用できるサーバーで生成される文字列値です。 フォーマットされた値は以下の通りです。
- 選択肢、選択肢、はい/いいえ、状態、状態理由の列のローカライズされたラベル
- 参照プロパティと所有者プロパティのプライマリ名の値
- 通貨記号を含む通貨値
- ユーザーのタイムゾーンで書式設定された日付値
結果に書式設定された値を含めるには、 Prefer 要求ヘッダー を使用して odata.include-annotations 基本設定を送信します
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
書式設定された値は、要求できるいくつかの注釈の 1 つです。 すべての注釈を含めるには、 Prefer: odata.include-annotations="*" を使用します。 詳細情報: 注釈の要求
書式設定された値は、次の規則に従う注釈を持つレコードと共に返されます。
<property name>@OData.Community.Display.V1.FormattedValue
例えば次が挙げられます。
要求:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,revenue,_primarycontactid_value,customertypecode,modifiedon
&$top=1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
次の表では、要求されたプロパティに対して返される値と書式設定された値について説明します。
| プロパティ | 価値 | 書式設定された値 |
|---|---|---|
name |
Litware, Inc. (sample) |
None |
revenue |
20000.0000 |
$20,000.00 |
_primarycontactid_value |
70bf4d48-34cb-ed11-b596-0022481d68cd |
Susanna Stubberod (sample) |
customertypecode |
1 |
Competitor |
modifiedon |
2023-04-07T21:59:01Z |
4/7/2023 2:59 PM |
_transactioncurrencyid_value |
228f42f8-e646-e111-8eb7-78e7d162ced1 |
US Dollar |
accountid |
78914942-34cb-ed11-b596-0022481d68cd |
None |
応答:
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,revenue)",
"value": [
{
"@odata.etag": "W/\"81359849\"",
"name": "Litware, Inc. (sample)",
"revenue@OData.Community.Display.V1.FormattedValue": "$20,000.00",
"revenue": 20000.0000,
"_primarycontactid_value@OData.Community.Display.V1.FormattedValue": "Susanna Stubberod (sample)",
"_primarycontactid_value": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"customertypecode@OData.Community.Display.V1.FormattedValue": "Competitor",
"customertypecode": 1,
"modifiedon@OData.Community.Display.V1.FormattedValue": "4/7/2023 2:59 PM",
"modifiedon": "2023-04-07T21:59:01Z",
"_transactioncurrencyid_value@OData.Community.Display.V1.FormattedValue": "US Dollar",
"_transactioncurrencyid_value": "228f42f8-e646-e111-8eb7-78e7d162ced1",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd"
}
]
}
プロパティ データの参照
ルックアップ プロパティが複数のテーブルまたはポリモーフィックなリレーションシップを表す場合は、特定の注釈を要求して、関連するデータを含むテーブルを決定する必要があります。
たとえば、多くのテーブルには、ユーザーまたはチームが所有できるレコードがあります。 所有権データは、 owneridという名前のルックアップ列に格納されます。 この列は、OData の単一値ナビゲーション プロパティです。
$expandを使用してこの値を取得する結合を作成できますが、$selectを使用することはできません。 ただし、 $select を使用して、対応する _ownerid_value 参照プロパティを取得できます。
_ownerid_valueに$select参照プロパティを含めると、GUID 値が返されます。 この値は、レコードの所有者がユーザーかチームかを示すわけではありません。 このデータを取得するには、注釈を要求する必要があります。
これらの注釈を結果に含めるには、 Prefer 要求ヘッダー を使用して、次の設定で odata.include-annotations 基本設定 を送信します。
Prefer: odata.include-annotations="Microsoft.Dynamics.CRM.associatednavigationproperty,Microsoft.Dynamics.CRM.lookuplogicalname"
ヒント
または、 Prefer: odata.include-annotations="*" を使用して、すべての注釈を含めることができます。 詳細情報: 注釈の要求
要求:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,_ownerid_value&$top=2
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="Microsoft.Dynamics.CRM.associatednavigationproperty,Microsoft.Dynamics.CRM.lookuplogicalname"
次の応答では、2 つの異なるアカウント レコードが返されます。
_ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname注釈は、teamが最初の注釈を所有し、systemuserが 2 つ目の注釈を所有していることを示します。
応答:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Preference-Applied: odata.include-annotations="Microsoft.Dynamics.CRM.associatednavigationproperty,Microsoft.Dynamics.CRM.lookuplogicalname"
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,_ownerid_value)",
"value": [
{
"@odata.etag": "W/\"81550512\"",
"name": "Adventure Works (sample)",
"_ownerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "ownerid",
"_ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "team",
"_ownerid_value": "39e0dbe4-131b-e111-ba7e-78e7d1620f5e",
"accountid": "1adef0b8-54d3-ed11-a7c7-000d3a993550"
},
{
"@odata.etag": "W/\"81359849\"",
"name": "Litware, Inc. (sample)",
"_ownerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "ownerid",
"_ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "systemuser",
"_ownerid_value": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd"
}
]
}
-
<lookup property name>@Microsoft.Dynamics.CRM.lookuplogicalnameは、関連テーブルの論理名です。 -
<lookup property name>@Microsoft.Dynamics.CRM.associatednavigationpropertyは、対応する単一値ナビゲーション プロパティの名前です。 別の要求でこの値を使用する$expandを使用して、関連レコードからさらに多くのデータを取得できます。
列のエイリアス
Web API の場合は、 fetchxml を使用して列のカスタマイズされたエイリアスを指定します。
現在、OData を使用して Dataverse Web API を使用して列のエイリアスを指定する方法はありません。 OData 4.0 には、この機能を提供するために必要な OData 4.01 で導入された$compute システム クエリ オプション は含まれていません。
次のステップ
テーブルを結合する方法について説明します。