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 Tworzenie migawki 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. Grupuje zestaw ustawień żądania kwerendy.
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. Grupuje 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. Grupuje ustawienia dotyczące formatu danych obiektu blob.
Type Wymagane, jeśli InputSerialization jest określony. Wskazuje typ formatu. Prawidłowe wartości to delimited, csvi json.
DelimitedTextConfiguration Opcjonalny. Grupuje 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. Grupuje 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. Grupuje 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. Grupuje ustawienia, które są używane do formatowania odpowiedzi, jeśli odpowiedź powinna być sformatowana z rozdzielonym tekstem.
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. Grupuje 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. Grupuje ustawienia, które są używane do formatowania odpowiedzi, jeśli odpowiedź powinna być sformatowana strzałka.
Schema Wymagana, jeśli ArrowConfiguration jest określona. Grupuje ustawienia dotyczące schematu zwróconej odpowiedzi strzałki.
Field Opcjonalny. Ustawienia grup 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 falsewartość .

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.

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ą do wywołania Query Blob Contents operacji przez użytkownika, grupę lub jednostkę usługi Microsoft Entra oraz najmniej uprzywilejowaną wbudowaną rolę RBAC platformy Azure obejmującą tę akcję:

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 ContentsBlockBlob 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