MaxCompute propose un large éventail de fonctions intégrées couvrant la plupart des besoins en traitement de données. Cette rubrique décrit les types de fonctions disponibles ainsi que les consignes d'utilisation applicables à l'ensemble des fonctions intégrées.
Types de fonctions
Les fonctions intégrées de MaxCompute se répartissent en trois grandes catégories :
Fonctions scalaires : elles opèrent sur une seule ligne et renvoient une valeur par appel. Cette catégorie inclut les fonctions de date et heure, mathématiques, de chaîne, de chiffrement, réseau, ainsi que celles dédiées aux types ARRAY, MAP, STRUCT, JSON et au traitement des données non structurées.
Fonctions d'agrégation : elles prennent plusieurs lignes en entrée et renvoient une seule valeur en sortie.
Fonctions de fenêtrage : elles opèrent sur un sous-ensemble de lignes défini dans une fenêtre et renvoient une valeur par ligne.
Pour obtenir la correspondance entre les fonctions intégrées de MaxCompute et leurs équivalents open source, consultez la rubrique Correspondance entre les fonctions intégrées de MaxCompute, Hive, MySQL et Oracle.
|
Type de fonction |
Description |
|
Manipulez les données de type DATE, DATETIME et TIMESTAMP : ajoutez ou soustrayez des dates, calculez des différences, extrayez des champs et convertissez des formats. |
|
|
Effectuez des opérations numériques sur les données BIGINT, DOUBLE, DECIMAL et FLOAT : convertissez des bases, arrondissez des nombres et générez des valeurs aléatoires. |
|
|
Calculez des agrégations, des classements, des décalages et des échantillons au sein d'une colonne de fenêtre spécifiée. |
|
|
Agrégez plusieurs enregistrements d'entrée en une seule valeur de sortie : sommes, moyennes, minimums/maximums, paramètres d'agrégation et concaténation de chaînes. |
|
|
Fonctions d'agrégation approximative qui suppriment les doublons et accélèrent les requêtes sur les grands ensembles de données en utilisant très peu de mémoire. |
|
|
Manipulez les données STRING : tronquez, remplacez, recherchez, modifiez la casse et convertissez des formats. Consultez la section Limites des fonctions STRING. |
|
|
Manipulez les données ARRAY : construisez, dédupliquez, agrégez, triez et fusionnez des tableaux. |
|
|
Manipulez les données MAP : extrayez des paires clé-valeur, construisez et fusionnez des maps. |
|
|
Manipulez les données STRUCT : développez des tableaux STRUCT et construisez des structs. |
|
|
Manipulez les données JSON : extrayez des valeurs de champ, générez des objets ou des tableaux, insérez ou mettez à jour des données et gérez des structures de données complexes. Consultez la section Limites des fonctions JSON. |
|
|
Chiffrez et déchiffrez les données de table de type STRING et BINARY. |
|
|
Traitez les données STRING et BINARY liées au réseau : convertissez des formats d'adresse IP, analysez des URL et obtenez des masques de réseau. |
|
|
Connectez-vous aux données non structurées et à leurs métadonnées stockées dans des entrepôts de données ou des data lakes via plusieurs méthodes. |
|
|
Utilisées pour construire, transformer et analyser des données géospatiales de type GEOGRAPHY. Ces fonctions vous permettent de créer des objets géographiques tels que des points, des lignes et des polygones à partir de coordonnées latitude/longitude ou de texte WKT/WKB, d'extraire des propriétés telles que les coordonnées et les rectangles englobants, de déterminer les relations spatiales entre objets géographiques (contenance, intersection, couverture) et de calculer les distances entre eux. |
|
|
Fonctions supplémentaires destinées à divers scénarios métier. |
|
|
Prend en charge le traitement du type de données VECTOR pour effectuer des calculs de distance vectorielle et des recherches vectorielles. Applicable aux scénarios tels que la recherche sémantique, l'amélioration des grands modèles de langage (LLM) et l'IA générative. |
Consignes d'utilisation
Tenez compte des points suivants lors de l'utilisation des fonctions intégrées :
Paramètres d'entrée : le type, le nombre et le format des paramètres d'entrée doivent respecter la syntaxe spécifiée. Dans le cas contraire, MaxCompute ne peut pas analyser la fonction et l'instruction SQL échoue.
-
Data types 2,0 : si une fonction intégrée utilise les types Data types 2,0 (TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP ou BINARY), vous devez activer Data types 2,0 avant d'exécuter la fonction. Sinon, une erreur est signalée. Activez Data types 2,0 à l'un des niveaux suivants :
-
Niveau de la session (s'applique uniquement à l'instruction SQL actuelle) : ajoutez l'instruction suivante avant votre instruction SQL et soumettez-les ensemble.
SET odps.sql.type.system.odps2=true; -
Niveau du projet (s'applique à toutes les instructions SQL suivantes, prend effet en 10 à 15 minutes) : le propriétaire du projet exécute la commande suivante.
SETPROJECT odps.sql.type.system.odps2=true;
-
Conversions de type implicites désactivées : lorsque Data types 2,0 est activé, les conversions de type implicites suivantes sont désactivées pour éviter toute perte de précision ou erreur : STRING vers BIGINT, STRING vers DATETIME, DOUBLE vers BIGINT, DECIMAL vers DOUBLE et DECIMAL vers BIGINT. Utilisez la fonction CAST pour des conversions explicites, ou désactivez Data types 2,0.
-
Conflits de noms entre UDF et fonctions intégrées : si une fonction définie par l'utilisateur (UDF) porte le même nom qu'une fonction intégrée, l'UDF est prioritaire. Par exemple, si une UDF nommée CONCAT existe dans un projet, le système appelle l'UDF au lieu de la fonction intégrée CONCAT. Pour appeler la fonction intégrée, préfixez le nom de la fonction avec
:::SELECT ::CONCAT('ab', 'c'); Propriétés globales : les résultats des fonctions intégrées peuvent varier selon les propriétés globales configurées pour le projet MaxCompute. Exécutez
SETPROJECT;pour afficher les propriétés globales actuelles.
Limites des fonctions JSON
Prérequis de version du SDK
Java SDK V0.44.0 ou version ultérieure
PyODPS V0.11.4.1 ou version ultérieure
Limites des opérations de table
L'ajout d'une colonne JSON à une table n'est pas pris en charge.
Les tables clusterisées ne sont pas prises en charge.
Les tables de type Delta Table ne sont pas prises en charge.
Limites des opérations SQL
Les opérations de comparaison sur le type JSON ne sont pas prises en charge.
Les clauses
ORDER BYetGROUP BYne peuvent pas être utilisées sur le type JSON.Une colonne de type JSON ne peut pas servir de clé
JOIN.
Précision des données
La partie entière d'un JSON NUMBER est stockée sous forme de BIGINT. Un dépassement de capacité se produit si la valeur est hors de la plage BIGINT.
La partie décimale d'un JSON NUMBER est stockée sous forme de DOUBLE. Une perte de précision peut survenir lors de la conversion.
Limites de caractères
Le caractère Unicode \u0000 n'est pas pris en charge dans les chaînes utilisées pour générer des données JSON.
Compatibilité du moteur
D'autres moteurs, tels que Hologres, ne peuvent pas lire le type de données JSON à partir d'une table MaxCompute.
Support UDF
Les UDF Java et Python ne prennent pas en charge le type JSON.
Profondeur d'imbrication
Le type de données JSON peut être imbriqué jusqu'à 20 niveaux de profondeur.
Outils de développement pris en charge
Les outils pris en charge incluent le client MaxCompute (odpscmd), MaxCompute Studio et DataWorks. Les écosystèmes externes tels que Dataphin ne sont pas pris en charge. Confirmez la compatibilité avant d'utiliser le type de données JSON avec tout système externe.
Lors de l'utilisation d'odpscmd, tenez compte des points suivants :
Mettez à niveau le client vers la version V0.46.5 ou ultérieure. Les versions antérieures ne peuvent pas exécuter la commande
DESC json_tableni télécharger des données JSON via Tunnel.Dans le fichier
conf\odps_config.inisitué dans le chemin d'installation du client, définissezuse_instance_tunnelsurfalse. Sinon, les requêtes échoueront.
Limites des fonctions STRING
Les fonctions de chaîne suivantes ne prennent en charge que les caractères anglais :
TRIM / RTRIM / LTRIM : le paramètre
trimCharsne prend en charge que les caractères anglais.REVERSE : ne prend en charge que les caractères anglais en mode Hive.
SOUNDEX : convertit uniquement les caractères anglais.
TOLOWER : convertit les lettres majuscules anglaises en minuscules.
TOUPPER : convertit les lettres minuscules anglaises en majuscules.
INITCAP : convertit la première lettre anglaise de chaque mot en majuscule et le reste en minuscule.