Transforma o objeto MAP input, mantém os valores inalterados e calcula novas chaves por meio da função func.
Formato do comando
map<K2, V> transform_keys([string <mapDupKeyPolicy>,] map<K1, V> <input>, function<K1, V, K2> <func>)
Descrição dos parâmetros
-
mapDupKeyPolicy: opcional. Tipo STRING. Define a estratégia de tratamento para chaves duplicadas. Valores válidos:
exception: retorna erro se houver chaves duplicadas.
last_win: substitui o valor anterior pelo posterior em caso de chaves duplicadas.
Você também pode definir esse parâmetro no nível de sessão com
odps.sql.map.key.dedup.policy. Exemplo:set odps.sql.map.key.dedup.policy=exception;. O valor padrão é last_win.NotaO MaxCompute prioriza o valor de mapDupKeyPolicy definido na função. Se a função não configurar mapDupKeyPolicy, prevalece o valor do parâmetro
odps.sql.map.key.dedup.policy. input: obrigatório. Objeto MAP. Em
map<K1, V>,K1eVrepresentam, respectivamente, a chave e o valor do objeto MAP.func: obrigatório. Função de transformação (nativa ou definida pelo usuário) ou expressão. Os dois parâmetros de entrada correspondem à chave e ao valor de input.
K2indica o tipo da nova chave no MAP resultante.
Valor de retorno
Retorna um valor do tipo MAP. Se a nova chave calculada for NULL, a função retornará erro.
Exemplos de uso
--返回{-10:-20, 70:50, 71:101}。
select transform_keys(map(10, -20, 20, 50, -30, 101), (k, v) -> k + v);
--不报错,返回的结果依赖于输入map中元素的顺序。
select transform_keys("last_win", map(10, -20, 20, 50, -30, 100), (k, v) -> k + v);
--因出现重复Key,返回报错。
select transform_keys("exception", map(10, -20, 20, 50, -30, 100), (k, v) -> k + v);
Os exemplos acima usam o operador ->. Para obter mais informações sobre funções Lambda e o operador ->, consulte Lambda functions.
Funções relacionadas
TRANSFORM_KEYS é uma função de tipo complexo. Para consultar outras funções de processamento de dados de tipos complexos (como ARRAY, MAP, STRUCT e JSON), veja Complex type functions.