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 分かかります。 個人データは収集されません (プライバシー ステートメント)。