Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Ifelse

Modo de foco
Ifelse - Amazon QuickSight

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

ifelse avalia um conjunto de pares de expressão if, then e retorna o valor do argumento then para o primeiro argumento if que for verdadeiro. Se nenhum dos argumentos if for verdadeiro, será retornado o valor do argumento else.

Sintaxe

ifelse(if-expression-1, then-expression-1 [, if-expression-n, then-expression-n ...], else-expression)

Argumentos

ifelse requer um ou mais pares de expressão if, then e exige exatamente uma expressão para o argumento else.

if-expression

A expressão a ser avaliada como verdadeira ou não. Pode ser um nome de campo, como address1, um valor literal, como 'Unknown', ou outra função, como toString(salesAmount). Um exemplo é isNotNull(FieldName).

Se você usar vários operadores AND e OR no argumento if, coloque parênteses nas instruções para identificar a ordem de processamento. Por exemplo, o argumento if a seguir retorna registros com um mês de 1, 2 ou 5 e um ano de 2000.

ifelse((month = 5 OR month < 3) AND year = 2000, 'yes', 'no')

O próximo argumento if usa os mesmos operadores, mas retorna registros com um mês de 5 e qualquer ano, ou com um mês de 1 ou 2 e um ano de 2000.

ifelse(month = 5 OR (month < 3 AND year = 2000), 'yes', 'no')
then-expression

A expressão a ser retornada se o respectivo argumento if for avaliado como verdadeiro. Pode ser um nome de campo, como address1, um valor literal, como 'Unknown', ou uma chamada para outra função. A expressão deve ter o mesmo tipo de dados que os outros argumentos then e o argumento else.

else-expression

A expressão a ser retornada se nenhum dos argumentos if for avaliado como verdadeiro. Pode ser um nome de campo, como address1, um valor literal, como 'Unknown', ou outra função, como toString(salesAmount). A expressão deve ter o mesmo tipo de dados que todos os argumentos then.

Tipo de retorno

ifelse retorna um valor do mesmo tipo de dados que os valores em then-expression. Todos os dados que retornam as expressões then e else devem ser do mesmo tipo de dados ou ser convertidos no mesmo tipo de dados.

Exemplos

O exemplo a seguir gera uma coluna de aliases para o campo country.

ifelse(country = "United States", "US", country = "China", "CN", country = "India", "IN", "Others")

Para esses casos de uso, avaliar cada valor em um campo em relação a uma lista de literais e retornar o resultado correspondente ao primeiro valor compatível, a troca de função é recomendada para simplificar seu trabalho. O exemplo anterior pode ser reescrito para a seguinte declaração usando switch:

switch(country,"United States","US","China","CN","India","IN","Others")

O exemplo a seguir categoriza as vendas por cliente em níveis legíveis para humanos.

ifelse(salesPerCustomer < 1000, “VERY_LOW”, salesPerCustomer < 10000, “LOW”, salesPerCustomer < 100000, “MEDIUM”, “HIGH”)

O exemplo a seguir usa E, OU e NÃO para comparar várias expressões usando operadores condicionais para marcar os principais clientes que NÃO são de Washington ou Oregon com uma promoção especial, e que fizeram mais de 10 pedidos. Se nenhum valor for retornado, o valor 'n/a' será usado.

ifelse(( (NOT (State = 'WA' OR State = 'OR')) AND Orders > 10), 'Special Promotion XYZ', 'n/a')

Os exemplos a seguir usam somente OR para gerar uma nova coluna que contém o nome do continente que corresponde a cada country.

ifelse(country = "United States" OR country = "Canada", "North America", country = "China" OR country = "India" OR country = "Japan", "Asia", "Others")

O exemplo anterior pode ser simplificado conforme mostrado no próximo exemplo. O exemplo a seguir usa ifelse e in para criar um valor em uma nova coluna para qualquer linha em que o valor testado esteja em uma lista literal. Você também pode usar ifelse com notIn.

ifelse(in(country,["United States", "Canada"]), "North America", in(country,["China","Japan","India"]),"Asia","Others")

Os autores podem salvar uma lista literal em um parâmetro de vários valores e usá-la nas funções in ou notIn. O exemplo a seguir é equivalente ao exemplo anterior, exceto que as listas literais são armazenadas em dois parâmetros de vários valores.

ifelse(in(country,${NorthAmericaCountryParam}), "North America", in(country,${AsiaCountryParam}),"Asia", "Others")

O exemplo a seguir atribui um grupo a um registro de vendas com base no total de vendas. A estrutura de cada frase if-then imita o comportamento de between, uma palavra-chave que atualmente não funciona em expressões de campo calculado. Por exemplo, o resultado da comparação salesTotal >= 0 AND salesTotal < 500 retorna os mesmos valores da comparação salesTotal between 0 and 499 do SQL.

ifelse(salesTotal >= 0 AND salesTotal < 500, 'Group 1', salesTotal >= 500 AND salesTotal < 1000, 'Group 2', 'Group 3')

O exemplo a seguir testa um valor NULL usando coalesce para retornar o primeiro valor que não é NULL. Em vez de precisar lembrar o significado de um NULL em um campo de data, você pode usar uma descrição legível. Se a data de desconexão for NULL, o exemplo retornará a data de suspensão, a menos que ambas sejam NULL. Em seguida, coalesce(DiscoDate, SuspendDate, '12/31/2491') retorna '12/31/2491'. O valor de retorno deve corresponder aos outros tipos de dados. Essa data pode parecer um valor incomum, mas uma data no século XXV simula razoavelmente o “fim dos tempos”, definido como a data mais alta em um data mart.

ifelse ( (coalesce(DiscoDate, SuspendDate, '12/31/2491') = '12/31/2491'), 'Active subscriber', 'Inactive subscriber')

A seguir, você verá um exemplo mais complexo em um formato mais legível, apenas para mostrar que você não precisa compactar todo o código em uma linha longa. Este exemplo fornece várias comparações do valor resultante de uma pesquisa. Ele lida com possíveis valores NULL para esse campo e categoriza dois intervalos aceitáveis. Além disso, rotula um intervalo que precisa de mais testes e outro que não é válido (fora do intervalo). Para todos os valores restantes, ele aplica a condição else e rotula a linha como precisando de um novo teste três anos após a data dessa linha.

ifelse ( isNull({SurveyResult}), 'Untested', {SurveyResult}=1, 'Range 1', {SurveyResult}=2, 'Range 2', {SurveyResult}=3, 'Need more testing', {SurveyResult}=99, 'Out of Range', concat ( 'Retest by ', toString ( addDateTime(3, "YYYY", {Date}) ) ) )

O exemplo a seguir atribui um nome de região criado “manualmente” a um grupo de estados. Ele também usa espaçamento e comentários, agrupados em /* */, para facilitar a manutenção do código.

ifelse ( /* NE REGION*/ locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0, 'Northeast', /* SE REGION*/ locate('Georgia, Alabama, South Carolina, Louisiana',{State}) > 0, 'Southeast', 'Other Region' )

A lógica da marcação de regiões é dividida da seguinte forma:

  1. Listamos os estados que queremos para cada região, colocando cada lista entre aspas para transformar cada lista em uma string, da seguinte forma:

    • 'New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire'

    • 'Georgia, Alabama, South Carolina, Louisiana'

    • Você pode adicionar mais conjuntos ou usar países, cidades, províncias ou What3Words, se quiser.

  2. Perguntamos se o valor de State (para cada linha) é encontrado na lista, usando a função locate para retornar um valor diferente de zero se o estado for encontrado na lista, como mostrado a seguir.

    locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) and locate('Georgia, Alabama, South Carolina, Louisiana',{State})
  3. A função locate retorna um número em vez de um TRUE ou FALSE, mas ifelse requer o valor booleano TRUE e FALSE. Para contornar isso, podemos comparar o resultado de locate com um número. Se o estado estiver na lista, o valor de retorno será maior que zero.

    1. Pergunte se o estado está presente.

      locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0
    2. Se a região estiver presente, rotule-a como a região específica, neste caso, uma região Nordeste.

      /*The if expression:*/ locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0, /*The then expression:*/ 'Northeast',
  4. Como temos estados que não estão em uma lista e porque ifelse exige uma única expressão else, fornecemos 'Other Region' como o rótulo para os estados restantes.

    /*The if expression:*/ locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0, /*The then expression:*/ 'Northeast', /*The else expression:*/ 'Other Region'
  5. Agrupamos tudo isso na função ifelse( ) para obter a versão final. O exemplo a seguir omite os estados da região Sudeste que estavam no original. Você pode adicioná-los novamente no lugar da tag <insert more regions here>.

    Se quiser adicionar mais regiões, você pode criar mais cópias dessas duas linhas e alterar a lista de estados de acordo com sua finalidade. Você pode alterar o nome da região para algo que lhe agrade e mudar o nome do campo de State para qualquer coisa que precisar.

    ifelse ( /*The if expression:*/ locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0, /*The then expression:*/ 'Northeast', /*<insert more regions here>*/ /*The else expression:*/ 'Other Region' )
    nota

    Há outras maneiras de fazer a comparação inicial para a expressão IF. Por exemplo, suponha que você faça a pergunta “Quais estados não estão faltando nessa lista?” em vez de “Quais estados estão na lista?” Se você fizer isso, talvez expresse de forma diferente. Você pode comparar a instrução LOCATE com zero para encontrar valores que estão ausentes na lista e, em seguida, usar o operador NOT para classificá-los como “não ausentes”, como mostrado a seguir.

    /*The if expression:*/ NOT (locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) = 0),

    Ambas as versões estão corretas. A versão escolhida deve fazer mais sentido para você e sua equipe, para que consiga mantê-la facilmente. Se todas as opções parecerem iguais, escolha a mais simples.

Nesta página

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.