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