Auswählen-Spalten mit OData
Wichtig
Wenn Sie Daten abfragen, ist es wichtig, die Menge der zurückgegebenen Daten zu begrenzen, um die Leistung zu optimieren. Nur die Spalten mit den erforderlichen Daten auswählen.
Verwenden Sie die $select
Abfrageoption , um auszuwählen, welche Spalten mit Ihrer Abfrage zurückgegeben werden sollen. In OData wird jede Spalte als Eigenschaft dargestellt. Wenn Sie keine $select
Abfrageoption einfügen, werden alle Eigenschaften zurückgegeben.
Das folgende Beispiel fordert die name
und revenue
Eigenschaften aus der ersten Zeile der accounts
EntitySet-Ressource an:
Anforderung:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,revenue&$top=1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Antwort:
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"
}
]
}
Die Primärschlüsseleigenschaft wird immer zurückgegeben, sodass Sie sie nicht in Ihre $select
aufnehmen müssen. In diesem Beispiel ist accountid
der Primärschlüssel.
In Antwort können auch andere Eigenschaftswerte enthalten sein. In diesem Fall wird die _transactioncurrencyid_value
Nachschlageeigenschaft für die zugehörige Währungstabelle (TransactionCurrency)/Entitätsreferenz eingeschlossen, da revenue
es sich um eine Währungseigenschaft handelt.
Welche Eigenschaften sind verfügbar?
Alle verfügbaren Eigenschaften für eine Entität finden Sie im $metadata-Dienstdokument. Weitere Informationen: Web-API-Eigenschaften
Die Typen der Entitäten, die in Dataverse enthalten sind, werden in Web API Entity Type Reference beschrieben.
Tipp
Der einfachste Weg, schnell herauszufinden, welche Eigenschaften verfügbar sind, besteht darin, eine Anfrage mit der $top
Abfrageoption mit dem Wert 1
zu senden, ohne $select
zu verwenden.
Formatierte Werte
Formatierte Werte sind auf dem Server generierte Zeichenfolgenwerte, die Sie in Ihrer Anwendung verwenden können. Formatierte Werte schließen ein:
- Die lokalisierten Bezeichnungen für die Spalten „Auswahl“, „Auswahl“, „Ja/Nein“, „Status“ und „Statusgrund“
- Der primäre Namenswert für Such- und Eigentümereigenschaften
- Währungswerte mit Währungssymbolen
- Formatierte Datumswerte in der Zeitzone des Benutzers
Um formatierte Werte in Ihre Ergebnisse einzuschließen, verwenden Sie den Prefer-Anforderungsheader , um die odata.include-annotations-Präferenz zu senden.
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Formatierte Werte sind eine von mehreren Anmerkungen, die Sie anfordern können. Verwenden Sie Prefer: odata.include-annotations="*"
, um alle Anmerkungen einzuschließen. Weitere Informationen: Anmerkungen anfordern
Der formatierte Wert wird mit dem Datensatz mit einer Anmerkung zurückgegeben, die dieser Konvention folgt:
<property name>@OData.Community.Display.V1.FormattedValue
Zum Beispiel:
Anforderung:
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"
Die folgende Tabelle beschreibt die Werte und formatierten Werte, die für die angeforderten Eigenschaften zurückgegeben werden.
Eigenschaften | Wert | Formatierter Wert |
---|---|---|
name |
Litware, Inc. (sample) |
Nein |
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 |
Nein |
Antwort:
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"
}
]
}
Suche Eigenschaftsdaten
Wenn eine Nachschlageeigenschaft eine Beziehung mit mehreren Tabellen oder eine polymorphe Beziehung darstellt, müssen Sie bestimmte Anmerkungen anfordern, um zu bestimmen, welche Tabelle die zugehörigen Daten enthält.
Beispielsweise enthalten viele Tabellen Datensätze, die Benutzer oder Teams besitzen können. Eigentumsdaten werden in einer Suchfeld-Spalte mit dem Namen ownerid
gespeichert. Diese Spalte ist eine einwertige Navigationseigenschaft in OData. Sie könnten $expand
verwenden, um einen Join zu erstellen, um diesen Wert zu erhalten, aber Sie können $select
nicht verwenden. Sie können jedoch $select
verwenden, um die entsprechende _ownerid_value
Nachschlageeigenschaft abzurufen.
Wenn Sie die Suchfeld-Eigenschaft _ownerid_value
mit Ihrer $select
einschließen, wird ein GUID-Wert zurückgegeben. Dieser Wert sagt Ihnen nicht, ob der Eigentümer des Datensatzes ein Benutzer oder ein Team ist. Sie müssen Anmerkungen anfordern, um diese Daten zu erhalten.
Um diese Anmerkungen in Ihre Ergebnisse einzuschließen, verwenden Sie den Anforderungsheader „Prefer“ , um die Präferenz „odata.include-annotations“ mit diesen Einstellungen zu senden:
Prefer: odata.include-annotations="Microsoft.Dynamics.CRM.associatednavigationproperty,Microsoft.Dynamics.CRM.lookuplogicalname"
Tipp
Oder Sie können Prefer: odata.include-annotations="*"
verwenden, um alle Anmerkungen einzuschließen. Weitere Informationen: Anmerkungen anfordern
Anforderung:
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"
Die folgende Antwort gibt zwei verschiedene Kontodatensätze zurück. Das _ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname
Anmerkungen sagt Ihnen, dass a team
das erste besitzt und a systemuser
das zweite besitzt.
Antwort:
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
ist der logische Name der Bezugstabelle.<lookup property name>@Microsoft.Dynamics.CRM.associatednavigationproperty
ist der Name der entsprechenden einwertigen Navigationseigenschaft. Sie können$expand
mit diesem Wert in einer anderen Anfrage verwenden, um weitere Daten aus dem verknüpften Datensatz abzurufen.
Spaltenaliasse
Für die Web-API verwenden Sie fetchxml, um benutzerdefinierte Aliase für Spalten anzugeben.
Derzeit gibt es keine Möglichkeit, Spaltenaliase mithilfe der Dataverse Web-API unter Verwendung von OData anzugeben. OData 4.0 enthält nicht die in OData 4.01 eingeführte Systemabfrageoption $compute , die zum Bereitstellen dieser Funktion erforderlich ist.
Nächste Schritte,
Informationen zum Verknüpfen von Tabellen.
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).