Conteúdo do Blob de Consultas
A Query Blob Contents
operação aplica uma instrução SQL (linguagem SQL simples) no conteúdo de um blob e retorna apenas o subconjunto consultado dos dados. Você também pode chamar Query Blob Contents
para consultar o conteúdo de uma versão ou instantâneo.
Solicitação
Você pode construir a solicitação da Query Blob Contents
seguinte maneira. Recomendamos HTTPS. Substitua myaccount pelo nome da sua conta de armazenamento.
URI de solicitação do método POST | Versão 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 |
Parâmetros do URI
Você pode especificar os seguintes parâmetros adicionais no URI da solicitação:
Parâmetro | Descrição |
---|---|
snapshot |
Opcional. O parâmetro instantâneo é um valor opacoDateTime . Quando ele está presente, ele especifica o instantâneo de blob a ser consultado. Para obter mais informações sobre como trabalhar com instantâneos de blob, consulte Create um instantâneo de um blob. |
versionid |
Opcional, versão 2019-12-12 e posterior. O versionid parâmetro é um valor opaco DateTime . Quando ele está presente, ele especifica a versão do blob a ser recuperada. |
timeout |
Opcional. O parâmetro timeout é expresso em segundos. Para obter mais informações, consulte Definir tempos limite para operações de Armazenamento de Blobs. |
Cabeçalhos da solicitação
A tabela a seguir descreve os cabeçalhos de solicitação obrigatórios e opcionais:
Cabeçalho da solicitação | Descrição |
---|---|
Authorization |
Obrigatórios. Especifica o esquema de autenticação, o nome da conta e a assinatura. Para saber mais, confira Autorizar solicitações para o Armazenamento do Azure. |
Date ou x-ms-date |
Obrigatórios. Especifica o UTC (Tempo Universal Coordenado) para a solicitação. Para saber mais, confira Autorizar solicitações para o Armazenamento do Azure. |
x-ms-version |
Obrigatório para todas as solicitações autenticadas, opcional para solicitações anônimas. Especifica a versão da operação a ser usada para esta solicitação. Para obter mais informações, consulte Controle de versão para os Serviços de Armazenamento do Azure. |
Content-Type |
Obrigatórios. O valor desse cabeçalho deve ser application/xml; charset=UTF-8 . |
x-ms-lease-id:<ID> |
Opcional. Se esse cabeçalho for especificado, a operação será executada apenas se as seguintes condições forem atendidas: - A concessão do blob está ativa no momento. - A ID de concessão especificada na solicitação corresponde à do blob. Se esse cabeçalho for especificado e nenhuma dessas condições for atendida, a solicitação não será feita e ocorrerá uma falha na operação Query Blob Contents com o código de status 412 (Falha na Pré-condição). |
Origin |
Opcional. Especifica a origem da qual a solicitação será emitida. A presença desse cabeçalho resulta em cabeçalhos CORS (Compartilhamento de Recursos entre Origens) na resposta. |
x-ms-client-request-id |
Opcional. Fornece um valor opaco gerado pelo cliente com um limite de caracteres kib (1 kibibyte) que é registrado nos logs quando o registro em log é configurado. É altamente recomendável que você use esse cabeçalho para correlacionar atividades do lado do cliente com solicitações recebidas pelo servidor. |
Essa operação também dá suporte ao uso de cabeçalhos condicionais para consultar o conteúdo do blob somente se uma condição especificada for atendida. Para obter mais informações, consulte Especificar cabeçalhos condicionais para operações de Armazenamento de Blobs.
Corpo da solicitação
O corpo da solicitação para esta versão do Query Blob Contents
usa o seguinte formato 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>
A tabela a seguir descreve os elementos do corpo da solicitação:
Nome do elemento | Descrição |
---|---|
QueryRequest |
Obrigatórios. Grupos o conjunto de configurações de solicitação de consulta. |
QueryType |
Obrigatórios. Indica o tipo da expressão de consulta fornecida. O único valor válido para a versão atual é SQL . |
Expression |
Obrigatórios. Indica a expressão de consulta no SQL. O tamanho máximo da expressão de consulta é 256 KiB. Para obter mais informações sobre a sintaxe de expressão, consulte Aceleração de consulta: referência de linguagem SQL. |
InputSerialization |
Opcional. Grupos as configurações relativas à serialização de entrada do conteúdo do blob. Se não for especificado, a configuração de texto delimitado será usada. |
Format |
Obrigatório se InputSerialization for especificado. Grupos as configurações referentes ao formato dos dados de blob. |
Type |
Obrigatório se InputSerialization for especificado. Indica o tipo de formato. Os valores válidos são delimited , csv e json . |
DelimitedTextConfiguration |
Opcional. Grupos as configurações usadas para interpretar os dados de blob se o blob estiver formatado com texto delimitado. |
ColumnSeparator |
Opcional. Indica a cadeia de caracteres usada para separar colunas. |
FieldQuote |
Opcional. Indica a cadeia de caracteres usada para citar um campo específico. |
RecordSeparator |
Opcional. Indica a cadeia de caracteres usada para separar registros. |
EscapeChar |
Opcional. Indica a cadeia de caracteres usada como um caractere de escape. |
HasHeaders |
Opcional. Especifica um Boolean que representa se os dados têm cabeçalhos. |
JsonTextConfiguration |
Opcional. Grupos as configurações usadas para interpretar os dados de blob se o blob estiver formatado em JSON. |
RecordSeparator |
Opcional. Indica a cadeia de caracteres usada para separar registros. |
OutputSerialization |
Opcional. Indica o formato de serialização do conteúdo filtrado do blob retornado na resposta. Se não for especificado, a configuração de texto delimitado será usada. |
Format |
Obrigatório se OutputSerialization for especificado. Grupos as configurações referentes ao formato da resposta retornada. |
Type |
Obrigatório se OutputSerialization for especificado. Indica o tipo de formato. Os valores válidos são delimited , csv , json e arrow . |
DelimitedTextConfiguration |
Opcional. Grupos as configurações usadas para formatar a resposta se a resposta deve ser formatada com texto delimitado. |
ColumnSeparator |
Opcional. Indica a cadeia de caracteres usada para separar colunas. |
FieldQuote |
Opcional. Indica a cadeia de caracteres usada para citar um campo específico. |
RecordSeparator |
Opcional. Indica a cadeia de caracteres usada para separar registros. |
EscapeChar |
Opcional. Indica a cadeia de caracteres usada como um caractere de escape. |
HasHeaders |
Opcional. Especifica um Boolean que representa se os dados têm cabeçalhos. |
JsonTextConfiguration |
Opcional. Grupos as configurações usadas para formatar a resposta se a resposta deve ser formatada em JSON. |
RecordSeparator |
Opcional. Indica a cadeia de caracteres usada para separar registros. |
ArrowConfiguration |
Opcional. Grupos as configurações usadas para formatar a resposta se a resposta deve ser formatada por seta. |
Schema |
Obrigatório se ArrowConfiguration for especificado. Grupos as configurações relativas ao esquema da resposta de Seta retornada. |
Field |
Opcional. Grupos configurações relacionadas a um campo específico. |
Type |
Obrigatório se Field for especificado. Indica o tipo de campo. Os valores válidos são Int , Float , Decimal e Bool . |
Precision |
Opcional. Indica a precisão do campo. |
Scale |
Opcional. Indica a escala do campo. |
Resposta
A resposta inclui um código de status HTTP, um conjunto de cabeçalhos de resposta e o corpo de resposta. O corpo da resposta está no formato binário Avro. Como o comprimento do conteúdo da resposta é desconhecido, a resposta é transmitida com codificação em partes.
Código de status
Se a solicitação de consulta estiver bem formada e autorizada, a operação retornará status código 202 (Aceito). Quaisquer erros ou mensagens de progresso encontradas durante o streaming de resposta serão retornados como parte do corpo da resposta.
Para obter informações sobre códigos de status, consulte Códigos de status e de erro.
Cabeçalhos de resposta
A resposta para esta operação inclui os cabeçalhos a seguir. A resposta também pode incluir cabeçalhos HTTP padrão adicionais. Todos os cabeçalhos padrão estão em conformidade com a especificação do protocolo HTTP/1.1.
Sintaxe | Descrição |
---|---|
Last-Modified |
Indica a data/hora em que o blob foi modificado pela última vez. O formato da data segue RFC 1123. Qualquer operação que modificar o blob, incluindo uma atualização dos metadados ou das propriedades do blob, alterará a hora da última modificação do blob. |
Content-Type |
Especifica o formato em que os resultados são retornados. Atualmente, esse valor é avro/binary . |
ETag |
Contém um valor que você pode usar para executar operações condicionalmente. Para obter mais informações, consulte Especificar cabeçalhos condicionais para operações de Armazenamento de Blobs. Se a versão da solicitação for 2011-08-18 ou posterior, o ETag valor estará entre aspas. |
Content-Encoding |
Retorna o valor especificado para o cabeçalho da solicitação Content-Encoding . |
Content-Language |
Retorna o valor especificado para o cabeçalho da solicitação Content-Language . |
Cache-Control |
Retornado se esse cabeçalho tiver sido especificado anteriormente para o blob. |
Content-Disposition |
Retornado para solicitações na versão 2013-08-15 e mais recente. Esse cabeçalho retorna o valor que foi especificado para o cabeçalho x-ms-blob-content-disposition .O Content-Disposition campo de cabeçalho de resposta transmite informações adicionais sobre como processar o conteúdo da resposta. Você também pode usar o campo de cabeçalho de resposta para anexar metadados adicionais. Por exemplo, se o campo de cabeçalho de resposta estiver definido attachment como , o agente do usuário não deverá exibir a resposta. Em vez disso, ele deve mostrar uma caixa de diálogo Salvar como com um nome de arquivo diferente do nome de blob especificado. |
x-ms-blob-type: <BlockBlob> |
Retorna o tipo de blob. |
x-ms-request-id |
Identifica exclusivamente a solicitação que foi feita. Você pode usá-lo para solucionar problemas da solicitação. Para obter mais informações, consulte Solucionar problemas de operações de API. |
x-ms-version |
Indica a versão do Armazenamento de Blobs do Azure usada para executar a solicitação. Incluído para solicitações feitas usando a versão 2009-09-19 e posterior. Esse cabeçalho também será retornado para solicitações anônimas sem uma versão especificada, se o contêiner tiver sido marcado para acesso público usando a versão 2009-09-19 do Armazenamento de Blobs. |
Date |
Um valor de data/hora UTC que indica a hora em que o serviço enviou a resposta. |
Access-Control-Allow-Origin |
Retornado se a solicitação incluir um cabeçalho Origin e CORS estiver habilitado com uma regra de correspondência. Este cabeçalho retorna o valor do cabeçalho de solicitação de origem no caso de uma correspondência. |
Access-Control-Expose-Headers |
Retornado se a solicitação incluir um cabeçalho Origin e CORS estiver habilitado com uma regra de correspondência. Esse cabeçalho retorna a lista de cabeçalhos de resposta que serão expostos ao cliente ou emissor da solicitação. |
Vary |
Retornado com o valor do cabeçalho Origin quando as regras de CORS são especificadas. Para obter detalhes, confira Suporte a CORS para o Armazenamento do Azure. |
Access-Control-Allow-Credentials |
Retornado se a solicitação incluir um Origin cabeçalho e o CORS estiver habilitado com uma regra correspondente que não permita todas as origens. Esse cabeçalho é definido como true . |
x-ms-blob-committed-block-count |
Indica o número de blocos confirmados presentes no blob. Esse cabeçalho é retornado somente para blobs de acréscimo. |
x-ms-server-encrypted: true/false |
Versão 2015-12-11 ou posterior. O valor desse cabeçalho será definido true como se os dados de blob e os metadados do aplicativo forem completamente criptografados por meio do algoritmo especificado. Quando o blob é descriptografado ou se apenas partes dos metadados de blob/aplicativo são criptografadas, o valor é definido false como . |
Corpo da resposta
O corpo da resposta contém o conteúdo filtrado do blob enviado como uma série de mensagens no formato binário Avro. Ele usa o seguinte esquema:
{
"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"
}
]
}
]
Resposta de exemplo
"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":{...}
Autorização
A autorização é necessária ao chamar qualquer operação de acesso a dados no Armazenamento do Azure. Você pode autorizar a Query Blob Contents
operação conforme descrito abaixo.
Importante
A Microsoft recomenda usar Microsoft Entra ID com identidades gerenciadas para autorizar solicitações para o Armazenamento do Azure. Microsoft Entra ID fornece segurança superior e facilidade de uso em comparação com a autorização de Chave Compartilhada.
O Armazenamento do Azure dá suporte ao uso de Microsoft Entra ID para autorizar solicitações para dados de blob. Com Microsoft Entra ID, você pode usar o RBAC (controle de acesso baseado em função) do Azure para conceder permissões a uma entidade de segurança. A entidade de segurança pode ser um usuário, um grupo, uma entidade de serviço de aplicativo ou uma identidade gerenciada do Azure. A entidade de segurança é autenticada por Microsoft Entra ID para retornar um token OAuth 2.0. Em seguida, o token pode ser usado para autorizar uma solicitação no serviço de Blob.
Para saber mais sobre a autorização usando Microsoft Entra ID, consulte Autorizar o acesso a blobs usando Microsoft Entra ID.
Permissões
Veja abaixo a ação RBAC necessária para um usuário Microsoft Entra, grupo, identidade gerenciada ou entidade de serviço para chamar a Query Blob Contents
operação e a função rbac interna do Azure com privilégios mínimos que inclui esta ação:
- Ação rbac do Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Função interna com privilégios mínimos:Leitor deDados de Blob de Armazenamento
Para saber mais sobre como atribuir funções usando o RBAC do Azure, confira Atribuir uma função do Azure para acesso aos dados de blob.
Comentários
- A
Query Blob Contents
operação tem suporte apenas em umBlockBlob
tipo . - Não há suporte para consultar o conteúdo de um blob criptografado com chaves fornecidas pelo cliente nesta versão da API.
- Não há suporte para essa operação em blobs em contas que têm criptografia de infraestrutura habilitada.
- O cabeçalho
x-ms-version
é necessário para recuperar um blob que pertence a um contêiner privado. Se o blob pertencer a um contêiner disponível para acesso público total ou parcial, qualquer cliente poderá lê-lo sem especificar uma versão. A versão do serviço não é necessária para recuperar um blob que pertence a um contêiner público. Para saber mais, confira Restringir o acesso a contêineres e blobs. - Você pode usar a
Query Blob Contents
operação para consultar apenas objetos que têm formato delimitado/CSV ou JSON.
Cobrança
As solicitações de preços podem ser originadas de clientes que usam APIs de Armazenamento de Blobs, diretamente por meio da API REST do Armazenamento de Blobs ou de uma biblioteca de clientes do Armazenamento do Azure. Essas solicitações acumulam encargos por transação. O tipo de transação afeta a forma como a conta é cobrada. Por exemplo, as transações de leitura se acumulam em uma categoria de cobrança diferente das transações de gravação. A tabela a seguir mostra a categoria de cobrança para Query Blob Contents
solicitações com base no tipo de conta de armazenamento:
Operação | Tipo de conta de armazenamento | Categoria de cobrança |
---|---|---|
Conteúdo do Blob de Consultas | Blob de blocos Premium Uso geral v2 Standard |
Operações deleitura 1 |
1Além de uma cobrança de leitura, a conta incorre em encargos para as categorias de transação Aceleração de Consulta – Dados Verificados e Aceleração de Consulta – Dados Retornados . O preço dessas categorias aparece na página de preços do Azure Data Lake Storage.
Confira também
Autorizar solicitações para o Status do Armazenamento do Azuree códigos de erroCódigos de erro do Armazenamento de BlobsDefinir tempos limite para operações de Armazenamento de BlobsAceleração de consulta: referência de linguagem SQL