Partager via


Colonnes Sélectionner utilisant OData

Important

Lorsque vous interrogez des données, il est important de limiter la quantité de données renvoyées pour optimiser les performances. Sélectionnez uniquement les colonnes contenant les données dont vous avez besoin.

Utilisez l’option de requête pour choisir les colonnes à renvoyer avec votre requête. $select ... Dans OData, chaque colonne est représentée comme une propriété . Si vous n’incluez pas d’option de requête $select, toutes les propriétés sont renvoyées.

L’exemple suivant demande les propriétés name et revenue de la première ligne de la ressource accounts EntitySet :

Demande :

GET [Organization URI]/api/data/v9.2/accounts?$select=name,revenue&$top=1
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Réponse :

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"
        }
    ]
}

La clé primaire est toujours renvoyée, vous n’avez donc pas besoin de l’inclure dans votre $select. Dans cet exemple, accountid est la clé primaire.

D’autres valeurs de propriété peuvent également être incluses dans le réponse. Dans ce cas, la propriété de recherche pour la référence de table/entité de devise (TransactionCurrency) associée est incluse car il s’agit d’une propriété de devise. _transactioncurrencyid_value ... ... revenue

Quelles sont les propriétés disponibles ?

Toutes les propriétés disponibles pour une entité se trouvent dans le document de service $metadata. Plus d’informations : Propriétés de l’API Web

Les types d’entités inclus avec Dataverse sont décrites dans le Web API Entity Type Reference.

Conseil

La façon la plus simple de découvrir rapidement les propriétés disponibles est d’envoyer une requête en utilisant l’option $top avec une valeur de 1 sans utiliser $select.

Valeurs mises en forme

Les valeurs mises en forme sont des chaînes de caractères générées sur le serveur que vous pouvez utiliser dans votre application. Les valeurs mises en forme sont les suivantes :

  • Les étiquettes localisées pour les colonnes choix, choix, oui/non, état et raison du statut
  • Valeur du nom primaire pour les propriétés recherche et propriétaire
  • Valeurs monétaires avec symboles monétaires
  • Date mise en forme dans le fuseau horaire de l’utilisateur

Pour inclure des valeurs formatées dans vos résultats, utilisez l’en-tête de requête Prefer pour envoyer la préférence odata.include-annotations

Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"

Les valeurs mises en forme sont l’une des nombreuses annotations que vous pouvez demander. Utilisez Prefer: odata.include-annotations="*" pour inclure toutes les annotations. Plus d’informations : Demander des annotations

La valeur mise en forme est renvoyée avec l’enregistrement avec une annotation qui suit cette convention :

<property name>@OData.Community.Display.V1.FormattedValue

Par exemple :

Demande :

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"

La table suivante décrit les valeurs et les valeurs formatées qui sont renvoyées pour les propriétés demandées.

Propriété active Valeur mise en forme
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

Réponse :

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"
        }
    ]
}

Recherche de données sur les propriétés

Lorsqu’une propriété de recherche représente une relation multi-table ou polymorphe, vous devez demander des annotations spécifiques pour déterminer quelle table contient les données associées.

Par exemple, de nombreuses tables contiennent des enregistrements dont les utilisateurs ou les équipes peuvent être propriétaires. Les données de propriété sont stockées dans une colonne de recherche nommée ownerid. Cette colonne est une propriété de navigation à valeur unique dans OData. Vous pouvez utiliser $expand pour créer une jointure afin d’obtenir cette valeur, mais vous ne pouvez pas utiliser $select. Cependant, vous pouvez utiliser $select pour obtenir la propriété de recherche _ownerid_value correspondante.

Lorsque vous incluez la propriété de recherche _ownerid_value avec votre $select, elle renvoie une valeur GUID. Cette valeur ne vous indique pas si le propriétaire de l’enregistrement est un utilisateur ou une équipe. Vous devez demander des annotations pour obtenir ces données.

Pour inclure ces annotations dans vos résultats, utilisez l’en-tête de requête Prefer pour envoyer la préférence odata.include-annotations avec ces paramètres : ... ...

Prefer: odata.include-annotations="Microsoft.Dynamics.CRM.associatednavigationproperty,Microsoft.Dynamics.CRM.lookuplogicalname"

Conseil

Ou vous pouvez utiliser Prefer: odata.include-annotations="*" pour inclure toutes les annotations. Plus d’informations : Demander des annotations

Demande :

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"

La réponse suivante renvoie deux enregistrements de compte différents. Le _ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname annotation vous indique qu’un team possède le premier, et qu’un systemuser possède le second.

Réponse :

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 est le nom logique de la table liée.
  • <lookup property name>@Microsoft.Dynamics.CRM.associatednavigationproperty est le nom de la propriété de navigation correspondante à valeur unique. Vous pouvez utiliser $expand avec cette valeur dans une autre requête pour obtenir plus de données de l’enregistrement lié.

Alias de colonne

Pour l’API Web, utilisez fetchxml pour spécifier des alias personnalisés pour les colonnes.

Il n’existe actuellement aucun moyen de spécifier des alias de colonnes à l’aide de l’API Web à l’aide d’OData. Dataverse OData 4.0 n’inclut pas l’option de requête système $compute introduite dans OData 4.01 qui est requise pour fournir cette capacité.

Étapes suivantes

Découvrez comment joindre des tables.

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).