Dotaz na obsah objektu blob
Operace Query Blob Contents
použije jednoduchý příkaz jazyk SQL (Structured Query Language) (SQL) na obsah objektu blob a vrátí pouze dotazovanou podmnožinu dat. Můžete také volat Query Blob Contents
dotaz na obsah verze nebo snímku.
Žádost
Požadavek můžete sestavit Query Blob Contents
následujícím způsobem. Doporučujeme HTTPS. Nahraďte myaccount názvem vašeho účtu úložiště.
Identifikátor URI požadavku metody POST | Verze PROTOKOLU HTTP |
---|---|
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 |
Parametry identifikátoru URI
V identifikátoru URI požadavku můžete zadat následující další parametry:
Parametr | Popis |
---|---|
snapshot |
Nepovinný parametr. Parametr snapshot je neprůselná DateTime hodnota. Když je k dispozici, určuje snímek objektu blob, který se má dotazovat. Další informace o práci se snímky objektů blob najdete v tématu Create snímek objektu blob. |
versionid |
Volitelné, verze 2019-12-12 a novější. Parametr versionid je neprůžná DateTime hodnota. Když je k dispozici, určuje verzi objektu blob, který se má načíst. |
timeout |
Nepovinný parametr. Parametr se timeout vyjadřuje v sekundách. Další informace najdete v tématu Nastavení časových limitů pro operace služby Blob Storage. |
Hlavičky požadavku
Následující tabulka popisuje požadované a volitelné hlavičky požadavků:
Hlavička požadavku | Popis |
---|---|
Authorization |
Povinná hodnota. Určuje schéma ověřování, název účtu a podpis. Další informace najdete v tématu Autorizace požadavků do služby Azure Storage. |
Date nebo x-ms-date |
Povinná hodnota. Určuje formát UTC (Coordinated Universal Time). Další informace najdete v tématu Autorizace požadavků do služby Azure Storage. |
x-ms-version |
Povinné pro všechny ověřené požadavky, volitelné pro anonymní požadavky. Určuje verzi operace, která se má pro tento požadavek použít. Další informace najdete v tématu Správa verzí pro služby Azure Storage. |
Content-Type |
Povinná hodnota. Hodnota této hlavičky by měla být application/xml; charset=UTF-8 . |
x-ms-lease-id:<ID> |
Nepovinný parametr. Pokud je zadána tato hlavička, bude operace provedena pouze v případě, že jsou splněny obě následující podmínky: – Zapůjčení objektu blob je aktuálně aktivní. – ID zapůjčení zadané v požadavku odpovídá ID objektu blob. Pokud je tato hlavička zadána a nejsou splněny obě tyto podmínky, požadavek selže a Query Blob Contents operace selže se stavovým kódem 412 (Předběžná podmínka selhala). |
Origin |
Nepovinný parametr. Určuje původ, ze kterého je žádost vystavena. Přítomnost této hlavičky má za následek hlavičky SDÍLENÍ prostředků mezi zdroji (CORS) v odpovědi. |
x-ms-client-request-id |
Nepovinný parametr. Poskytuje klientem vygenerovanou neprůselnou hodnotu s limitem počtu znaků 1 kibibajt (KiB), který je zaznamenán v protokolech při konfiguraci protokolování. Důrazně doporučujeme použít tuto hlavičku ke korelaci aktivit na straně klienta s požadavky, které server přijímá. |
Tato operace také podporuje použití podmíněných hlaviček k dotazování na obsah objektů blob pouze v případě, že je splněna zadaná podmínka. Další informace najdete v tématu Určení podmíněných hlaviček pro operace služby Blob Storage.
Text požadavku
Text požadavku pro tuto verzi Query Blob Contents
používá následující formát XML:
<?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>
Následující tabulka popisuje prvky textu požadavku:
Název elementu | Popis |
---|---|
QueryRequest |
Povinná hodnota. Skupiny sadu nastavení požadavků dotazu. |
QueryType |
Povinná hodnota. Označuje typ zadaného výrazu dotazu. Jediná platná hodnota pro aktuální verzi je SQL . |
Expression |
Povinná hodnota. Označuje výraz dotazu v SQL. Maximální velikost výrazu dotazu je 256 KiB. Další informace o syntaxi výrazů najdete v tématu Zrychlení dotazů: Referenční informace k jazyku SQL. |
InputSerialization |
Nepovinný parametr. Skupiny nastavení týkající se vstupní serializace obsahu objektu blob. Pokud není zadaný, použije se konfigurace textu s oddělovači. |
Format |
Povinné, pokud InputSerialization je zadána hodnota . Skupiny nastavení týkající se formátu dat objektů blob. |
Type |
Povinné, pokud InputSerialization je zadána hodnota . Označuje typ formátu. Platné hodnoty jsou delimited , csv a json . |
DelimitedTextConfiguration |
Nepovinný parametr. Skupiny nastavení, která se používají k interpretaci dat objektů blob, pokud je objekt blob naformátovaný textem s oddělovači. |
ColumnSeparator |
Nepovinný parametr. Označuje řetězec, který se používá k oddělení sloupců. |
FieldQuote |
Nepovinný parametr. Označuje řetězec, který se používá k uvozovce konkrétního pole. |
RecordSeparator |
Nepovinný parametr. Označuje řetězec, který se používá k oddělení záznamů. |
EscapeChar |
Nepovinný parametr. Označuje řetězec, který se používá jako řídicí znak. |
HasHeaders |
Nepovinný parametr. Určuje logickou hodnotu, která představuje, jestli data obsahují hlavičky. |
JsonTextConfiguration |
Nepovinný parametr. Skupiny nastavení, která se použijí k interpretaci dat objektů blob, pokud je objekt blob ve formátu JSON. |
RecordSeparator |
Nepovinný parametr. Označuje řetězec, který se používá k oddělení záznamů. |
OutputSerialization |
Nepovinný parametr. Označuje formát serializace filtrovaného obsahu objektu blob vráceného v odpovědi. Pokud není zadaný, použije se konfigurace textu s oddělovači. |
Format |
Povinné, pokud OutputSerialization je zadána hodnota . Skupiny nastavení týkající se formátu vrácené odpovědi. |
Type |
Povinné, pokud OutputSerialization je zadána hodnota . Označuje typ formátu. Platné hodnoty jsou delimited , csv , json nebo arrow . |
DelimitedTextConfiguration |
Nepovinný parametr. Skupiny nastavení, která se používají k formátování odpovědi, pokud má být odpověď formátovaná textem s oddělovači. |
ColumnSeparator |
Nepovinný parametr. Označuje řetězec, který se používá k oddělení sloupců. |
FieldQuote |
Nepovinný parametr. Označuje řetězec, který se používá k uvozovce konkrétního pole. |
RecordSeparator |
Nepovinný parametr. Označuje řetězec, který se používá k oddělení záznamů. |
EscapeChar |
Nepovinný parametr. Označuje řetězec, který se používá jako řídicí znak. |
HasHeaders |
Nepovinný parametr. Určuje logickou hodnotu, která představuje, jestli data obsahují hlavičky. |
JsonTextConfiguration |
Nepovinný parametr. pokud má být odpověď ve formátu JSON, Skupiny nastavení, která se použijí k formátování odpovědi. |
RecordSeparator |
Nepovinný parametr. Označuje řetězec, který se používá k oddělení záznamů. |
ArrowConfiguration |
Nepovinný parametr. pokud má být odpověď naformátovaná šipkou, Skupiny nastavení, která se používají k formátování odpovědi. |
Schema |
Povinné, pokud ArrowConfiguration je zadána hodnota . Skupiny nastavení týkající se schématu vrácené odpovědi šipky. |
Field |
Nepovinný parametr. Skupiny nastavení týkající se konkrétního pole. |
Type |
Povinné, pokud Field je zadána hodnota . Označuje typ pole. Platné hodnoty jsou Int , Float , Decimal nebo Bool . |
Precision |
Nepovinný parametr. Označuje přesnost pole. |
Scale |
Nepovinný parametr. Označuje měřítko pole. |
Odpověď
Odpověď obsahuje stavový kód HTTP, sadu hlaviček odpovědi a tělo odpovědi. Text odpovědi je v binárním formátu Avro. Vzhledem k tomu, že délka obsahu odpovědi je neznámá, odpověď se streamuje s blokovým kódováním.
Stavový kód
Pokud je požadavek dotazu ve správném formátu a autorizován, operace vrátí stavový kód 202 (přijato). Všechny chyby nebo zprávy o průběhu, ke kterým došlo během streamování odpovědí, se vrátí jako součást textu odpovědi.
Informace o stavových kódech najdete v tématu Stavové kódy a kódy chyb.
Hlavičky odpovědi
Odpověď na tuto operaci obsahuje následující hlavičky. Odpověď může také obsahovat další standardní hlavičky HTTP. Všechny standardní hlavičky odpovídají specifikaci protokolu HTTP/1.1.
Syntax | Description |
---|---|
Last-Modified |
Označuje datum a čas poslední změny objektu blob. Formát data odpovídá dokumentu RFC 1123. Každá operace, která změní objekt blob, včetně aktualizace metadat nebo vlastností objektu blob, změní čas poslední změny objektu blob. |
Content-Type |
Určuje formát, ve kterém jsou výsledky vráceny. V současné době je avro/binary tato hodnota . |
ETag |
Obsahuje hodnotu, kterou můžete použít k podmíněnému provádění operací. Další informace najdete v tématu Určení podmíněných hlaviček pro operace služby Blob Storage. Pokud je verze požadavku 2011-08-18 nebo novější, ETag hodnota je v uvozovkách. |
Content-Encoding |
Vrátí hodnotu, která byla zadána pro hlavičku Content-Encoding požadavku. |
Content-Language |
Vrátí hodnotu, která byla zadána pro hlavičku Content-Language požadavku. |
Cache-Control |
Vrátí se, pokud byla pro objekt blob dříve zadána tato hlavička. |
Content-Disposition |
Vráceno pro požadavky na verzi 2013-08-15 a novější. Tato hlavička vrátí hodnotu, která byla zadána pro hlavičku x-ms-blob-content-disposition .Pole Content-Disposition hlavičky odpovědi sděluje další informace o tom, jak zpracovat datovou část odpovědi. K připojení dalších metadat můžete také použít pole hlavičky odpovědi. Pokud je například pole hlavičky odpovědi nastavené na attachment hodnotu , uživatelský agent by neměl odpověď zobrazovat. Místo toho by se mělo zobrazit dialogové okno Uložit jako s jiným názvem souboru, než je zadaný název objektu blob. |
x-ms-blob-type: <BlockBlob> |
Vrátí typ objektu blob. |
x-ms-request-id |
Jednoznačně identifikuje požadavek, který byl proveden. Můžete ho použít k řešení potíží s požadavkem. Další informace najdete v tématu Řešení potíží s operacemi rozhraní API. |
x-ms-version |
Označuje verzi Azure Blob Storage, která se používá ke spuštění požadavku. Zahrnuté pro požadavky vytvořené pomocí verze 2009-09-19 a novější. Tato hlavička se vrátí také pro anonymní požadavky bez zadané verze, pokud byl kontejner označen pro veřejný přístup pomocí verze 2009-09-19 služby Blob Storage. |
Date |
Hodnota data a času UTC, která určuje čas, kdy služba odeslala odpověď. |
Access-Control-Allow-Origin |
Vrátí se, pokud požadavek obsahuje hlavičku Origin a CORS je povolený s odpovídajícím pravidlem. Tato hlavička vrátí hodnotu hlavičky požadavku původu v případě shody. |
Access-Control-Expose-Headers |
Vrátí se, pokud požadavek obsahuje hlavičku Origin a CORS je povolený s odpovídajícím pravidlem. Tato hlavička vrátí seznam hlaviček odpovědi, které budou zpřístupněny klientovi nebo vystaviteli požadavku. |
Vary |
Vrátí se s hodnotou hlavičky Origin při zadání pravidel CORS. Podrobnosti najdete v tématu Podpora CORS pro Azure Storage. |
Access-Control-Allow-Credentials |
Vrátí se, pokud požadavek obsahuje hlavičku Origin a CORS je povolené s odpovídajícím pravidlem, které nepovoluje všechny zdroje. Tato hlavička je nastavená na true . |
x-ms-blob-committed-block-count |
Určuje počet potvrzených bloků v objektu blob. Tato hlavička se vrátí jenom pro doplňovací objekty blob. |
x-ms-server-encrypted: true/false |
Verze 2015-12-11 nebo novější. Hodnota této hlavičky se nastaví na , true pokud jsou data objektů blob a metadata aplikace zcela zašifrovaná prostřednictvím zadaného algoritmu. Pokud je objekt blob nešifrovaný nebo pokud jsou zašifrované jenom části metadat objektu blob nebo aplikace, nastaví se hodnota na false . |
Text odpovědi
Tělo odpovědi obsahuje filtrovaný obsah objektu blob odeslaného jako řada zpráv v binárním formátu Avro. Používá následující schéma:
{
"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"
}
]
}
]
Ukázková odpověď
"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":{...}
Autorizace
Autorizace se vyžaduje při volání jakékoli operace přístupu k datům ve službě Azure Storage. Operaci můžete autorizovat Query Blob Contents
, jak je popsáno níže.
Důležité
Microsoft doporučuje používat Microsoft Entra ID se spravovanými identitami k autorizaci požadavků do služby Azure Storage. Microsoft Entra ID poskytuje v porovnání s autorizací pomocí sdíleného klíče vynikající zabezpečení a snadné použití.
Azure Storage podporuje autorizaci požadavků na data objektů blob pomocí Microsoft Entra ID. S Microsoft Entra ID můžete pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělit oprávnění k objektu zabezpečení. Objektem zabezpečení může být uživatel, skupina, instanční objekt aplikace nebo spravovaná identita Azure. Objekt zabezpečení ověří Microsoft Entra ID, aby vrátil token OAuth 2.0. Token se pak dá použít k autorizaci požadavku na službu Blob Service.
Další informace o autorizaci pomocí Microsoft Entra ID najdete v tématu Autorizace přístupu k objektům blob pomocí Microsoft Entra ID.
Oprávnění
Níže jsou uvedené akce RBAC potřebné k volání operace Microsoft Entra uživatele, skupiny, spravované identity nebo instančního objektu Query Blob Contents
a nejméně privilegované integrované role Azure RBAC, která zahrnuje tuto akci:
- Akce Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Nejméně privilegovaná předdefinovaná role:Čtenář dat objektů blob služby Storage
Další informace o přiřazování rolí pomocí Azure RBAC najdete v tématu Přiřazení role Azure pro přístup k datům objektů blob.
Poznámky
- Operace
Query Blob Contents
je podporována pouze u typuBlockBlob
. - Tato verze rozhraní API nepodporuje dotazování na obsah objektu blob, který je šifrovaný pomocí klíčů poskytnutých zákazníkem.
- Tato operace se nepodporuje u objektů blob v účtech s povoleným šifrováním infrastruktury .
- Hlavička
x-ms-version
se vyžaduje k načtení objektu blob, který patří do privátního kontejneru. Pokud objekt blob patří do kontejneru, který je k dispozici pro úplný nebo částečný veřejný přístup, může si ho každý klient přečíst bez zadání verze. Verze služby se nevyžaduje pro načtení objektu blob, který patří do veřejného kontejneru. Další informace najdete v tématu Omezení přístupu ke kontejnerům a objektům blob. - Operaci můžete použít
Query Blob Contents
k dotazování pouze na objekty, které mají formát s oddělovači/CSV nebo JSON.
Fakturace
Žádosti o ceny můžou pocházet od klientů, kteří používají rozhraní BLOB Storage API, a to buď přímo prostřednictvím rozhraní REST API služby Blob Storage, nebo z klientské knihovny Služby Azure Storage. Tyto požadavky načítají poplatky za transakci. Typ transakce ovlivňuje způsob účtování poplatku za účet. Například transakce čtení se načítají do jiné kategorie fakturace než transakce zápisu. Následující tabulka ukazuje kategorii fakturace pro Query Blob Contents
žádosti založené na typu účtu úložiště:
Operace | Typ účtu úložiště | Kategorie fakturace |
---|---|---|
Dotazování na obsah objektů blob | Objekt blob bloku úrovně Premium Standard pro obecné účely v2 |
Operace čtení1 |
1Kromě poplatku za čtení se účtu účtují poplatky za kategorie Transakce Zrychlení dotazů – Kontrola dat a Akcelerace dotazů – Vrácená data . Ceny pro tyto kategorie se zobrazí na stránce s cenami Azure Data Lake Storage.
Viz také
Autorizace požadavků na stav služby Azure Storagea kódy chybSlužby Blob Storage Kódy chybNastavení časových limitů pro operace služby Blob Storage– Akcelerace dotazů: Referenční informace k jazyku SQL