Todos los productos
Search
Centro de documentos

MaxCompute:GET_DATA_FROM_OSS

Última actualización: Sep 03, 2026

La función GET_DATA_FROM_OSS lee todo el contenido de un objeto o una parte de este y lo devuelve como un valor binario.

Casos de uso

MaxCompute ofrece la función Object Table, que permite al motor de cómputo acceder a datos no estructurados y a sus metadatos almacenados en OSS. Para obtener más información, consulte OBJECT TABLE definition.

Una Object Table almacena los metadatos de los objetos de OSS en una ruta específica. Utilice la función GET_DATA_FROM_OSS para cargar dinámicamente el contenido binario de un objeto de OSS determinado.

Sintaxis

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

Obligatorio

Tipo de dato

Descripción

Valor predeterminado

full_object_table_name

Sí

STRING

Ruta completa de la OBJECT TABLE en el modelo de tres niveles, incluidos los nombres del proyecto y del esquema, por ejemplo: project.schema.object_table.

Si utiliza RoleARN para la autenticación al crear la tabla, este parámetro genera automáticamente un token de Security Token Service (STS) para acceder a OSS.

Ninguna

key

Sí

STRING

Nombre del objeto al que se accede en la Object Table. Para obtener más información, consulte la descripción del parámetro key en la respuesta detallada en View OBJECT TABLE properties.

Ninguna

offset

No

BIGINT

Posición inicial desde la cual se lee el contenido del objeto. El valor debe ser mayor o igual a 0.

0. Esto indica que la operación de lectura comienza desde el inicio del objeto.

length

No

BIGINT

Cantidad de bytes por leer.

-1. Esto indica que no hay límite de longitud.

object_not_found_policy

No

STRING

Especifica cómo devuelve MaxCompute el resultado de la invocación de la función si existe una clave de objeto en los datos en caché, pero el objeto ya no existe en OSS. Valores válidos:

  • OUTPUT_NULL: No genera una excepción. La salida es NULL.

  • THROW_EXCEPTION: Genera una excepción y finaliza la tarea actual.

  • WARN_AND_NULL: No genera una excepción y devuelve NULL. Se agrega una entrada de registro a la salida de ejecución de SQL para indicar que el objeto no existe. Si esta inconsistencia ocurre en muchos objetos, el rendimiento general de la tarea podría verse afectado.

El valor predeterminado es OUTPUT_NULL.

Valor devuelto

Devuelve un valor de tipo BINARY.

Ejemplos

A continuación, en los ejemplos, reemplace el parámetro project_name con el nombre real de su proyecto de MaxCompute.

Preparar datos

  1. Inicie sesión en la consola de OSS y cargue los datos de prueba signedget.txt en la carpeta object-table-test/object_table_folder. Para obtener más información, consulte Upload files.

  2. Utilice el use the local client (odpscmd) o cree un MaxCompute SQL node en DataWorks para crear una Object Table y actualizar la caché de metadatos. Para obtener más información, consulte Create an OBJECT TABLE. En este ejemplo, la OBJECT TABLE se denomina 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;

Ejemplo 1

Lea todo el contenido de la Object Table y devuélvalo como un valor binario. La ruta completa de la Object Table es <project_name>.default.ot_demo_day. El siguiente código muestra distintas combinaciones 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;

Se devuelve el siguiente resultado:

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

Ejemplo 2

Para obtener el resultado de la función GET_DATA_FROM_OSS como tipo STRING, anídela dentro de la función STRING.

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

Se devuelve el siguiente resultado:

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

Funciones relacionadas

La función GET_DATA_FROM_OSS procesa datos no estructurados. Para obtener más información sobre las funciones que procesan datos no estructurados, consulte Functions for unstructured data processing.