Cria um mapa com base nos pares chave-valor fornecidos.
Sintaxe
map(K, V) map(K <key1>, V <value1>, K <key2>, V <value2>[, ...])
Parâmetros
key: obrigatório. Todas as keys devem ter o mesmo tipo de dados após conversões implícitas. Somente tipos de dados básicos são compatíveis.
value: obrigatório. Todos os values devem ter o mesmo tipo de dados, mesmo após conversões implícitas. Tipos de dados diferentes de DECIMAL são compatíveis.
Valor de retorno
Retorna um valor do tipo MAP.
Configure o parâmetro odps.sql.map.key.dedup.policy no nível da sessão e especifique o método de processamento de chaves duplicadas. Valores válidos:
exception: Retorna um erro.
last_win: A chave posterior sobrescreve a anterior.
Caso você não configure esse parâmetro, o valor padrão last_win será utilizado.
Exemplos
-
Exemplo 1: Não há chaves duplicadas. Crie um mapa com base nos dados da tabela
t_table, que contém as colunasc1 (BIGINT), c2 (STRING), c3 (STRING), c4 (BIGINT), and c5 (BIGINT). Dados da tabela:+------------+----+----+------------+------------+ | c1 | c2 | c3 | c4 | c5 | +------------+----+----+------------+------------+ | 1000 | k11 | k21 | 86 | 15 | | 1001 | k12 | k22 | 97 | 2 | | 1002 | k13 | k23 | 99 | 1 | +------------+----+----+------------+------------+Exemplo de instrução:
-- 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} | +------+ -
Exemplo 2: Há chaves duplicadas. Crie um mapa com base nos dados da tabela
t_table, que contém as colunasc1 (BIGINT), c2 (STRING), c3 (STRING), c4 (BIGINT), and c5 (BIGINT). Dados da tabela:1000,'k11','k11',86,15 1001,'k12','k22',97,2 1002,'k13','k23',99,1 1003,'k13','k24',100,1 1004,'k12','k25',95,1Exemplo de instrução:
-- 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} | +------+
Funções relacionadas
MAP é uma função de tipo complexo. Para obter mais informações sobre as funções utilizadas no processamento de dados de tipos complexos, como ARRAY, MAP, STRUCT e JSON, consulte Complex type functions.