Frågeblobinnehåll
Åtgärden Query Blob Contents
tillämpar en enkel Structured Query Language -instruktion (SQL) på en blobs innehåll och returnerar endast den efterfrågade delmängden av data. Du kan också anropa Query Blob Contents
för att fråga innehållet i en version eller ögonblicksbild.
Förfrågan
Du kan skapa begäran på Query Blob Contents
följande sätt. Vi rekommenderar HTTPS. Ersätt myaccount med namnet på ditt lagringskonto.
URI för POST-metodbegäran | HTTP-version |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=query https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=query&snapshot=<DateTime> https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=query&versionid=<DateTime> |
HTTP/1.0 HTTP/1.1 |
URI-parametrar
Du kan ange följande ytterligare parametrar på begärande-URI:n:
Parameter | Beskrivning |
---|---|
snapshot |
Valfritt. Parametern snapshot är ett täckande DateTime värde. När den finns anger den blobögonblicksbilden som ska frågas. Mer information om hur du arbetar med blobögonblicksbilder finns i Skapa en ögonblicksbild av en blob. |
versionid |
Valfritt, version 2019-12-12 och senare. Parametern versionid är ett täckande DateTime värde. När den finns anger den version av bloben som ska hämtas. |
timeout |
Valfritt. Parametern timeout uttrycks i sekunder. Mer information finns i Ange tidsgränser för Blob Storage-åtgärder. |
Begärandehuvuden
I följande tabell beskrivs obligatoriska och valfria begärandehuvuden:
Begärandehuvud | Beskrivning |
---|---|
Authorization |
Krävs. Anger autentiseringsschema, 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 |
Krävs för alla autentiserade begäranden, valfritt för anonyma begäranden. 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. |
Content-Type |
Krävs. Värdet för det här huvudet ska vara application/xml; charset=UTF-8 . |
x-ms-lease-id:<ID> |
Valfritt. Om det här huvudet anges utförs åtgärden endast om båda följande villkor uppfylls: – Blobens lån är för närvarande aktivt. – Låne-ID:t som anges i begäran matchar blobens. Om det här huvudet anges och båda dessa villkor inte uppfylls misslyckas begäran och Query Blob Contents åtgärden misslyckas med statuskod 412 (Förhandsvillkoret misslyckades). |
Origin |
Valfritt. Anger ursprunget som begäran utfärdas från. Förekomsten av det här huvudet resulterar i CORS-huvuden (Cross-Origin Resource Sharing) i svaret. |
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 loggning 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. |
Den här åtgärden stöder också användning av villkorsstyrda rubriker för att fråga blobinnehållet endast om ett angivet villkor uppfylls. Mer information finns i Ange villkorsstyrda rubriker för Blob Storage-åtgärder.
Begärandetext
Begärandetexten för den här versionen av Query Blob Contents
använder följande XML-format:
<?xml version="1.0" encoding="utf-8"?>
<QueryRequest>
<QueryType>String</QueryType>
<Expression>String</Expression>
<InputSerialization>
<Format>
<Type>String</Type>
<DelimitedTextConfiguration>
<ColumnSeparator>String</ColumnSeparator>
<FieldQuote>String</FieldQuote>
<RecordSeparator>String</RecordSeparator>
<EscapeChar>String</EscapeChar>
<HasHeaders>Boolean</HasHeaders>
</DelimitedTextConfiguration>
<JsonTextConfiguration>
<RecordSeparator>String</RecordSeparator>
</JsonTextConfiguration>
</Format>
</InputSerialization>
<OutputSerialization>
<Format>
<Type>String</Type>
<DelimitedTextConfiguration>
<ColumnSeparator>String</ColumnSeparator >
<FieldQuote>String</FieldQuote >
<RecordSeparator>String</RecordSeparator>
<EscapeChar>String</EscapeChar>
<HasHeaders>Boolean</HasHeaders>
</DelimitedTextConfiguration>
<JsonTextConfiguration>
<RecordSeparator>String</RecordSeparator>
</JsonTextConfiguration>
<ArrowConfiguration>
<Schema>
<Field>
<Type>String</Type>
<Name>String</Name>
</Field>
<Field>
<Type>String</Type>
</Field>
.
.
.
<Field>
<Type>String</Type>
<Precision>Integer</Precision>
<Scale>Integer</Scale>
</Field>
</Schema>
</ArrowConfiguration>
</Format>
</OutputSerialization>
</QueryRequest>
I följande tabell beskrivs elementen i begärandetexten:
Elementnamn | Beskrivning |
---|---|
QueryRequest |
Krävs. Grupper uppsättningen frågebegäransinställningar. |
QueryType |
Krävs. Anger typen av det angivna frågeuttrycket. Det enda giltiga värdet för den aktuella versionen är SQL . |
Expression |
Krävs. Anger frågeuttrycket i SQL. Den maximala storleken för frågeuttrycket är 256 KiB. Mer information om uttryckssyntaxen finns i Frågeacceleration: SQL-språkreferens. |
InputSerialization |
Valfritt. Grupper inställningarna för indataserialisering av blobinnehållet. Om den inte anges används den avgränsade textkonfigurationen. |
Format |
Krävs om InputSerialization anges. Grupper inställningarna för formatet för blobdata. |
Type |
Krävs om InputSerialization anges. Anger formattypen. Giltiga värden är delimited , csv och json . |
DelimitedTextConfiguration |
Valfritt. Grupper de inställningar som används för att tolka blobdata om bloben är formaterad med avgränsad text. |
ColumnSeparator |
Valfritt. Anger strängen som används för att avgränsa kolumner. |
FieldQuote |
Valfritt. Anger strängen som används för att citera ett visst fält. |
RecordSeparator |
Valfritt. Anger strängen som används för att avgränsa poster. |
EscapeChar |
Valfritt. Anger strängen som används som escape-tecken. |
HasHeaders |
Valfritt. Anger ett booleskt värde som representerar om data har rubriker. |
JsonTextConfiguration |
Valfritt. Grupper de inställningar som används för att tolka blobdata om bloben är JSON-formaterad. |
RecordSeparator |
Valfritt. Anger strängen som används för att avgränsa poster. |
OutputSerialization |
Valfritt. Anger serialiseringsformatet för det filtrerade innehållet i bloben som returneras i svaret. Om den inte anges används den avgränsade textkonfigurationen. |
Format |
Krävs om OutputSerialization anges. Grupper inställningarna för formatet för det returnerade svaret. |
Type |
Krävs om OutputSerialization anges. Anger formattypen. Giltiga värden är delimited , csv , json och arrow . |
DelimitedTextConfiguration |
Valfritt. Grupper de inställningar som används för att formatera svaret om svaret ska formateras med avgränsad text. |
ColumnSeparator |
Valfritt. Anger strängen som används för att avgränsa kolumner. |
FieldQuote |
Valfritt. Anger strängen som används för att citera ett visst fält. |
RecordSeparator |
Valfritt. Anger strängen som används för att avgränsa poster. |
EscapeChar |
Valfritt. Anger strängen som används som escape-tecken. |
HasHeaders |
Valfritt. Anger ett booleskt värde som representerar om data har rubriker. |
JsonTextConfiguration |
Valfritt. Grupper de inställningar som används för att formatera svaret om svaret ska vara JSON-formaterat. |
RecordSeparator |
Valfritt. Anger strängen som används för att avgränsa poster. |
ArrowConfiguration |
Valfritt. Grupper de inställningar som används för att formatera svaret om svaret ska vara pilformaterat. |
Schema |
Krävs om ArrowConfiguration anges. Grupper inställningarna för schemat för det returnerade pilsvaret. |
Field |
Valfritt. Grupper inställningar för ett visst fält. |
Type |
Krävs om Field anges. Anger fälttypen. Giltiga värden är Int , Float , Decimal och Bool . |
Precision |
Valfritt. Anger precisionen för fältet. |
Scale |
Valfritt. Anger skalan för fältet. |
Svarsåtgärder
Svaret innehåller en HTTP-statuskod, en uppsättning svarshuvuden och svarstexten. Svarstexten är i binärt Avro-format. Eftersom svarsinnehållets längd är okänd strömmas svaret med segmenterad kodning.
Statuskod
Om frågebegäran är väl utformad och auktoriserad returnerar åtgärden statuskoden 202 (godkänd). Eventuella fel eller förloppsmeddelanden som påträffas under svarsströmningen returneras som en del av svarstexten.
Information om statuskoder finns i Status och felkoder.
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.
Syntax | Description |
---|---|
Last-Modified |
Anger datum/tid då bloben senast ändrades. Datumformatet följer RFC 1123. Alla åtgärder som ändrar bloben, inklusive en uppdatering av blobens metadata eller egenskaper, ändrar blobens senast ändrade tid. |
Content-Type |
Anger i vilket format resultaten returneras. För närvarande är avro/binary det här värdet . |
ETag |
Innehåller ett värde som du kan använda för att utföra åtgärder villkorligt. Mer information finns i Ange villkorsstyrda rubriker för Blob Storage-åtgärder. Om begärandeversionen är 2011-08-18 eller senare ETag är värdet inom citattecken. |
Content-Encoding |
Returnerar värdet som angavs för begärandehuvudet Content-Encoding . |
Content-Language |
Returnerar värdet som angavs för begärandehuvudet Content-Language . |
Cache-Control |
Returnerades om det här huvudet tidigare angavs för bloben. |
Content-Disposition |
Returneras för begäranden mot version 2013-08-15 och senare. Den här rubriken returnerar det värde som angavs för x-ms-blob-content-disposition rubriken.Fältet Content-Disposition för svarshuvud förmedlar ytterligare information om hur du bearbetar svarsnyttolasten. Du kan också använda fältet för svarshuvud för att bifoga ytterligare metadata. Om till exempel fältet för svarshuvud är inställt attachment på ska användaragenten inte visa svaret. I stället bör dialogrutan Spara som visas med ett annat filnamn än det angivna blobnamnet. |
x-ms-blob-type: <BlockBlob> |
Returnerar blobens typ. |
x-ms-request-id |
Identifierar begäran som gjordes unikt. 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 Azure Blob Storage som används för att köra begäran. Ingår för begäranden som görs med version 2009-09-19 och senare. Det här huvudet returneras också för anonyma begäranden utan en angiven version, om containern har markerats för offentlig åtkomst med hjälp av 2009-09-19-versionen av Blob Storage. |
Date |
Ett datum-/tidsvärde för UTC som anger den tid då tjänsten skickade svaret. |
Access-Control-Allow-Origin |
Returneras om begäran innehåller ett Origin huvud och CORS är aktiverat med en matchande regel. Den här rubriken returnerar värdet för ursprungsbegärandehuvudet vid en matchning. |
Access-Control-Expose-Headers |
Returneras om begäran innehåller ett Origin huvud och CORS är aktiverat med en matchande regel. Det här huvudet returnerar listan med svarshuvuden som ska exponeras för klienten eller utfärdaren av begäran. |
Vary |
Returneras med värdet för Origin rubriken när CORS-regler anges. Mer information finns i CORS-stöd för Azure Storage. |
Access-Control-Allow-Credentials |
Returneras om begäran innehåller ett Origin huvud och CORS är aktiverat med en matchande regel som inte tillåter alla ursprung. Det här huvudet är inställt på true . |
x-ms-blob-committed-block-count |
Anger antalet bekräftade block som finns i bloben. Det här huvudet returneras endast för tilläggsblobar. |
x-ms-server-encrypted: true/false |
Version 2015-12-11 eller senare. Värdet för den här rubriken anges till true om blobdata och programmetadata är helt krypterade via den angivna algoritmen. När bloben är okrypterad, eller om endast delar av blob-/programmetadata krypteras, anges värdet till false . |
Själva svaret
Svarstexten innehåller det filtrerade innehållet i bloben som skickas som en serie meddelanden i binärt Avro-format. Den använder följande schema:
{
"type": "record",
"name": "com.microsoft.azure.storage.queryBlobContents.resultData",
"doc": "Holds result data in the format specified for this query (CSV, JSON, etc.).",
"fields": [
{
"name": "data",
"type": "bytes"
}
]
},
{
"type": "record",
"name": "com.microsoft.azure.storage.queryBlobContents.error",
"doc": "An error that occurred while processing the query.",
"fields": [
{
"name": "fatal",
"type": "boolean",
"doc": "If true, this error prevents further query processing. More result data may be returned, but there is no guarantee that all of the original data will be processed. If false, this error does not prevent further query processing."
},
{
"name": "name",
"type": "string",
"doc": "The name of the error"
},
{
"name": "description",
"type": "string",
"doc": "A description of the error"
},
{
"name": "position",
"type": "long",
"doc": "The blob offset at which the error occurred"
}
]
},
{
"type": "record",
"name": "com.microsoft.azure.storage.queryBlobContents.progress",
"doc": "Information about the progress of the query",
"fields": [
{
"name": "bytesScanned",
"type": "long",
"doc": "The number of bytes that have been scanned"
},
{
"name": "totalBytes",
"type": "long",
"doc": "The total number of bytes to be scanned in this query"
}
]
},
{
"type": "record",
"name": "com.microsoft.azure.storage.queryBlobContents.end",
"doc": "Sent as the final message of the response, indicating that all results have been sent.",
"fields": [
{
"name": "totalBytes",
"type": "long",
"doc": "The total number of bytes to be scanned in this query"
}
]
}
]
Exempelsvar
"StatusCode": 200,
"ResponseHeaders": {
"Content-Type": "avro/binary",
"Date": "Fri, 24 Apr 2020 20:25:42 GMT",
"ETag": "\u00220x8D7E88DA9C0A75B\u0022",
"Last-Modified": "Fri, 24 Apr 2020 20:25:43 GMT",
"Transfer-Encoding": "chunked",
"x-ms-blob-type": "BlockBlob",
"x-ms-client-request-id": "f6d1983c-55e5-9f95-6d3d-80d74862d99e",
"x-ms-creation-time": "Fri, 24 Apr 2020 20:25:43 GMT",
"x-ms-lease-state": "available",
"x-ms-lease-status": "unlocked",
"x-ms-request-id": "46c09ab1-b01e-0001-1076-1acef2000000",
"x-ms-version": "2019-12-12"
},
"ResponseBody":{...}
Auktorisering
Auktorisering krävs när du anropar en dataåtkomståtgärd i Azure Storage. Du kan auktorisera åtgärden enligt beskrivningen Query Blob Contents
nedan.
Viktigt
Microsoft rekommenderar att du använder Microsoft Entra ID med hanterade identiteter för att auktorisera begäranden till Azure Storage. Microsoft Entra ID ger överlägsen säkerhet och användarvänlighet jämfört med auktorisering med delad nyckel.
Azure Storage stöder användning av Microsoft Entra ID för att auktorisera begäranden till blobdata. Med Microsoft Entra ID kan du använda rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att bevilja behörigheter till ett säkerhetsobjekt. Säkerhetsobjektet kan vara en användare, grupp, programtjänstens huvudnamn eller en hanterad Azure-identitet. Säkerhetsobjektet autentiseras av Microsoft Entra ID för att returnera en OAuth 2.0-token. Token kan sedan användas för att auktorisera en begäran mot Blob-tjänsten.
Mer information om auktorisering med Microsoft Entra ID finns i Auktorisera åtkomst till blobar med hjälp av Microsoft Entra ID.
Behörigheter
Nedan visas den RBAC-åtgärd som krävs för att en Microsoft Entra användare, grupp, hanterad identitet eller tjänstens huvudnamn ska anropa Query Blob Contents
åtgärden och den minst privilegierade inbyggda Azure RBAC-rollen som innehåller den här åtgärden:
- Azure RBAC-åtgärd:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Minsta privilegierade inbyggda roll:Storage Blob Data Reader
Mer information om hur du tilldelar roller med hjälp av Azure RBAC finns i Tilldela en Azure-roll för åtkomst till blobdata.
Kommentarer
- Åtgärden
Query Blob Contents
stöds endast för enBlockBlob
typ. - Det går inte att köra frågor mot innehållet i en blob som är krypterad med nycklar som tillhandahålls av kunden i den här versionen av API:et.
- Den här åtgärden stöds inte på blobar i konton som har infrastrukturkryptering aktiverat.
- Huvudet
x-ms-version
krävs för att hämta en blob som tillhör en privat container. Om bloben tillhör en container som är tillgänglig för fullständig eller partiell offentlig åtkomst kan alla klienter läsa den utan att ange en version. Tjänstversionen krävs inte för att hämta en blob som tillhör en offentlig container. Mer information finns i Begränsa åtkomsten till containrar och blobar. - Du kan använda åtgärden
Query Blob Contents
för att fråga endast objekt som har avgränsat/CSV- eller JSON-format.
Fakturering
Prisbegäranden kan komma från klienter som använder Blob Storage-API:er, antingen direkt via REST-API:et för Blob Storage eller från ett Azure Storage-klientbibliotek. Dessa begäranden ackumulerar avgifter per transaktion. Typen av transaktion påverkar hur kontot debiteras. Lästransaktioner ackumuleras till exempel till en annan faktureringskategori än skrivtransaktioner. I följande tabell visas faktureringskategorin för Query Blob Contents
begäranden baserat på lagringskontotypen:
Åtgärd | Typ av lagringskonto | Faktureringskategori |
---|---|---|
Frågeblobinnehåll | Premium-blockblob Standard generell användning v2 |
Läsåtgärder1 |
1Förutom en läskostnad debiteras kontot för frågeacceleration – genomsökt data och frågeacceleration – Data returnerade transaktionskategorier . Priser för dessa kategorier visas på sidan Azure Data Lake Storage prissättning.
Se även
Auktorisera begäranden till AzureStorage-status och felkoderBlob Storage-felkoderAnge tidsgränser för Blob Storage-åtgärderFrågeacceleration: SQL-språkreferens