Wykonywanie zapytań o zawartość obiektu blob
Operacja Query Blob Contents
stosuje prostą instrukcję Structured Query Language (SQL) w zawartości obiektu blob i zwraca tylko badany podzestaw danych. Możesz również wywołać metodę Query Blob Contents
, aby wykonać zapytanie dotyczące zawartości wersji lub migawki.
Żądanie
Żądanie można skonstruować Query Blob Contents
w następujący sposób. Zalecamy użycie protokołu HTTPS. Zastąp ciąg myaccount nazwą konta magazynu.
Identyfikator URI żądania POST | Wersja PROTOKOŁU 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 identyfikatora URI
Dla identyfikatora URI żądania można określić następujące dodatkowe parametry:
Parametr | Opis |
---|---|
snapshot |
Opcjonalny. Parametr migawki jest nieprzezroczystą DateTime wartością. Gdy jest obecny, określa migawkę obiektu blob do wykonywania zapytań. Aby uzyskać więcej informacji na temat pracy z migawkami obiektów blob, zobacz Twórca migawkę obiektu blob. |
versionid |
Opcjonalnie, wersja 2019-12-12 lub nowsza. Parametr versionid jest nieprzezroczystą DateTime wartością. Gdy jest obecny, określa wersję obiektu blob do pobrania. |
timeout |
Opcjonalny. Parametr jest wyrażony timeout w sekundach. Aby uzyskać więcej informacji, zobacz Ustawianie limitów czasu dla operacji usługi Blob Storage. |
Nagłówki żądań
W poniższej tabeli opisano wymagane i opcjonalne nagłówki żądań:
Nagłówek żądania | Opis |
---|---|
Authorization |
Wymagane. Określa schemat uwierzytelniania, nazwę konta i podpis. Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage. |
Date lub x-ms-date |
Wymagane. Określa dla żądania godzinę w formacie uniwersalnego czasu koordynowanego (UTC). Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage. |
x-ms-version |
Wymagane dla wszystkich uwierzytelnionych żądań, opcjonalnie dla żądań anonimowych. Określa wersję operacji do użycia dla tego żądania. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji dla usług Azure Storage. |
Content-Type |
Wymagane. Wartość tego nagłówka powinna mieć wartość application/xml; charset=UTF-8 . |
x-ms-lease-id:<ID> |
Opcjonalny. Jeśli ten nagłówek zostanie określony, operacja zostanie wykonana tylko wtedy, gdy zostaną spełnione oba z następujących warunków: — Dzierżawa obiektu blob jest obecnie aktywna. — Identyfikator dzierżawy określony w żądaniu jest zgodny z identyfikatorem obiektu blob. Jeśli ten nagłówek zostanie określony i oba te warunki nie zostaną spełnione, żądanie zakończy się niepowodzeniem, a Query Blob Contents operacja zakończy się niepowodzeniem z kodem stanu 412 (Niepowodzenie warunku wstępnego). |
Origin |
Opcjonalny. Określa źródło, z którego jest wystawiane żądanie. Obecność tego nagłówka powoduje, że nagłówki współużytkowania zasobów między źródłami (CORS) w odpowiedzi. |
x-ms-client-request-id |
Opcjonalny. Zapewnia nieprzezroczystą wartość wygenerowaną przez klienta z limitem znaków 1-kibibyte (KiB) rejestrowanym w dziennikach podczas konfigurowania rejestrowania. Zdecydowanie zalecamy używanie tego nagłówka do korelowania działań po stronie klienta z żądaniami odbieranymi przez serwer. |
Ta operacja obsługuje również używanie nagłówków warunkowych do wykonywania zapytań dotyczących zawartości obiektu blob tylko w przypadku spełnienia określonego warunku. Aby uzyskać więcej informacji, zobacz Określanie nagłówków warunkowych dla operacji usługi Blob Storage.
Treść żądania
Treść żądania dla tej wersji programu używa następującego Query Blob Contents
formatu 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>
W poniższej tabeli opisano elementy treści żądania:
Nazwa elementu | Opis |
---|---|
QueryRequest |
Wymagane. Grupy zestaw ustawień żądania zapytania. |
QueryType |
Wymagane. Wskazuje typ podanego wyrażenia zapytania. Jedyną prawidłową wartością dla bieżącej wersji jest SQL . |
Expression |
Wymagane. Wskazuje wyrażenie zapytania w języku SQL. Maksymalny rozmiar wyrażenia zapytania to 256 KiB. Aby uzyskać więcej informacji na temat składni wyrażeń, zobacz Przyspieszanie zapytań: dokumentacja języka SQL. |
InputSerialization |
Opcjonalny. Grupy ustawienia dotyczące serializacji wejściowej zawartości obiektu blob. Jeśli nie zostanie określona, zostanie użyta konfiguracja tekstu rozdzielanego. |
Format |
Wymagane, jeśli InputSerialization jest określony. Grupy ustawienia dotyczące formatu danych obiektu blob. |
Type |
Wymagane, jeśli InputSerialization jest określony. Wskazuje typ formatu. Prawidłowe wartości to delimited , csv i json . |
DelimitedTextConfiguration |
Opcjonalny. Grupy ustawienia używane do interpretowania danych obiektu blob, jeśli obiekt blob jest sformatowany przy użyciu tekstu rozdzielanego. |
ColumnSeparator |
Opcjonalny. Wskazuje ciąg używany do oddzielania kolumn. |
FieldQuote |
Opcjonalny. Wskazuje ciąg używany do cytowania określonego pola. |
RecordSeparator |
Opcjonalny. Wskazuje ciąg używany do oddzielania rekordów. |
EscapeChar |
Opcjonalny. Wskazuje ciąg, który jest używany jako znak ucieczki. |
HasHeaders |
Opcjonalny. Określa wartość logiczną, która reprezentuje, czy dane mają nagłówki. |
JsonTextConfiguration |
Opcjonalny. Grupy ustawienia używane do interpretowania danych obiektu blob, jeśli obiekt blob jest sformatowany w formacie JSON. |
RecordSeparator |
Opcjonalny. Wskazuje ciąg używany do oddzielania rekordów. |
OutputSerialization |
Opcjonalny. Wskazuje format serializacji przefiltrowanej zawartości obiektu blob zwróconego w odpowiedzi. Jeśli nie zostanie określona, zostanie użyta konfiguracja tekstu rozdzielanego. |
Format |
Wymagane, jeśli OutputSerialization jest określony. Grupy ustawienia dotyczące formatu zwróconej odpowiedzi. |
Type |
Wymagane, jeśli OutputSerialization jest określony. Wskazuje typ formatu. Prawidłowe wartości to delimited , csv , json i arrow . |
DelimitedTextConfiguration |
Opcjonalny. Grupy ustawienia używane do formatowania odpowiedzi, jeśli odpowiedź powinna być sformatowana z tekstem rozdzielonym. |
ColumnSeparator |
Opcjonalny. Wskazuje ciąg używany do oddzielenia kolumn. |
FieldQuote |
Opcjonalny. Wskazuje ciąg używany do cytowania określonego pola. |
RecordSeparator |
Opcjonalny. Wskazuje ciąg używany do oddzielania rekordów. |
EscapeChar |
Opcjonalny. Wskazuje ciąg, który jest używany jako znak ucieczki. |
HasHeaders |
Opcjonalny. Określa wartość logiczną, która reprezentuje, czy dane mają nagłówki. |
JsonTextConfiguration |
Opcjonalny. Grupy ustawienia używane do formatowania odpowiedzi, jeśli odpowiedź powinna być sformatowana w formacie JSON. |
RecordSeparator |
Opcjonalny. Wskazuje ciąg używany do oddzielania rekordów. |
ArrowConfiguration |
Opcjonalny. Grupy ustawienia używane do formatowania odpowiedzi, jeśli odpowiedź powinna być sformatowana. |
Schema |
Wymagana, jeśli ArrowConfiguration jest określona. Grupy ustawienia dotyczące schematu zwróconej odpowiedzi strzałki. |
Field |
Opcjonalny. Grupy ustawienia dotyczące określonego pola. |
Type |
Wymagana, jeśli Field jest określona. Wskazuje typ pola. Prawidłowe wartości to Int , Float , Decimal i Bool . |
Precision |
Opcjonalny. Wskazuje dokładność pola. |
Scale |
Opcjonalny. Wskazuje skalę pola. |
Reakcja
Odpowiedź zawiera kod stanu HTTP, zestaw nagłówków odpowiedzi i treść odpowiedzi. Treść odpowiedzi jest w formacie binarnym Avro. Ponieważ długość zawartości odpowiedzi jest nieznana, odpowiedź jest przesyłana strumieniowo przy użyciu kodowania fragmentowanego.
Kod stanu
Jeśli żądanie zapytania jest poprawnie sformułowane i autoryzowane, operacja zwraca kod stanu 202 (Zaakceptowane). Wszelkie błędy lub komunikaty postępu napotkane podczas przesyłania strumieniowego odpowiedzi zostaną zwrócone jako część treści odpowiedzi.
Aby uzyskać informacje o kodach stanu, zobacz Stan i kody błędów.
Nagłówki odpowiedzi
Odpowiedź na tę operację zawiera następujące nagłówki. Odpowiedź może również zawierać dodatkowe standardowe nagłówki HTTP. Wszystkie nagłówki standardowe są zgodne ze specyfikacją protokołu HTTP/1.1.
Składnia | Opis |
---|---|
Last-Modified |
Wskazuje datę/godzinę ostatniej modyfikacji obiektu blob. Format daty jest zgodny z RFC 1123. Każda operacja modyfikując obiekt blob, w tym aktualizację metadanych lub właściwości obiektu blob, zmienia czas ostatniej modyfikacji obiektu blob. |
Content-Type |
Określa format, w którym są zwracane wyniki. Obecnie ta wartość to avro/binary . |
ETag |
Zawiera wartość, której można użyć do warunkowego wykonywania operacji. Aby uzyskać więcej informacji, zobacz Określanie nagłówków warunkowych dla operacji usługi Blob Storage. Jeśli wersja żądania to 2011-08-18 lub nowsza, ETag wartość jest w cudzysłowie. |
Content-Encoding |
Zwraca wartość, która została określona dla nagłówka Content-Encoding żądania. |
Content-Language |
Zwraca wartość, która została określona dla nagłówka Content-Language żądania. |
Cache-Control |
Zwrócono, jeśli ten nagłówek został wcześniej określony dla obiektu blob. |
Content-Disposition |
Zwrócono żądania dotyczące wersji 2013-08-15 lub nowszej. Ten nagłówek zwraca wartość określoną dla nagłówka x-ms-blob-content-disposition .Pole nagłówka Content-Disposition odpowiedzi przekazuje dodatkowe informacje na temat przetwarzania ładunku odpowiedzi. Możesz również użyć pola nagłówka odpowiedzi, aby dołączyć dodatkowe metadane. Jeśli na przykład pole nagłówka odpowiedzi ma wartość attachment , agent użytkownika nie powinien wyświetlać odpowiedzi. Zamiast tego powinien zostać wyświetlone okno dialogowe Zapisz jako z nazwą pliku inną niż określona nazwa obiektu blob. |
x-ms-blob-type: <BlockBlob> |
Zwraca typ obiektu blob. |
x-ms-request-id |
Jednoznacznie identyfikuje wykonane żądanie. Można go użyć do rozwiązywania problemów z żądaniem. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z operacjami interfejsu API. |
x-ms-version |
Wskazuje wersję Azure Blob Storage, która jest używana do wykonania żądania. Dołączone do żądań wykonanych przy użyciu wersji 2009-09-19 lub nowszej. Ten nagłówek jest również zwracany dla żądań anonimowych bez określonej wersji, jeśli kontener został oznaczony do dostępu publicznego przy użyciu wersji 2009-09-19 usługi Blob Storage. |
Date |
Wartość daty/godziny UTC wskazująca godzinę, w której usługa wysłała odpowiedź. |
Access-Control-Allow-Origin |
Zwracane, jeśli żądanie zawiera Origin nagłówek i mechanizm CORS jest włączony z zgodną regułą. Ten nagłówek zwraca wartość nagłówka żądania pochodzenia w przypadku dopasowania. |
Access-Control-Expose-Headers |
Zwracane, jeśli żądanie zawiera Origin nagłówek i mechanizm CORS jest włączony z zgodną regułą. Ten nagłówek zwraca listę nagłówków odpowiedzi, które zostaną ujawnione klientowi lub wystawcy żądania. |
Vary |
Zwracana z wartością nagłówka po określeniu Origin reguł CORS. Aby uzyskać szczegółowe informacje, zobacz obsługa mechanizmu CORS dla usługi Azure Storage. |
Access-Control-Allow-Credentials |
Zwracane, jeśli żądanie zawiera Origin nagłówek i mechanizm CORS jest włączony z zgodną regułą, która nie zezwala na wszystkie źródła. Ten nagłówek ma wartość true . |
x-ms-blob-committed-block-count |
Wskazuje liczbę zatwierdzonych bloków znajdujących się w obiekcie blob. Ten nagłówek jest zwracany tylko dla uzupełnialnych obiektów blob. |
x-ms-server-encrypted: true/false |
Wersja 2015-12-11 lub nowsza. Wartość tego nagłówka jest ustawiana na true wartość , jeśli dane obiektu blob i metadane aplikacji są całkowicie szyfrowane za pośrednictwem określonego algorytmu. Gdy obiekt blob jest niezaszyfrowany lub jeśli zaszyfrowane są tylko części metadanych obiektu blob/aplikacji, wartość jest ustawiona na false wartość . |
Treść odpowiedzi
Treść odpowiedzi zawiera przefiltrowaną zawartość obiektu blob wysyłanego jako serię komunikatów w formacie binarnym Avro. Używa on następującego schematu:
{
"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"
}
]
}
]
Przykładowa odpowiedź
"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":{...}
Autoryzacja
Autoryzacja jest wymagana podczas wywoływania dowolnej operacji dostępu do danych w usłudze Azure Storage. Możesz autoryzować operację zgodnie z Query Blob Contents
poniższym opisem.
Ważne
Firma Microsoft zaleca używanie Tożsamość Microsoft Entra z tożsamościami zarządzanymi w celu autoryzowania żądań do usługi Azure Storage. Tożsamość Microsoft Entra zapewnia doskonałe zabezpieczenia i łatwość użycia w porównaniu z autoryzacją klucza współdzielonego.
Usługa Azure Storage obsługuje używanie Tożsamość Microsoft Entra do autoryzacji żądań do danych obiektów blob. Za pomocą Tożsamość Microsoft Entra możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby udzielić uprawnień podmiotowi zabezpieczeń. Podmiot zabezpieczeń może być użytkownikiem, grupą, jednostką usługi aplikacji lub tożsamością zarządzaną platformy Azure. Podmiot zabezpieczeń jest uwierzytelniany przez Tożsamość Microsoft Entra w celu zwrócenia tokenu OAuth 2.0. Token może następnie służyć do autoryzowania żądania względem usługi Blob Service.
Aby dowiedzieć się więcej na temat autoryzacji przy użyciu Tożsamość Microsoft Entra, zobacz Autoryzowanie dostępu do obiektów blob przy użyciu Tożsamość Microsoft Entra.
Uprawnienia
Poniżej przedstawiono akcję RBAC niezbędną dla użytkownika Microsoft Entra, grupy, tożsamości zarządzanej lub jednostki usługi w celu wywołania Query Blob Contents
operacji oraz najmniej uprzywilejowanej wbudowanej roli RBAC platformy Azure, która obejmuje tę akcję:
- Akcja RBAC platformy Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Najmniej uprzywilejowana wbudowana rola:Czytelnik danych obiektu blob usługi Storage
Aby dowiedzieć się więcej na temat przypisywania ról przy użyciu kontroli dostępu opartej na rolach platformy Azure, zobacz Przypisywanie roli platformy Azure w celu uzyskania dostępu do danych obiektów blob.
Uwagi
- Operacja jest obsługiwana
Query Blob Contents
BlockBlob
tylko dla typu. - Wykonywanie zapytań dotyczących zawartości obiektu blob zaszyfrowanego przy użyciu kluczy dostarczonych przez klienta nie jest obsługiwane w tej wersji interfejsu API.
- Ta operacja nie jest obsługiwana na obiektach blob na kontach z włączonym szyfrowaniem infrastruktury .
- Nagłówek
x-ms-version
jest wymagany do pobrania obiektu blob należącego do prywatnego kontenera. Jeśli obiekt blob należy do kontenera dostępnego dla pełnego lub częściowego dostępu publicznego, każdy klient może go odczytać bez określania wersji. Wersja usługi nie jest wymagana do pobierania obiektu blob należącego do kontenera publicznego. Aby uzyskać więcej informacji, zobacz artykuł Restrict access to containers and blobs (Ograniczanie dostępu do kontenerów i obiektów blob). - Za pomocą
Query Blob Contents
operacji można wykonywać zapytania dotyczące tylko obiektów, które mają rozdzielany format CSV lub JSON.
Rozliczenia
Żądania cen mogą pochodzić od klientów korzystających z interfejsów API usługi Blob Storage bezpośrednio za pośrednictwem interfejsu API REST usługi Blob Storage lub biblioteki klienta usługi Azure Storage. Te żądania naliczają opłaty za transakcję. Typ transakcji wpływa na sposób naliczania opłat za konto. Na przykład transakcje odczytu są naliczane w innej kategorii rozliczeniowej niż transakcje zapisu. W poniższej tabeli przedstawiono kategorię rozliczeń dla Query Blob Contents
żądań na podstawie typu konta magazynu:
Operacja | Typ konta magazynu | Kategoria rozliczeń |
---|---|---|
Wykonywanie zapytań o zawartość obiektu blob | Blokowy obiekt blob w warstwie Premium Standardowa ogólnego przeznaczenia, wersja 2 |
Operacje odczytu1 |
1Oprócz opłaty za odczyt na koncie są naliczane opłaty za przyspieszanie zapytań — skanowanie danych i przyspieszanie zapytań — kategorie transakcji zwróconych przez dane . Ceny dla tych kategorii są wyświetlane na stronie cennika Azure Data Lake Storage.
Zobacz też
Autoryzowanie żądań do stanu usługi Azure Storagei kodów błędów usługi Blob Storage Kody błędówUstawianie limitów czasu dla operacji usługi Blob StoragePrzyspieszanie zapytań: dokumentacja języka SQL