ODataを使用した 選択 列
重要
データをクエリする場合、パフォーマンスを最適化するために返されるデータの量を制限することが重要です。 必要なデータを含む列のみを選択してください。
クエリで返す列を選択するには、 $select
クエリ オプション を使用します。 ODataでは、すべての列は プロパティとして表されます。 $select
クエリ オプションを含めない場合、すべてのプロパティを返します。
次の例では、EntitySetリソースの最初の行から name
および 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
が主キーです。
応答 には他のプロパティ値も含まれる場合があります。 この場合、関連する _transactioncurrencyid_value
通貨 (TransactionCurrency) テーブル/エンティティ参照 の ルックアップ プロパティ は、 revenue
通貨プロパティであるため、含まれています。
どのプロパティを利用できますか?
エンティティで使用可能なすべてのプロパティは、 $metadataサービス ドキュメント にあります。 詳細情報: Web APIプロパティ
Dataverse に含まれるエンティティ タイプは、Web API Entity Type Reference で説明されています。
ヒント
どのプロパティを利用できるかをすばやく発見する最も簡単な方法は、$select
を使用せずに 1
の値で $top
クエリ オプションを使用し、要求を送信することです。
書式設定された値
書式設定した値とは、サーバーで生成される文字列値であり、これはアプリケーションで使用できます。 書式設定した値を次に示します。
- 単一選択、複数選択、はい/いいえ、状態、ステータス列のローカライズされたラベル
- 検索と所有者のプロパティに対するプライマリ名の値
- 通貨記号を含む通貨値
- ユーザーのタイムゾーンに合わせて書式設定した日付値
結果にフォーマットされた値を含めるには、 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"
次の表では、要求されたプロパティに対して返される値とフォーマットされた値について説明します。
Property | 価値 | 書式設定された値 |
---|---|---|
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
注釈 は、a team
が最初のものを所有し、a 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を使用したWeb APIを使用して列のエイリアスを指定する方法はありません。 Dataverse OData 4.0には、この機能を提供するために必要な、 OData 4.01で導入された $computeシステム クエリ オプション が含まれていません。
次の手順
テーブルの結合方法について説明します。
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。