Gera um MAP a partir de pares chave-valor fornecidos.
Formato do comando
map(K, V) map(K <key1>, V <value1>, K <key2>, V <value2>[, ...])
Descrição dos parâmetros
key: obrigatório. Todas as key devem ter o mesmo tipo (inclusive após conversão implícita) e ser de tipos primitivos.
value: obrigatório. Todos os value devem ter o mesmo tipo (inclusive após conversão implícita). A função aceita todos os tipos de dados, exceto Decimal.
Valor de retorno
Retorna um valor do tipo MAP.
No nível da sessão, defina o parâmetro odps.sql.map.key.dedup.policy para especificar como tratar chaves duplicadas. Os valores válidos são:
exception: retorna um erro se houver chaves duplicadas.
last_win: se houver chaves duplicadas, o último valor substitui os anteriores.
Se não definido, o valor padrão desse parâmetro é last_win.
Exemplos de uso
-
Exemplo 1: sem chaves duplicadas. Considere a tabela
t_tablecom as colunasc1 bigint, c2 string, c3 string, c4 bigint, c5 biginte os seguintes dados:+------------+----+----+------------+------------+ | c1 | c2 | c3 | c4 | c5 | +------------+----+----+------------+------------+ | 1000 | k11 | k21 | 86 | 15 | | 1001 | k12 | k22 | 97 | 2 | | 1002 | k13 | k23 | 99 | 1 | +------------+----+----+------------+------------+Execute o seguinte comando:
--将c2、c4,c3、c5组成MAP。 select map(c2,c4,c3,c5) from t_table; --返回结果如下。 +------+ | _c0 | +------+ | {k11:86, k21:15} | | {k12:97, k22:2} | | {k13:99, k23:1} | +------+ -
Exemplo 2: com chaves duplicadas. Suponha que a tabela
t_tabletenha as colunasc1 bigint, c2 string, c3 string, c4 bigint, c5 biginte contenha os dados abaixo:1000,'k11','k11',86,15 1001,'k12','k22',97,2 1002,'k13','k23',99,1 1003,'k13','k24',100,1 1004,'k12','k25',95,1Execute o comando a seguir:
--将c2、c4,c3、c5组成MAP。 select map(c2,c4,c3,c5) from t_table; --返回结果如下。 +------+ | _c0 | +------+ | {'k11':15} | | {'k12':97, 'k22':2} | | {'k13':99, 'k23':1} | | {'k13':100, 'k24':1} | | {'k12':95, 'k25':1} | +------+
Funções relacionadas
A função MAP integra as funções de tipos complexos. Para outras funções de processamento de dados de tipos complexos (como ARRAY, MAP, STRUCT e JSON), consulte Funções de tipos complexos.