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