Crée une map à partir de paires clé-valeur données.
Syntaxe
map(K, V) map(K <key1>, V <value1>, K <key2>, V <value2>[, ...])
Paramètres
key : obligatoire. Toutes les clés doivent être du même type de données après les conversions implicites. Seuls les types de données de base sont pris en charge.
value : obligatoire. Toutes les valeurs doivent être du même type de données, même après les conversions implicites. Les types de données autres que DECIMAL sont pris en charge.
Valeur de retour
Renvoie une valeur de type MAP.
Configurez le paramètre odps.sql.map.key.dedup.policy au niveau de la session pour spécifier la méthode de traitement des clés en double. Valeurs possibles :
exception : renvoie une erreur.
last_win : la dernière clé écrase la précédente.
Si vous ne configurez pas ce paramètre, la valeur par défaut last_win est utilisée.
Exemples
-
Exemple 1 : aucune clé en double n'existe. Créez une map à partir des données de la table
t_tablequi contient les colonnesc1 (BIGINT), c2 (STRING), c3 (STRING), c4 (BIGINT), et c5 (BIGINT). Données de la table :+------------+----+----+------------+------------+ | c1 | c2 | c3 | c4 | c5 | +------------+----+----+------------+------------+ | 1000 | k11 | k21 | 86 | 15 | | 1001 | k12 | k22 | 97 | 2 | | 1002 | k13 | k23 | 99 | 1 | +------------+----+----+------------+------------+Exemple d'instruction :
-- Define a map based on the key-value pairs between the c2 and c4 columns, and between the c3 and c5 columns. select map(c2,c4,c3,c5) from t_table; -- The following result is returned: +------+ | _c0 | +------+ | {k11:86, k21:15} | | {k12:97, k22:2} | | {k13:99, k23:1} | +------+ -
Exemple 2 : des clés en double existent. Créez une map à partir des données de la table
t_tablequi contient les colonnesc1 (BIGINT), c2 (STRING), c3 (STRING), c4 (BIGINT), et c5 (BIGINT). Données de la table :1000,'k11','k11',86,15 1001,'k12','k22',97,2 1002,'k13','k23',99,1 1003,'k13','k24',100,1 1004,'k12','k25',95,1Exemple d'instruction :
-- Define a map based on the key-value pairs between the c2 and c4 columns, and between the c3 and c5 columns. select map(c2,c4,c3,c5) from t_table; -- The following result is returned: +------+ | _c0 | +------+ | {'k11':15} | | {'k12':97, 'k22':2} | | {'k13':99, 'k23':1} | | {'k13':100, 'k24':1} | | {'k12':95, 'k25':1} | +------+
Fonctions associées
MAP est une fonction de type complexe. Pour plus d'informations sur les fonctions utilisées pour traiter les données de types complexes, telles que ARRAY, MAP, STRUCT et JSON, consultez la section Fonctions de type complexe.