Extraire des enregistrements de table associés avec une requête
Notes
Vous n’êtes pas sûr de l’entité par rapport à la table ? Voir Développeurs : Comprendre la terminologie dans Microsoft Dataverse.
Utilisez l’option de requête système $expand dans les propriétés de navigation pour contrôler quelles données des entités associées sont renvoyées. Il existe deux types de propriétés de navigation :
Les propriétés de navigation à valeur unique correspondent aux attributs de recherche qui prennent en charge les relation plusieurs-à-un et permettent de définir une référence à une autre entité.
Les propriétés de navigation avec une valeur de collection correspondent aux relations un-à-plusieurs ou plusieurs-à-plusieurs.
Si vous incluez uniquement le nom de la propriété de navigation, vous recevrez toutes les propriétés des enregistrements associés. Vous pouvez limiter les propriétés retournées pour les enregistrements associés à l’aide de l’option de requête système $select entre parenthèses après le nom de propriété de navigation. Utilisez cette procédure pour les propriétés de navigation à valeur unique et valeur de collection.
Notes
- Vous êtes limité à 15 options
$expandau maximum dans une requête. Cela vise à préserver les performances. Chaque option$expandcrée une jointure qui peut affecter les performances. - Pour récupérer des entités associées pour une instance d’entité, voir Extraire les tables associées pour une table en développant les propriétés de navigation.
- Les requêtes qui développent les propriétés de navigation à valeur de collection peuvent renvoyer des données mises en cache pour les propriétés qui ne reflètent pas des modifications récentes. Il est préférable d’utiliser l’en-tête
If-None-Matchavec la valeurnullpour remplacer la mise en cache du navigateur. Voir En-têtes HTTP pour plus de détails.
Extraire les enregistrements de tables associés en développant des propriétés de navigation à valeur unique
L’exemple suivant montre comment récupérer le contact pour tous les enregistrements de compte. Pour les enregistrements de contact associés, nous récupérons uniquement l’identifiant de contact et le nom complet.
Demande
GET [Organization URI]/api/data/v9.1/accounts?$select=name
&$expand=primarycontactid($select=contactid,fullname) HTTP/1.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.1/$metadata#accounts(name,primarycontactid,primarycontactid(contactid,fullname))",
"value":[
{
"@odata.etag":"W/\"513475\"",
"name":"Fourth Coffee (sample)",
"accountid":"36dbf27c-8efb-e511-80d2-00155db07c77",
"primarycontactid":{
"contactid":"9cdbf27c-8efb-e511-80d2-00155db07c77",
"fullname":"Yvonne McKay (sample)"
}
},
{
"@odata.etag":"W/\"513477\"",
"name":"Litware, Inc. (sample)",
"accountid":"38dbf27c-8efb-e511-80d2-00155db07c77",
"primarycontactid":{
"contactid":"9edbf27c-8efb-e511-80d2-00155db07c77",
"fullname":"Susanna Stubberod (sample)"
}
}
]
}
Au lieu de retourner les entités associées pour les ensembles d’entités, vous pouvez également retourner des références (liens) aux entités associées en développant la propriété de navigation à valeur unique avec l’option $ref. L’exemple suivant retourne des liens vers les enregistrements de contact pour tous les comptes.
Demande
GET [Organization URI]/api/data/v9.1/accounts?$select=name
&$expand=primarycontactid/$ref HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Response
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{
"@odata.context":"[Organization URI]/api/data/v9.1/$metadata#accounts(name,primarycontactid)",
"value":[
{
"@odata.etag":"W/\"513475\"",
"name":"Fourth Coffee (sample)",
"_primarycontactid_value":"9cdbf27c-8efb-e511-80d2-00155db07c77",
"accountid":"36dbf27c-8efb-e511-80d2-00155db07c77",
"primarycontactid":{
"@odata.id":"[Organization URI]/api/data/v9.1/contacts(9cdbf27c-8efb-e511-80d2-00155db07c77)"
}
},
{
"@odata.etag":"W/\"513477\"",
"name":"Litware, Inc. (sample)",
"_primarycontactid_value":"9edbf27c-8efb-e511-80d2-00155db07c77",
"accountid":"38dbf27c-8efb-e511-80d2-00155db07c77",
"primarycontactid":{
"@odata.id":"[Organization URI]/api/data/v9.1/contacts(9edbf27c-8efb-e511-80d2-00155db07c77)"
}
}
]
}
Extension à plusieurs niveaux des propriétés de navigation à valeur unique
Vous pouvez étendre les propriétés de navigation à valeur unique sur plusieurs niveaux en imbriquant une option $expand dans un autre option $expand.
Notes
Il n’y a pas de limite à la profondeur de l’imbrication des options $expand, mais la limite combinée de 15 options $expand au total dans une requête s’applique toujours.
La requête suivante renvoie des enregistrements task et étend le contact associé, le account associé au contact, et enfin le systemuser qui a créé l’enregistrement account.
Demande
GET [Organization URI]/api/data/v9.1/tasks?$select=subject
&$expand=regardingobjectid_contact_task($select=fullname;
$expand=parentcustomerid_account($select=name;
$expand=createdby($select=fullname))) HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Response
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#tasks(subject,regardingobjectid_contact_task(fullname,parentcustomerid_account(name,createdby(fullname))))",
"value":
[
{
"@odata.etag": "W/\"28876997\"",
"subject": "Task 1 for Susanna Stubberod",
"activityid": "834814f9-b0b8-ea11-a812-000d3a122b89",
"regardingobjectid_contact_task": {
"fullname": "Susanna Stubberod (sample)",
"contactid": "824814f9-b0b8-ea11-a812-000d3a122b89",
"parentcustomerid_account": {
"name": "Contoso, Ltd. (sample)",
"accountid": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"createdby": {
"fullname": "Nancy Anderson",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
}
},
{
"@odata.etag": "W/\"28877001\"",
"subject": "Task 2 for Susanna Stubberod",
"activityid": "844814f9-b0b8-ea11-a812-000d3a122b89",
"regardingobjectid_contact_task": {
"fullname": "Susanna Stubberod (sample)",
"contactid": "824814f9-b0b8-ea11-a812-000d3a122b89",
"parentcustomerid_account": {
"name": "Contoso, Ltd. (sample)",
"accountid": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"createdby": {
"fullname": "Nancy Anderson",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
}
}
]
}
Extraire les tables associées en développant des propriétés de navigation à valeur de collection
Si vous développez des paramètres de navigation avec une valeur de collection pour récupérer les entités associées pour des ensembles d’entités, un seul niveau de profondeur est renvoyé s’il y a des données. Sinon, la collection renverra un tableau vide.
Dans les deux cas, une propriété @odata.nextLink sera retournée pour les entités associées. Si vous souhaitez récupérer la collection séparément, vous pouvez utiliser la valeur de la propriété @odata.nextLink avec une nouvelle requête GET à renvoyer aux données requises.
L’exemple suivant récupère les tâches attribuées aux 2 enregistrements de compte principaux. L’un a des tâches connexes, l’autre pas.
Demande
GET [Organization URI]/api/data/v9.1/accounts?$top=2
&$select=name
&$expand=Account_Tasks($select=subject,scheduledstart) HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Response
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#accounts(name,Account_Tasks(subject,scheduledstart))",
"value": [
{
"@odata.etag": "W/\"37867294\"",
"name": "Contoso, Ltd. (sample)",
"accountid": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"Account_Tasks": [
{
"@odata.etag": "W/\"28876919\"",
"subject": "Task 1 for Contoso, Ltd.",
"scheduledstart": null,
"_regardingobjectid_value": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"activityid": "7b4814f9-b0b8-ea11-a812-000d3a122b89"
},
{
"@odata.etag": "W/\"28876923\"",
"subject": "Task 2 for Contoso, Ltd.",
"scheduledstart": null,
"_regardingobjectid_value": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"activityid": "7c4814f9-b0b8-ea11-a812-000d3a122b89"
},
{
"@odata.etag": "W/\"28876927\"",
"subject": "Task 3 for Contoso, Ltd.",
"scheduledstart": null,
"_regardingobjectid_value": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"activityid": "7d4814f9-b0b8-ea11-a812-000d3a122b89"
}
],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.1/accounts(7a4814f9-b0b8-ea11-a812-000d3a122b89)/Account_Tasks?$select=subject,scheduledstart"
},
{
"@odata.etag": "W/\"37526208\"",
"name": "Fourth Coffee",
"accountid": "ccd685f9-cddd-ea11-a813-000d3a122b89",
"Account_Tasks": [],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.1/accounts(ccd685f9-cddd-ea11-a813-000d3a122b89)/Account_Tasks?$select=subject,scheduledstart"
}
]
}
Récupérez les tables associées pour une instance d’entité en développant les propriétés de navigation à valeur unique ou à valeur de collection
L’exemple suivant montre comment vous pouvez développer les entités associées pour des groupes d’entités en utilisant les propriétés de navigation à valeur unique ou à valeur de collection. Comme expliqué précédemment, le développement des propriétés de navigation avec une valeur de collection pour extraire les entités associées pour des ensembles d’entités renvoie un niveau de profondeur et une propriété @odata.nextLink pour les entités associées.
Dans cet exemple, nous récupérons le contact et les tâches attribués aux 2 comptes principaux.
Demande
GET [Organization URI]/api/data/v9.1/accounts?$top=2
&$select=name
&$expand=primarycontactid($select=contactid,fullname),
Account_Tasks($select=subject,scheduledstart) HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Response
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#accounts(name,primarycontactid(contactid,fullname),Account_Tasks(subject,scheduledstart))",
"value": [
{
"@odata.etag": "W/\"37867294\"",
"name": "Contoso, Ltd. (sample)",
"accountid": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"primarycontactid": {
"contactid": "7e4814f9-b0b8-ea11-a812-000d3a122b89",
"fullname": "Yvonne McKay (sample)"
},
"Account_Tasks": [
{
"@odata.etag": "W/\"28876919\"",
"subject": "Task 1 for Contoso, Ltd.",
"scheduledstart": null,
"_regardingobjectid_value": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"activityid": "7b4814f9-b0b8-ea11-a812-000d3a122b89"
},
{
"@odata.etag": "W/\"28876923\"",
"subject": "Task 2 for Contoso, Ltd.",
"scheduledstart": null,
"_regardingobjectid_value": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"activityid": "7c4814f9-b0b8-ea11-a812-000d3a122b89"
},
{
"@odata.etag": "W/\"28876927\"",
"subject": "Task 3 for Contoso, Ltd.",
"scheduledstart": null,
"_regardingobjectid_value": "7a4814f9-b0b8-ea11-a812-000d3a122b89",
"activityid": "7d4814f9-b0b8-ea11-a812-000d3a122b89"
}
],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.1/accounts(7a4814f9-b0b8-ea11-a812-000d3a122b89)/Account_Tasks?$select=subject,scheduledstart"
},
{
"@odata.etag": "W/\"37526208\"",
"name": "Fourth Coffee",
"accountid": "ccd685f9-cddd-ea11-a813-000d3a122b89",
"primarycontactid": {
"contactid": "384d0f84-7de6-ea11-a817-000d3a122b89",
"fullname": "Charlie Brown"
},
"Account_Tasks": [],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.1/accounts(ccd685f9-cddd-ea11-a813-000d3a122b89)/Account_Tasks?$select=subject,scheduledstart"
}
]
}
Filtrer les valeurs de collection selon les données dans les tables associées
L’API web vous permet d’utiliser deux opérateurs lambda, qui sont any et all pour évaluer une expression booléenne sur une collection. Informations complémentaires : Utiliser les opérateurs lambda.
Voir aussi
Rechercher dans les données de la table à l’aide de la recherche Dataverse
Interroger des données à l’aide de l’API web
Effectuer des opérations à l’aide de l’API Web
Composer des demandes Http et gérer les erreurs
Créer une table à l’aide de l’API web
Récupérer une table à l’aide de l’API web
Mettre à jour et supprimer des tables à l’aide de l’API Web
Associer et dissocier les tables à l’aide de l’API Web
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é).
Commentaires
Envoyer et afficher des commentaires pour