Consultar el contenido del blob
La Query Blob Contents
operación aplica una instrucción Lenguaje de consulta estructurado simple (SQL) en el contenido de un blob y devuelve solo el subconjunto consultado de los datos. También puede llamar Query Blob Contents
a para consultar el contenido de una versión o instantánea.
Solicitud
Puede construir la Query Blob Contents
solicitud como se indica a continuación. Se recomienda HTTPS. Reemplace myaccount por el nombre de la cuenta de almacenamiento.
URI de solicitud de método POST | Versión de 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 del identificador URI
Puedes especificar los siguientes parámetros adicionales en el URI de la solicitud:
Parámetro | Descripción |
---|---|
snapshot |
Opcional. El parámetro snapshot es un valor opaco DateTime . Cuando está presente, especifica la instantánea de blob que se va a consultar. Para más información sobre cómo trabajar con instantáneas de blob, consulte Create una instantánea de un blob. |
versionid |
Opcional, versión 2019-12-12 y posteriores. El versionid parámetro es un valor opaco DateTime . Cuando está presente, especifica la versión del blob que se va a recuperar. |
timeout |
Opcional. El parámetro timeout se expresa en segundos. Para más información, consulte Establecimiento de tiempos de espera para las operaciones de Blob Storage. |
Encabezados de solicitud
En la tabla siguiente se describen los encabezados de solicitud obligatorios y opcionales:
Encabezado de solicitud | Descripción |
---|---|
Authorization |
Necesario. Especifica el esquema de autenticación, el nombre de la cuenta y la firma. Para obtener más información, vea Autorización de solicitudes a Azure Storage. |
Date o x-ms-date |
Necesario. Especifica la hora universal coordinada (UTC) de la solicitud. Para obtener más información, vea Autorización de solicitudes a Azure Storage. |
x-ms-version |
Obligatorio para todas las solicitudes autenticadas, opcional para las solicitudes anónimas. Especifica la versión de la operación que se utiliza para esta solicitud. Para obtener más información, vea Versiones de los servicios de Azure Storage. |
Content-Type |
Necesario. El valor de este encabezado debe ser application/xml; charset=UTF-8 . |
x-ms-lease-id:<ID> |
Opcional. Si se especifica este encabezado, la operación se realizará solo si se cumplen las dos condiciones siguientes: - La concesión del blob está activa actualmente. : el identificador de concesión especificado en la solicitud coincide con el del blob. Si se especifica este encabezado y no se cumplen ambas condiciones, la solicitud producirá un error y la operación Query Blob Contents generará un error con el código de estado 412 (Error de condición previa). |
Origin |
Opcional. Especifica el origen del que se emitirá la solicitud. La presencia de este encabezado da como resultado encabezados de uso compartido de recursos entre orígenes (CORS) en la respuesta. |
x-ms-client-request-id |
Opcional. Proporciona un valor opaco generado por el cliente con un límite de caracteres de 1 kibibyte (KiB) que se registra en los registros cuando se configura el registro. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes que recibe el servidor. |
Esta operación también admite el uso de encabezados condicionales para consultar el contenido del blob solo si se cumple una condición especificada. Para más información, consulte Especificación de encabezados condicionales para las operaciones de Blob Storage.
Cuerpo de la solicitud
El cuerpo de la solicitud para esta versión de Query Blob Contents
usa el siguiente 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>
La tabla siguiente describe los elementos del cuerpo de la solicitud:
Nombre del elemento | Descripción |
---|---|
QueryRequest |
Necesario. Grupos el conjunto de configuraciones de solicitud de consulta. |
QueryType |
Necesario. Indica el tipo de la expresión de consulta proporcionada. El único valor válido para la versión actual es SQL . |
Expression |
Necesario. Indica la expresión de consulta en SQL. El tamaño máximo de la expresión de consulta es 256 KiB. Para obtener más información sobre la sintaxis de la expresión, vea Aceleración de consultas: referencia del lenguaje SQL. |
InputSerialization |
Opcional. Grupos la configuración relativa a la serialización de entrada del contenido del blob. Si no se especifica, se usa la configuración de texto delimitada. |
Format |
Requerido si se especifica InputSerialization . Grupos la configuración con respecto al formato de los datos del blob. |
Type |
Requerido si se especifica InputSerialization . Indica el tipo de formato. Valores válidos son delimited , csv y json . |
DelimitedTextConfiguration |
Opcional. Grupos la configuración que se usa para interpretar los datos del blob si el blob tiene formato de texto delimitado. |
ColumnSeparator |
Opcional. Indica la cadena que se usa para separar columnas. |
FieldQuote |
Opcional. Indica la cadena que se usa para citar un campo específico. |
RecordSeparator |
Opcional. Indica la cadena que se usa para separar los registros. |
EscapeChar |
Opcional. Indica la cadena que se usa como carácter de escape. |
HasHeaders |
Opcional. Especifica un valor booleano que representa si los datos tienen encabezados. |
JsonTextConfiguration |
Opcional. Grupos la configuración que se usa para interpretar los datos del blob si el blob tiene formato JSON. |
RecordSeparator |
Opcional. Indica la cadena que se usa para separar los registros. |
OutputSerialization |
Opcional. Indica el formato de serialización del contenido filtrado del blob devuelto en la respuesta. Si no se especifica, se usa la configuración de texto delimitada. |
Format |
Requerido si se especifica OutputSerialization . Grupos la configuración con respecto al formato de la respuesta devuelta. |
Type |
Requerido si se especifica OutputSerialization . Indica el tipo de formato. Los valores válidos son delimited , csv , json y arrow . |
DelimitedTextConfiguration |
Opcional. Grupos la configuración que se usa para dar formato a la respuesta si la respuesta debe tener formato con texto delimitado. |
ColumnSeparator |
Opcional. Indica la cadena que se usa para separar columnas. |
FieldQuote |
Opcional. Indica la cadena que se usa para comillas de un campo específico. |
RecordSeparator |
Opcional. Indica la cadena que se usa para separar los registros. |
EscapeChar |
Opcional. Indica la cadena que se usa como carácter de escape. |
HasHeaders |
Opcional. Especifica un valor booleano que representa si los datos tienen encabezados. |
JsonTextConfiguration |
Opcional. Grupos la configuración que se usa para dar formato a la respuesta si la respuesta debe tener formato JSON. |
RecordSeparator |
Opcional. Indica la cadena que se usa para separar los registros. |
ArrowConfiguration |
Opcional. Grupos la configuración que se usa para dar formato a la respuesta si la respuesta debe tener el formato de flecha. |
Schema |
Requerido si se especifica ArrowConfiguration . Grupos la configuración relativa al esquema de la respuesta de flecha devuelta. |
Field |
Opcional. Grupos configuración con respecto a un campo específico. |
Type |
Requerido si se especifica Field . Indica el tipo de campo. Los valores válidos son Int , Float , Decimal y Bool . |
Precision |
Opcional. Indica la precisión del campo. |
Scale |
Opcional. Indica la escala del campo. |
Response
La respuesta incluye un código de estado HTTP, un conjunto de encabezados de respuesta y el cuerpo de respuesta. El cuerpo de la respuesta está en formato binario avro. Dado que se desconoce la longitud del contenido de la respuesta, la respuesta se transmite con codificación fragmentada.
status code
Si la solicitud de consulta tiene un formato correcto y está autorizado, la operación devuelve el código de estado 202 (aceptado). Los errores o mensajes de progreso encontrados durante el streaming de respuesta se devolverán como parte del cuerpo de la respuesta.
Para obtener información sobre los códigos de estado, consulte Códigos de estado y error.
Encabezados de respuesta
La respuesta para esta operación incluye los encabezados siguientes. La respuesta también puede incluir encabezados HTTP estándar adicionales. Todos los encabezados estándar se ajustan a la especificación del protocolo HTTP/1.1.
Sintaxis | Descripción |
---|---|
Last-Modified |
Indica la fecha y hora en que se modificó por última vez el blob. El formato de la fecha sigue las convenciones de RFC 1123. Cualquier operación que modifique el blob, incluida una actualización de los metadatos o las propiedades del blob, cambia la hora de la última modificación del blob. |
Content-Type |
Especifica el formato en el que se devuelven los resultados. Actualmente, este valor es avro/binary . |
ETag |
Contiene un valor que puede usar para realizar operaciones de forma condicional. Para más información, consulte Especificación de encabezados condicionales para las operaciones de Blob Storage. Si la versión de la solicitud es 2011-08-18 o posterior, el ETag valor está entre comillas. |
Content-Encoding |
Devuelve el valor especificado para el encabezado de Content-Encoding solicitud. |
Content-Language |
Devuelve el valor especificado para el encabezado de Content-Language solicitud. |
Cache-Control |
Se devuelve si este encabezado se especificó anteriormente para el blob. |
Content-Disposition |
Se devuelve para las solicitudes realizadas en la versión 2013-08-15 y posteriores. Este encabezado devuelve el valor especificado para el encabezado x-ms-blob-content-disposition .El Content-Disposition campo de encabezado de respuesta transmite información adicional sobre cómo procesar la carga de respuesta. También puede usar el campo de encabezado de respuesta para adjuntar metadatos adicionales. Por ejemplo, si el campo de encabezado de respuesta está establecido attachment en , el agente de usuario no debe mostrar la respuesta. En su lugar, debe mostrar un cuadro de diálogo Guardar como con un nombre de archivo distinto del nombre de blob especificado. |
x-ms-blob-type: <BlockBlob> |
Devuelve el tipo del blob. |
x-ms-request-id |
Identifica de forma única la solicitud que se realizó. Puede usarlo para solucionar problemas de la solicitud. Para más información, consulte Solución de problemas de operaciones de API. |
x-ms-version |
Indica la versión de Azure Blob Storage que se usa para ejecutar la solicitud. Se incluye para las solicitudes realizadas con la versión 2009-09-19 y posteriores. Este encabezado también se devuelve para las solicitudes anónimas sin una versión especificada, si el contenedor se marcó para el acceso público mediante la versión 2009-09-19 de Blob Storage. |
Date |
Valor de fecha y hora UTC que indica la hora en la que el servicio envió la respuesta. |
Access-Control-Allow-Origin |
Se devuelve si la solicitud incluye un encabezado Origin y se ha habilitado CORS con una regla de coincidencia. Este encabezado devuelve el valor del encabezado Origin de la solicitud en caso de que haya una coincidencia. |
Access-Control-Expose-Headers |
Se devuelve si la solicitud incluye un encabezado Origin y se ha habilitado CORS con una regla de coincidencia. Este encabezado devuelve la lista de encabezados de respuesta que se expondrán al cliente o emisor de la solicitud. |
Vary |
Se devuelve con el valor del encabezado Origin cuando se especifican reglas de CORS. Para más información, consulte Compatibilidad de CORS con Azure Storage. |
Access-Control-Allow-Credentials |
Se devuelve si la solicitud incluye un Origin encabezado y CORS está habilitado con una regla de coincidencia que no permite todos los orígenes. Este encabezado se establece en true . |
x-ms-blob-committed-block-count |
Indica el número de bloques confirmados presentes en el blob. Este encabezado solo se devuelve para blobs en anexos. |
x-ms-server-encrypted: true/false |
Versión 2015-12-11 o posterior. El valor de este encabezado se establece true en si los datos del blob y los metadatos de la aplicación se cifran completamente a través del algoritmo especificado. Cuando el blob está sin cifrar, o si solo se cifran partes de los metadatos de blob o aplicación, el valor se establece false en . |
Response body
El cuerpo de la respuesta contiene el contenido filtrado del blob enviado como una serie de mensajes en formato binario avro. Usa el esquema siguiente:
{
"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"
}
]
}
]
Respuesta de muestra
"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":{...}
Authorization
La autorización es necesaria al llamar a cualquier operación de acceso a datos en Azure Storage. Puede autorizar la Query Blob Contents
operación como se describe a continuación.
Importante
Microsoft recomienda usar Microsoft Entra ID con identidades administradas para autorizar solicitudes a Azure Storage. Microsoft Entra ID proporciona una mayor seguridad y facilidad de uso en comparación con la autorización de clave compartida.
Azure Storage admite el uso de Microsoft Entra ID para autorizar solicitudes a datos de blobs. Con Microsoft Entra ID, puede usar el control de acceso basado en rol de Azure (RBAC de Azure) para conceder permisos a una entidad de seguridad. La entidad de seguridad puede ser un usuario, un grupo, una entidad de servicio de aplicación o una identidad administrada de Azure. La entidad de seguridad se autentica mediante Microsoft Entra ID para devolver un token de OAuth 2.0. Después, el token se puede usar para autorizar una solicitud en Blob service.
Para más información sobre la autorización mediante Microsoft Entra ID, consulte Autorización del acceso a blobs mediante Microsoft Entra ID.
Permisos
A continuación se enumeran las acciones de RBAC necesarias para un usuario, grupo, identidad administrada o entidad de servicio de Microsoft Entra para llamar a la Query Blob Contents
operación y el rol RBAC integrado con privilegios mínimos que incluye esta acción:
- Acción RBAC de Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Rol integrado con privilegios mínimos:Lector de datos de Storage Blob
Para más información sobre la asignación de roles mediante RBAC de Azure, consulte Asignación de un rol de Azure para el acceso a datos de blobs.
Comentarios
- La
Query Blob Contents
operación solo se admite en unBlockBlob
tipo. - No se admite la consulta del contenido de un blob cifrado con claves proporcionadas por el cliente en esta versión de la API.
- Esta operación no se admite en blobs de cuentas que tienen habilitado el cifrado de infraestructura .
- El encabezado
x-ms-version
es necesario para recuperar un blob que pertenece a un contenedor privado. Si el blob pertenece a un contenedor que está disponible para el acceso público completo o parcial, cualquier cliente puede leerlo sin especificar una versión. La versión del servicio no es necesaria para recuperar un blob que pertenece a un contenedor público. Para obtener más información, consulte Restringir acceso a contenedores y blobs. - Puede usar la
Query Blob Contents
operación para consultar solo los objetos que tienen formato JSON o delimitado/CSV.
Facturación
Las solicitudes de precios se pueden originar en clientes que usan las API de Blob Storage, ya sea directamente a través de la API rest de Blob Storage o de una biblioteca cliente de Azure Storage. Estas solicitudes acumulan cargos por transacción. El tipo de transacción afecta a cómo se cobra la cuenta. Por ejemplo, las transacciones de lectura se acumulan en una categoría de facturación diferente que las transacciones de escritura. En la tabla siguiente se muestra la categoría de facturación de Query Blob Contents
las solicitudes basadas en el tipo de cuenta de almacenamiento:
Operación | Tipo de cuenta de almacenamiento | Categoría de facturación |
---|---|---|
Consultar el contenido del blob | Blobs en bloques Premium De uso general, estándar, v2 |
Operaciones de lectura1 |
1Además de un cargo de lectura, la cuenta incurre en cargos por aceleración de consultas: aceleración de datos y aceleración de consultas: categorías de transacciones devueltas por datos . Los precios de estas categorías aparecen en la página de precios de Azure Data Lake Storage.
Consulte también
Autorización de solicitudes a códigos deerror y estado de Azure Storage: Códigos de error de Blob StorageEstablecer tiempos de espera para las operaciones de Blob StorageAceleración de consultas: Referencia del lenguaje SQL