Todos os produtos
Search
Central de documentação

MaxCompute:GET_BLOB_METADATA

Última atualização: Oct 09, 2026

A função GET_BLOB_METADATA() recupera os metadados de um blob. Use funções JSON para extrair campos específicos do objeto JSON retornado.

Uso comum

GET_JSON_OBJECT(GET_BLOB_METADATA(blob_expr), '$.field_name');

Notas de uso

  • A função GET_BLOB_METADATA() aceita um único parâmetro blob.

  • Permite extrair campos do objeto JSON retornado.

  • Os campos comuns incluem: content_type, content_length, checksum, is_compressed, content_encoding, storage_type e blob_storage_tier.

  • O campo content_length representa o tamanho em bytes e é adequado para validação com lengthb().

  • O campo is_compressed indica se o conteúdo está compactado, enquanto content_encoding especifica a codificação de compactação.

  • A função retorna NULL se o blob de entrada for NULL ou estiver vazio.

Sintaxe

JSON GET_BLOB_METADATA(blob_expr:BLOB)

Parâmetros

blob_expr (Obrigatório): Uma expressão do tipo BLOB.

  • A função aceita um único parâmetro blob.

  • O parâmetro deve ser uma expressão blob.

  • As fontes comuns incluem a função to_blob(...), uma coluna blob em uma tabela ou uma coluna blob gerada por uma instrução CREATE TABLE AS SELECT (CTAS) ou INSERT SELECT.

Exemplos:

GET_BLOB_METADATA(to_blob('abcdef'))
GET_BLOB_METADATA(to_blob('hello world', 'text/plain'))
GET_BLOB_METADATA(b)

Valor retornado

Retorna um objeto JSON contendo os metadados. A tabela a seguir descreve os campos comuns nesse objeto.

Geralmente, você extrai o valor de um campo específico em vez de todo o objeto.

Nome do campo

Descrição

content_type

O tipo de conteúdo especificado na criação do blob. Os casos de uso comuns incluem:

  • Verifique se a expressão to_blob(..., content_type) está aplicada.

  • Distinga tipos diferentes, como text/plain e application/json.

content_length

O tamanho do conteúdo do blob em bytes. Por exemplo:

  • Para to_blob('abcdef'), o valor é 6.

  • Para to_blob(X'616263'), o valor é 3.

  • to_blob('Chinese test') retorna 12

  • Para um conteúdo vazio, o valor é 0.

checksum

Uma soma de verificação do conteúdo. Use este campo para determinar se há consistência no conteúdo ou no objeto de armazenamento. Retorna NULL se não houver uma soma de verificação disponível.

is_compressed

Indica se o blob está armazenado em um formato compactado. As observações atuais mostram:

  • Blobs pequenos criados diretamente costumam ter o valor false.

  • Blobs maiores e persistidos podem ter o valor true.

  • A compactação depende do armazenamento e do codec subjacentes.

Esses exemplos não representam todas as regras de compactação possíveis.

content_encoding

O nome da codificação de compactação.

  • Se is_compressed = false, o valor é NULL

  • Se is_compressed = true, retorna o nome real do codec.

storage_type

O tipo de armazenamento do blob. Este campo é útil para solucionar problemas relacionados ao formato de armazenamento do blob.

blob_storage_tier

A camada de armazenamento do blob. Retorna NULL se essa informação não estiver disponível.

Tratamento de NULL

  • Quando o parâmetro de entrada é NULL ou um blob vazio

    A função GET_BLOB_METADATA(blob_expr) retorna NULL nos seguintes cenários:

    • O próprio parâmetro de entrada é NULL.

    • O blob está vazio.

    • O blob não contém conteúdo legível válido.

    -- Returns: NULL
    SELECT GET_BLOB_METADATA(to_blob(CAST(null as binary)));
    
    -- In this case, if you try to extract a field, the result is also NULL.
    SELECT get_json_object(GET_BLOB_METADATA(to_blob(CAST(null as binary))), '$.content_length');
  • Quando um campo no resultado retornado é NULL

    Mesmo que GET_BLOB_METADATA(blob_expr) não retorne NULL, alguns de seus campos podem ser nulos.

    Os cenários comuns incluem:

    • content_type: O valor é NULL se você não especificar um tipo de conteúdo.

    • checksum: É NULL se não houver uma soma de verificação correspondente disponível.

    • content_encoding: É NULL quando o conteúdo não está compactado.

    • blob_storage_tier: É NULL se não houver informações da camada de armazenamento correspondente.

  • Os dois cenários para valores NULL têm significados distintos:

    • A função retorna NULL porque o blob não tem metadados a retornar.

    • Um campo é NULL: Os metadados existem, mas o campo não tem valor no momento.

Exemplos

Leitura direta de metadados

SELECT GET_BLOB_METADATA(to_blob('abcdef'));

-- Return value:
{
    "checksum": null,
    "content_type": null,
    "storage_type": "MEMORY",
    "is_compressed": false,
    "content_length": 6,
    "content_encoding": null,
    "blob_storage_tier": "STANDARD"
}

Leitura dos três campos mais comuns

Essa abordagem é útil para verificar rapidamente o tipo de conteúdo, o tamanho em bytes e o status de compactação.

SELECT
  get_json_object(GET_BLOB_METADATA(to_blob('abcdef')), '$.content_type'),
  get_json_object(GET_BLOB_METADATA(to_blob('abcdef')), '$.content_length'),
  get_json_object(GET_BLOB_METADATA(to_blob('abcdef')), '$.is_compressed');

-- Return value:
+------------+------------+------------+
| _c0        | _c1        | _c2        | 
+------------+------------+------------+
| NULL       | 6          | false      | 
+------------+------------+------------+

Validação do tipo de conteúdo gravado pela aplicação

SELECT get_json_object(
  GET_BLOB_METADATA(to_blob('{"key":"value"}', 'application/json')),
  '$.content_type'
);

-- This confirms that the specified content type was correctly set.
+--------------------+
| _c0                | 
+--------------------+
| application/json   | 
+--------------------+

Validação do tamanho do conteúdo

SELECT cast(
  get_json_object(GET_BLOB_METADATA(to_blob('中文测试')), '$.content_length') as bigint
);

-- Return value:
+------------+
| _c0        | 
+------------+
| 12         | 
+------------+

Validação de consistência com LENGTHB()**

SELECT
  LENGTHB(TO_BLOB('abcdef')),
  CAST(GET_JSON_OBJECT(GET_BLOB_METADATA(TO_BLOB('abcdef')), '$.content_length') AS BIGINT);

-- Return value:
+------------+------------+
| _c0        | _c1        |
+------------+------------+
| 6          | 6          |
+------------+------------+

Verificação da compactação de blobs persistidos

  1. Prepare uma tabela de teste.

    -- Create a table that contains a BLOB column.
    CREATE TABLE blob_table2 (
      col1 INT ,
      col2 BLOB
    )
    TBLPROPERTIES (
      "table.format.version"="2" 
    );
    
    -- Write data to the table.
    INSERT INTO blob_table2 VALUES (1, to_blob(repeat('aaa', 1000), 'application/json'));
    
    -- Read data from the table.
    SELECT col1,read_blob(col2) FROM blob_table2;
  2. Consulte o status de compactação.

    SELECT 
      get_json_object(GET_BLOB_METADATA(col2), '$.is_compressed') 
    FROM blob_table2;
    
    -- Return value:
    +------+
    | _c0  |
    +------+
    | true |
    +------+

    is_compressed indica se o blob está atualmente armazenado em um formato compactado.

Visualização da codificação de compactação

  1. Prepare uma tabela de teste.

    -- Create a table that contains a BLOB column.
    CREATE TABLE blob_table2 (
      col1 INT ,
      col2 BLOB
    )
    TBLPROPERTIES (
      "table.format.version"="2" 
    );
    
    -- Write data to the table.
    INSERT INTO blob_table2 VALUES (1, to_blob(repeat('aaa', 1000), 'application/json'));
    
    -- Read data from the table.
    SELECT col1,read_blob(col2) FROM blob_table2;
  2. Visualize a codificação de compactação.

    SELECT
      get_json_object(GET_BLOB_METADATA(col2), '$.is_compressed'),
      get_json_object(GET_BLOB_METADATA(col2), '$.content_encoding')
    FROM blob_table2;
    
    -- Return value:
    +------+------+
    | _c0  | _c1  |
    +------+------+
    | true | ZSTD |
    +------+------+
    • Quando o conteúdo não está compactado: content_encoding é NULL

    • Durante a compactação: content_encoding retorna o nome específico do codec.

Visualização das informações de armazenamento

  1. Prepare uma tabela de teste.

    -- Create a table that contains a BLOB column.
    CREATE TABLE blob_table2 (
      col1 INT ,
      col2 BLOB
    )
    TBLPROPERTIES (
      "table.format.version"="2" 
    );
    
    -- Write data to the table.
    INSERT INTO blob_table2 VALUES (1, to_blob(repeat('aaa', 1000), 'application/json'));
    
    -- Read data from the table.
    SELECT col1,read_blob(col2) FROM blob_table2;
  2. Visualize as informações de armazenamento.

    SELECT
      get_json_object(GET_BLOB_METADATA(col2), '$.storage_type'),
      get_json_object(GET_BLOB_METADATA(col2), '$.blob_storage_tier')
    FROM blob_table2;
    
    -- Return value:
    +-------+----------+
    | _c0   | _c1      |
    +-------+----------+
    | PANGU | STANDARD |
    +-------+----------+

Uso com outras funções

  • Use com to_blob para verificar se um blob criado contém os metadados esperados.

  • Use com LENGTHB para validar se o tamanho nos metadados corresponde ao tamanho real do conteúdo em bytes.

  • Use com read_blob; read_blob inspeciona o conteúdo, enquanto GET_BLOB_METADATA inspeciona seus metadados.

  • Use com GET_JSON_OBJECT. Esse é o uso mais comum e recomendado.