Dela via


Fråga entiteter

Åtgärden Query Entities frågar entiteter i en tabell och innehåller $filter alternativen och $select .

Förfrågan

För begäranden som använder frågealternativet $select måste du använda version 2011-08-18 eller senare. Dessutom måste huvudena DataServiceVersion och MaxDataServiceVersion vara inställda på 2.0.

Om du vill använda projektion måste du göra begäran med version 2013-08-15 eller senare. Rubrikerna DataServiceVersion och MaxDataServiceVersion måste vara inställda på 3.0. Mer information finns i Ange versionshuvuden för OData-datatjänsten.

Du kan skapa begäran på Query Entities följande sätt. Vi rekommenderar HTTPS. Ersätt myaccount med namnet på ditt lagringskonto och ersätt mytable med namnet på tabellen.

Metod URI för förfrågan HTTP-version
GET https://myaccount.table.core.windows.net/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

https://myaccount.table.core.windows.net/mytable()?$filter=<query-expression>&$select=<comma-separated-property-names>
HTTP/1.1

Adressen för den entitet som ska frågas kan ha olika formulär på begärande-URI:n. Mer information finns i Frågetabeller och entiteter.

Emulerad lagringstjänst-URI

När du gör en begäran mot den emulerade lagringstjänsten anger du emulatorns värdnamn och tabelltjänstens port som 127.0.0.1:10002. Följ den informationen med namnet på det emulerade lagringskontot.

Metod URI för förfrågan HTTP-version
GET http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

http://127.0.0.1:10002/devstoreaccount1/mytable()?$filter=<query-expression>?$select=<comma-separated-property-names>
HTTP/1.1

Tabelltjänsten i lagringsemulatorn skiljer sig från Azure Table Storage på flera sätt. Mer information finns i Skillnader mellan lagringsemulatorn och Azure Storage-tjänster.

URI-parametrar

Åtgärden Query Entities stöder de frågealternativ som OData-protokollspecifikationen definierar.

Begärandehuvuden

I följande tabell beskrivs obligatoriska och valfria begärandehuvuden:

Begärandehuvud Beskrivning
Authorization Krävs. Anger auktoriseringsschema, kontonamn och signatur. Mer information finns i Auktorisera begäranden till Azure Storage.
Date eller x-ms-date Krävs. Anger Coordinated Universal Time (UTC) för begäran. Mer information finns i Auktorisera begäranden till Azure Storage.
x-ms-version Valfritt. Anger vilken version av åtgärden som ska användas för den här begäran. Mer information finns i Versionshantering för Azure Storage-tjänsterna.
Accept Valfritt. Anger den godkända innehållstypen för svarsnyttolasten. Möjliga värden:

- application/atom+xml (versioner före 2015-12-11 endast)
- application/json;odata=nometadata
- application/json;odata=minimalmetadata
- application/json;odata=fullmetadata

Mer information finns i Nyttolastformat för Table Storage-åtgärder.
x-ms-client-request-id Valfritt. Tillhandahåller ett klientgenererat, täckande värde med en teckengräns på 1 kibibyte (KiB) som registreras i loggarna när loggningen har konfigurerats. Vi rekommenderar starkt att du använder det här huvudet för att korrelera aktiviteter på klientsidan med begäranden som servern tar emot.

Begärandetext

Inga.

Exempelbegäran

Request Syntax:  
GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  HTTP/1.1  
  
Request Headers:  
x-ms-version: 2015-12-11  
x-ms-date: Mon, 27 Jun 2016 15:25:14 GMT  
Authorization: SharedKeyLite myaccount:<some key>  
Accept: application/json;odata=nometadata  
Accept-Charset: UTF-8  
DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  

Svarsåtgärder

Svaret innehåller en HTTP-statuskod, en uppsättning svarshuvuden och en svarstext.

Statuskod

En lyckad åtgärd returnerar statuskoden 200 (OK).

Information om statuskoder finns i Status- och felkoder och Tabelllagringsfelkoder.

Svarshuvuden

Svaret för den här åtgärden innehåller följande rubriker. Svaret kan också innehålla ytterligare HTTP-standardhuvuden. Alla standardhuvuden överensstämmer med HTTP/1.1-protokollspecifikationen.

Svarsrubrik Description
x-ms-continuation-NextPartitionKey

x-ms-continuation-NextRowKey
Anger att:

- Antalet entiteter som ska returneras överstiger 1 000.
– Tidsgränsen för servern har överskridits.
– En servergräns nås om frågan returnerar data som är spridda över flera servrar.

Mer information om hur du använder fortsättningstoken finns i Timeout och sidnumrering för frågor.
x-ms-request-id Identifierar unikt den begäran som gjordes. Du kan använda den för att felsöka begäran. Mer information finns i Felsöka API-åtgärder.
x-ms-version Anger vilken version av Table Storage som användes för att köra begäran. Det här huvudet returneras för begäranden mot version 2009-09-19 och senare.
Date Ett UTC-datum/tid-värde som anger den tid då tjänsten skickade svaret.
Content-Type Anger nyttolastens innehållstyp. Värdet för det här huvudet beror på värdet för begärandehuvudet Accept . Möjliga värden:

- application/atom+xml (versioner före 2015-12-11 endast)
- application/json;odata=nometadata
- application/json;odata=minimalmetadata
- application/json;odata=fullmetadata

Mer information om giltiga innehållstyper finns i Nyttolastformat för Table Storage-åtgärder.
x-ms-client-request-id Kan användas för att felsöka begäranden och motsvarande svar. Värdet för det här huvudet är lika med värdet x-ms-client-request-id för huvudet, om det finns i begäran och värdet är högst 1 024 synliga ASCII-tecken. x-ms-client-request-id Om rubriken inte finns i begäran visas inte det här huvudet i svaret.

Exempelsvar

Response Status:  
HTTP/1.1 200 OK  
  
Response Headers:  
Content-Type: application/json  
x-ms-request-id: 87f178c0-44fe-4123-a4c1-96c8fa6d9654  
Date: Mon, 27 Jun 2016 15:25:14 GMT  
x-ms-version: 2015-12-11  
Connection: close  

Själva svaret

Åtgärden Query Entities returnerar listan över entiteter i en tabell som en OData-entitetsuppsättning. Listan över entiteter har antingen ett JSON-format eller ett Atom-flöde, beroende på Accept begärans rubrik.

Anteckning

Vi rekommenderar JSON som nyttolastformat. Det är det enda format som stöds för version 2015-12-11 och senare.

JSON (version 2013-08-15 och senare)

Här är en exempelbegärans-URI för en Query Entities åtgärd i en tabell med kunder:

GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  

Här är svarsnyttolasten i JSON utan metadata:

{  
   "value":[  
      {  
         "PartitionKey":"Customer",  
         "RowKey":"Name",  
         "Timestamp":"2013-08-22T00:20:16.3134645Z",  
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"  
      }  
   ]  
}  

Här är svarsnyttolasten i JSON med minimala metadata:

{  
   "odata.metadata":"https://myaccount.table.core.windows.net/$metadata#Customers",  
   "value":[  
      {  
         "PartitionKey":"Customer",  
         "RowKey":"Name",  
         "Timestamp":"2013-08-22T00:20:16.3134645Z",  
         "CustomerSince@odata.type":"Edm.DateTime",  
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"  
      }  
   ]  
}  

Här är svarsnyttolasten i JSON med fullständiga metadata:

{  
   "odata.metadata":" https://myaccount.table.core.windows.net/metadata#Customers",  
   "value":[  
      {  
         "odata.type":"myaccount.Customers",  
         "odata.id":"https://myaccount.table.core.windows.net/Customers(PartitionKey=Customer',RowKey='Name')",  
         "odata.etag":"W/\"0x5B168C7B6E589D2\"",  
         "odata.editLink":"Customers(PartitionKey=Customer',RowKey='Name')",  
         "PartitionKey":"Customer",  
         "RowKey":"Name",  
         "Timestamp@odata.type":"Edm.DateTime",  
         "Timestamp":"2013-08-22T00:20:16.3134645Z",  
         "CustomerSince@odata.type":"Edm.DateTime",  
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"  
      }  
   ]  
}  

Atomfeed (versioner före 2015-12-11)

Här är en exempelbegärans-URI för en Query Entities åtgärd i en tabell med kunder:

GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  

Här är ett Atom-exempelsvar för åtgärden Query Entities :

<?xml version="1.0" encoding="UTF-8"?>  
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="https://myaccount.table.core.windows.net">  
   <id>https://myaccount.table.core.windows.net/Customers</id>  
   <title type="text">Customers</title>  
   <updated>2013-08-22T00:50:32Z</updated>  
   <link rel="self" title="Customers" href="Customers" />  
   <entry m:etag="W/"0x5B168C7B6E589D2"">  
      <id>https://myaccount.table.core.windows.net/Customers(PartitionKey='Customer',RowKey='Name')</id>  
      <category term="myaccount.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />  
      <link rel="edit" title="Customers" href="Customers(PartitionKey='Customer',RowKey='Name')" />  
      <title />  
      <updated>2013-08-22T00:50:32Z</updated>  
      <author>  
         <name />  
      </author>  
      <content type="application/xml">  
         <m:properties>  
            <d:PartitionKey>Customer</d:PartitionKey>  
            <d:RowKey>Name</d:RowKey>  
            <d:Timestamp m:type="Edm.DateTime">2013-08-22T00:20:16.3134645Z</d:Timestamp>  
            <d:CustomerSince m:type="Edm.DateTime">2008-10-01T15:25:05.2852025Z</d:CustomerSince>  
         </m:properties>  
      </content>  
   </entry>  
</feed>  

Auktorisering

Den här åtgärden kan utföras av kontoägaren och av alla som har en signatur för delad åtkomst som har behörighet att utföra den här åtgärden.

Kommentarer

En fråga mot Table Storage kan returnera högst 1 000 entiteter samtidigt och kan köras i högst fem sekunder. Svaret innehåller anpassade rubriker som innehåller en uppsättning fortsättningstoken i något av följande fall:

  • Resultatuppsättningen innehåller mer än 1 000 entiteter.
  • Frågan avslutades inte inom fem sekunder.
  • Frågan korsar partitionsgränsen.

Du kan använda fortsättningstoken för att skapa en efterföljande begäran för nästa sida med data. Mer information om fortsättningstoken finns i Tidsgräns för frågor och sidnumrering.

Anteckning

När du gör efterföljande begäranden som innehåller fortsättningstoken måste du skicka den ursprungliga URI:n på begäran. Om du till exempel har angett ett $filter, $selecteller $top frågealternativ som en del av den ursprungliga begäran, inkluderar du det alternativet för efterföljande begäranden. Annars kan dina efterföljande begäranden returnera oväntade resultat.

Frågealternativet $top i det här fallet anger det maximala antalet resultat per sida. Den anger inte det maximala antalet resultat i hela svarsuppsättningen.

Mer information finns i Frågetabeller och entiteter.

För projektionsbegäranden som använder $select frågealternativet måste versionen vara 2011-08-18 eller senare. Det maximala antalet returnerade egenskaper är 255. Svarstexten innehåller alla projicerade egenskaper, även om egenskaperna inte ingår i den returnerade entiteten.

Om begäran till exempel innehåller en egenskap som den projicerade entiteten inte innehåller markeras egenskapen som saknas med ett null-attribut. Föregående exempelsvarstext innehåller Address egenskapen, som inte ingår i den projicerade entiteten. Värdet för egenskapen är därför null: <d:Address m:null="true" />.

Den totala tid som tilldelats begäran för schemaläggning och bearbetning av frågan är 30 sekunder. Den summan inkluderar de fem sekunderna för frågekörning.

Observera att höger sida av ett frågeuttryck måste vara en konstant. Du kan inte referera till en egenskap till höger om uttrycket. Mer information om hur du skapar frågeuttryck finns i Frågetabeller och entiteter.

Ett frågeuttryck får inte innehålla null värden. Följande tecken måste kodas om du använder dem i en frågesträng:

  • Snedstreck (/)

  • Frågetecken (?)

  • Kolon (:)

  • Vid tecknet (@)

  • Ampersand (&)

  • Likhetstecken (=)

  • Plustecken (+)

  • Kommatecken (,)

  • Dollartecken ($)

Alla program som kan auktorisera och skicka en HTTP-begäran GET kan fråga entiteter i en tabell.

Mer information om frågeåtgärder som stöds mot Table Storage via LINQ finns i Frågeoperatorer som stöds för Table Storage och Write LINQ querys against Table Storage (Frågeoperatorer som stöds för Table Storage och Write LINQ querys against Table Storage).

Se även

Felkoder för Table Storage
Auktorisera begäranden till Azure Storage
Status- och felkoder
Hantera Table Storage-resurser
Frågetabeller och entiteter
Ange versionshuvuden för OData-datatjänsten
Infoga entitet
Uppdatera entitet
Ta bort entitet