Tous les produits
Search
Centre de documentation

MaxCompute:GET_DATA_FROM_OSS

Dernière mise à jour :Sep 02, 2026

La fonction GET_DATA_FROM_OSS lit tout ou partie du contenu d'un objet et le renvoie sous forme de valeur binaire.

Cas d'utilisation

MaxCompute propose la fonctionnalité Object Table. Celle-ci permet au moteur de calcul d'accéder aux données non structurées et à leurs métadonnées stockées dans OSS. Pour plus d'informations, consultez la rubrique Définition de OBJECT TABLE.

Une Object Table stocke les métadonnées des objets OSS situés dans un chemin spécifique. Utilisez la fonction GET_DATA_FROM_OSS pour charger dynamiquement le contenu binaire d'un objet OSS donné.

Syntaxe

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

Paramètres

Paramètre

Obligatoire

Type de données

Description

Valeur par défaut

full_object_table_name

Oui

STRING

Chemin complet vers l'OBJECT TABLE dans le modèle à trois niveaux, incluant les noms du projet et du schéma, par exemple project.schema.object_table.

Si vous utilisez RoleARN pour l'authentification lors de la création de la table, ce paramètre permet de générer automatiquement un jeton Security Token Service (STS) afin d'accéder à OSS.

Aucune

key

Oui

STRING

Nom de l'objet accédé dans l'Object Table. Pour plus de détails, reportez-vous à la description du paramètre key dans la réponse présentée dans la rubrique Afficher les propriétés de OBJECT TABLE.

Aucune

offset

Non

BIGINT

Position de départ de lecture du contenu de l'objet. La valeur doit être supérieure ou égale à 0.

0. La lecture commence au début de l'objet.

length

Non

BIGINT

Nombre d'octets à lire.

-1. Aucune limite de longueur n'est appliquée.

object_not_found_policy

Non

STRING

Spécifie la manière dont MaxCompute renvoie le résultat de l'appel de fonction si une clé d'objet existe dans les données mises en cache, mais que l'objet n'existe plus dans OSS. Valeurs possibles :

  • OUTPUT_NULL : Aucune exception n'est levée. La sortie est NULL.

  • THROW_EXCEPTION : Lève une exception et met fin à la tâche en cours.

  • WARN_AND_NULL : Aucune exception n'est levée et la fonction renvoie NULL. Une entrée de journal est ajoutée à la sortie d'exécution SQL pour indiquer que l'objet n'existe pas. Si cette incohérence se produit pour de nombreux objets, les performances globales de la tâche peuvent être affectées.

La valeur par défaut est OUTPUT_NULL.

Valeur de retour

Renvoie une valeur de type BINARY.

Exemples

Dans les exemples suivants, remplacez le paramètre project_name par le nom réel de votre projet MaxCompute.

Préparer les données

  1. Connectez-vous à la console OSS et téléchargez les données de test signedget.txt dans le dossier object-table-test/object_table_folder. Pour plus d'informations, consultez la rubrique Télécharger des fichiers.

  2. Utilisez le client local (odpscmd) ou créez un nœud MaxCompute SQL dans DataWorks pour créer une Object Table et actualiser le cache des métadonnées. Pour plus d'informations, consultez la rubrique Créer une OBJECT TABLE. Dans cet exemple, l'OBJECT TABLE est nommée 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;

Exemple 1

Lisez l'intégralité du contenu de l'Object Table et renvoyez-le sous forme de valeur binaire. Le chemin complet de l'Object Table est <project_name>.default.ot_demo_day. Le code suivant présente différentes combinaisons de paramètres.

-- 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;

Le résultat suivant est renvoyé :

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

Exemple 2

Pour obtenir le résultat de la fonction GET_DATA_FROM_OSS sous forme de type STRING, imbriquez-la dans la fonction STRING.

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

Le résultat suivant est renvoyé :

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

Fonctions associées

La fonction GET_DATA_FROM_OSS sert à traiter les données non structurées. Pour plus d'informations sur les fonctions dédiées au traitement des données non structurées, consultez la rubrique Fonctions de traitement des données non structurées.