Todos os produtos
Search
Central de documentação

MaxCompute:GET_DATA_FROM_OSS

Última atualização: Sep 02, 2026

A função GET_DATA_FROM_OSS lê todo ou parte do conteúdo de um objeto e o retorna como um valor binário.

Casos de uso

O MaxCompute oferece o recurso Object Table, que permite ao mecanismo de computação acessar dados não estruturados e seus metadados armazenados no OSS. Para mais informações, consulte OBJECT TABLE definition.

Uma Object Table armazena os metadados de objetos do OSS em um caminho específico. Use a função GET_DATA_FROM_OSS para carregar dinamicamente o conteúdo binário de um objeto do OSS especificado.

Sintaxe

BINARY GET_DATA_FROM_OSS (
  STRING <full_object_table_name>,
  STRING <key> 
  [, BIGINT <offset>]              
  [, BIGINT <length>] 
  [, STRING <object_not_found_policy>] 
)

Parâmetros

Parâmetro

Obrigatório

Tipo de dados

Descrição

Valor padrão

full_object_table_name

Sim

STRING

Caminho completo para a OBJECT TABLE no modelo de três camadas, incluindo os nomes do Project e do Schema, como project.schema.object_table.

Se você usar RoleARN para autenticação ao criar a tabela, este parâmetro gera automaticamente um token do Security Token Service (STS) para acessar o OSS.

Nenhum

key

Sim

STRING

Nome do objeto acessado na Object Table. Para mais detalhes, consulte a descrição do parâmetro key na resposta descrita em View OBJECT TABLE properties.

Nenhum

offset

Não

BIGINT

Posição inicial de leitura do conteúdo do objeto. O valor deve ser maior ou igual a 0.

0. A leitura começa no início do objeto.

length

Não

BIGINT

Número de bytes a ler.

-1. Sem limite de tamanho.

object_not_found_policy

Não

STRING

Define como o MaxCompute retorna o resultado da invocação da função caso uma chave de objeto exista nos dados em cache, mas o objeto não exista mais no OSS. Valores válidos:

  • OUTPUT_NULL: Não lança exceção. Retorna NULL.

  • THROW_EXCEPTION: Lança uma exceção e encerra a tarefa atual.

  • WARN_AND_NULL: Não lança exceção e retorna NULL. Adiciona uma entrada de log à saída de execução do SQL indicando que o objeto não existe. Se essa inconsistência ocorrer em muitos objetos, o desempenho geral da tarefa pode ser afetado.

O valor padrão é OUTPUT_NULL.

Valor de retorno

Retorna um valor do tipo BINARY.

Exemplos

Nos exemplos a seguir, substitua o parâmetro project_name pelo nome real do seu projeto no MaxCompute.

Preparar dados

  1. Faça login no console do OSS e envie os dados de teste signedget.txt para a pasta object-table-test/object_table_folder. Para mais informações, consulte Upload files.

  2. Use o use the local client (odpscmd) ou crie um MaxCompute SQL node no DataWorks para criar uma Object Table e atualizar o cache de metadados. Para mais informações, consulte Create an OBJECT TABLE. Neste exemplo, a OBJECT TABLE chama-se ot_demo_day.

    -- The Object Table feature in MaxCompute projects supports schemas. Enable the three-layer model. 
    SET odps.namespace.schema=true;
    
    -- Select the MaxCompute project. 
    USE <project_name>;
    
    -- Select the schema. 
    USE SCHEMA <schema_name>;
    
    -- The Object Table feature in MaxCompute projects supports the 2.0 data type system. 
    SET odps.sql.type.system.odps2=true;
    
    -- Create an Object Table.
    CREATE OBJECT TABLE ot_demo_day 
    WITH serdeproperties ( 
     'odps.properties.rolearn'='acs:ram::xxxxxx:role/aliyunodpsdefaultrole') 
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/object-table-test/object_table_folder';
    
    -- Refresh the table cache. 
    ALTER TABLE ot_demo_day REFRESH METADATA;

Exemplo 1

Leia todo o conteúdo da Object Table e retorne-o como um valor binário. O caminho completo da Object Table é <project_name>.default.ot_demo_day. O código a seguir mostra diferentes combinações de parâmetros.

-- The complete format.
SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0, -1, 'OUTPUT_NULL') FROM ot_demo_day;

-- The following statements are equivalent to get_data_from_oss('<project_name>.default.ot_demo_day', key, 0, -1, 'OUTPUT_NULL').
SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key) FROM ot_demo_day;

SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0) FROM ot_demo_day;

SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0, -1) FROM ot_demo_day;

SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 'OUTPUT_NULL') FROM ot_demo_day;

SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0, 'OUTPUT_NULL') FROM ot_demo_day;

Resultado retornado:

+------+
| _c0  |
+------+
| test=20maxcompute=20download=20files=20by=20url=20 |
+------+

Exemplo 2

Para obter o resultado da função GET_DATA_FROM_OSS como o tipo STRING, aninhe-a na função STRING.

SELECT STRING(
  GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0, -1, 'OUTPUT_NULL')
) 
FROM ot_demo_day;

Resultado retornado:

+-----+
| _c0 |
+-----+
| test maxcompute download files by url  |
+-----+

Funções relacionadas

A função GET_DATA_FROM_OSS processa dados não estruturados. Para mais informações sobre funções de processamento de dados não estruturados, consulte Functions for unstructured data processing.