Transforma as chaves do Map input por meio da função func. Os valores do mapa permanecem inalterados.
Sintaxe
map<K2, V> transform_keys([string <mapDupKeyPolicy>,] map<K1, V> <input>, function<K1, V, K2> <func>)
Parâmetros
-
mapDupKeyPolicy: opcional. Valor do tipo STRING. Este parâmetro define o método de processamento de chaves duplicadas. Valores válidos:
exception: Retorna um erro.
last_win: A chave posterior sobrescreve a anterior.
Especifique também o parâmetro
odps.sql.map.key.dedup.policyno nível da sessão e configure o método usado para processar chaves duplicadas. Por exemplo, defina o parâmetroodps.sql.map.key.dedup.policycomo exception. Caso você não especifique esse parâmetro, o sistema utiliza o valor padrão last_win.NotaO comportamento do MaxCompute é determinado com base no mapDupKeyPolicy. Se você não especificar o mapDupKeyPolicy, o sistema usa o valor de
odps.sql.map.key.dedup.policy. input: obrigatório. Este parâmetro define um mapa.
K1eVemmap<K1, V>representam as chaves e os valores de um mapa.func: obrigatório. Este parâmetro define a função integrada, a função definida pelo usuário ou a expressão usada para transformar as chaves. A função ou expressão recebe dois parâmetros de entrada, correspondentes às chaves e aos valores em input.
K2define o tipo de dados das chaves no mapa retornado.
Valor de retorno
A função retorna dados do tipo MAP. Se alguma das novas chaves for nula, o sistema retorna um erro.
Exemplos
-- The return value is {-10:-20, 70:50, 71:101}.
select transform_keys(map(10, -20, 20, 50, -30, 101), (k, v) -> k + v);
-- No error is returned. The returned result depends on the order of the elements in the input map.
select transform_keys("last_win", map(10, -20, 20, 50, -30, 100), (k, v) -> k + v);
-- An error is returned because duplicate keys exist.
select transform_keys("exception", map(10, -20, 20, 50, -30, 100), (k, v) -> k + v);
Neste exemplo, utiliza-se a combinação de um hífen e um sinal de maior que (->). Para obter mais informações sobre como usar a combinação de um hífen e um sinal de maior que (->) em funções Lambda, consulte Lambda functions.
Funções relacionadas
TRANSFORM_KEYS é uma função de tipo complexo. Para obter mais informações sobre as funções usadas para processar dados de tipos complexos, como ARRAY, MAP, STRUCT e JSON, consulte Complex type functions.