Função IF

Com a função IF, é possível criar uma lógica condicional if/then/else nas transformações.

OBSERVAÇÃO: a função IF é intercambiável com operadores ternários. Use essa função em vez da construção ternária.

Uso básico

Exemplo:

derive type:single value:IF(State == 'NY','New York, New York!','some other place') as:'isNewYork'

Saída: gera uma nova coluna isNewYork, em que cada linha contém o valor New York, New York! quando o valor correspondente na coluna State é NY. Caso contrário, o valor em isNewYork será some other place.

Exemplo de IF aninhado:

Crie instruções IF dentro de instruções IF, como no exemplo a seguir, em que o segundo IF será avaliado se o primeiro for avaliado como false:

derive type:single value:IF(State == 'NY',0.05,IF(State=='CA',0.08,0)) as:'CoTaxRatesByState'

Veja abaixo um exemplo aninhado mais detalhado.

Sintaxe

Neste exemplo, se test expression for avaliado como true, true_expression será executado. Caso contrário, false_expression será executado.

IF(test_expression, true_expression,false_expression)
ArgumentoObrigatório?Tipo de dadosDescrição
test_expressionSstringExpressão que é avaliada. Precisa ser resolvida como true ou false
true_expressionSstringExpressão que será executada se test_expression for true
false_expressionNstringExpressão que será executada se test_expression for false

Todas essas expressões podem ser constantes (strings, números inteiros ou qualquer outro valor literal aceito) ou elementos sofisticados de lógica, ainda que a expressão de teste precise ser avaliada como um valor booleano.

Para mais informações sobre os padrões de sintaxe, consulte as Observações sobre a sintaxe da documentação da linguagem.

test_expression

Esse parâmetro contém a expressão a ser avaliada. Essa expressão precisa gerar um valor booleano (true ou false).

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimString (expressão que é avaliada como true ou false)(LastName == 'Mouse' && FirstName == 'Mickey')

true_expression, false_expression

true_expression determina o valor ou condicional que é gerado se test_expression é avaliado como true. Se o teste for false, false_expression será aplicado.

Normalmente, essas expressões geram valores de saída e podem usar uma combinação de literais, funções e referências de coluna.

  • É necessária uma expressão verdadeira. Insira uma expressão em branco ("").
  • Se não é fornecida uma expressão falsa, os resultados falsos geram um valor false.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimString (expressão)

Veja os exemplos abaixo.

Exemplos

Exemplo: uso básico

Dados de exemplo:

XY
truetrue
truefalse
falsetrue
falsefalse

Transformações:

derive type:single value:IF((X == Y), 'yes','no') as: 'equals'

Resultados:

O resultado tem esta aparência:

XYequals
truetrueyes
truefalseno
falsetrueno
falsefalseyes

Exemplo: cotações de ações

Este exemplo demonstra como encadear várias condições if/then/else em uma única etapa de transformação.

Você tem um conjunto de preços de ações que quer analisar. Com base em um conjunto de regras, você quer determinar qualquer ação de compra, venda ou manutenção a ser realizada.

Fonte:

TicketQtyBuyPriceCurrentPrice
GOOG10705,25674,5
FB10084,00101,125
AAPL50125,2597,375
MSFT10038,87545,25

Transformação:

Avalie esses dados usando a função IF para determinar se quer tomar uma ação.

OBSERVAÇÃO: para um conjunto de dados maior, convém manter as avaliações de compra, venda e manutenção para cada ação em um conjunto de dados separado que você associa ao conjunto de origem antes de realizar comparações entre os valores de coluna. Consulte Painel "Mesclagem".

Para ajudar na avaliação, convém primeiro criar colunas que contenham o custo (Basis) e o valor atual (CurrentValue) para cada ação:

derive type:single value:(Qty * BuyPrice) as:'Basis'

derive type:single value:(Qty * CurrentPrice) as:'CurrentValue'

Agora, é possível criar algumas regras com base no spread entre Basis e CurrentValue.

Versão IF única: neste caso, a ação mais importante é determinar se está na hora de vender. A regra a seguir gravará uma notificação sell se o valor atual for US$ 1.000 ou superior ao custo. Do contrário, nenhum valor será gravado na coluna de ação.

derive type:single value: IF((CurrentValue - 1000 > Basis), 'sell','') as:'action'

Versão IF aninhada: e quanto a comprar mais? A transformação a seguir é uma edição feita na anterior. Nesta nova versão, o teste de venda é realizado e, se false, gravará uma ação buy se CurrentPrice estiver dentro dos 10% de BuyPrice.

Essa segunda avaliação será realizada depois da primeira, porque substitui a cláusula else, que não fez nada na versão anterior. No painel "Receita", clique na transformação anterior e edite-a, substituindo-a pela nova versão:

derive type:single value: IF((CurrentValue - 1000 > Basis), 'sell', IF((abs(CurrentValue - Basis) <= (Basis * 0.1)),'buy','hold')) as:'action'

Se nenhum teste for avaliado como true, a ação gravada será hold.

Convém formatar algumas das colunas usando a formatação em dólar, como no seguinte item:

OBSERVAÇÃO: a formatação a seguir insere um cifrão ($) na frente do valor, o que altera o tipo de dados para String.

set col:BuyPrice value:NUMFORMAT(BuyPrice, '$ ##,###.00')

Resultados:

Depois de mover as colunas, o conjunto de dados ficará parecido com o item a seguir, se você tiver concluído as etapas de formatação de número:

TíqueteQtyBuyPricePreçoAtualBaseValorAtualação
GOOG10705,25US$ 674,50US$ 7.052,50US$ 6.745,00compra
FB10084,00US$ 101,13US$ 8.400,00US$ 10.112,50vende
AAPL50125,25$ 97,38$ 6.262,50$ 4.868,75mantém
MSFT10038,88$ 45,25$ 3.887,50$ 4.525,00mantém

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Google Cloud Dataprep
Precisa de ajuda? Acesse nossa página de suporte.