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 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 | 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:
| 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
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.-
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.