次の方法で共有


OData を使用して列を選択する

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 が主キーです。

その他のプロパティ値も応答に含まれる場合があります。 この場合、関連するCurrency (TransactionCurrency) テーブル/エンティティ参照lookup プロパティは、が通貨プロパティであるため含まれます。

使用できるプロパティはどれですか?

エンティティで使用可能なすべてのプロパティは、 $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 システム クエリ オプション は含まれていません。

次のステップ

テーブルを結合する方法について説明します。