Função IFNULL

A função IFNULL grava um valor especificado se o valor da origem é nulo. Do contrário, ela gravará o valor de origem. A entrada pode ser um literal, uma referência de coluna ou uma função.
  • A função NULL gera valores nulos. Consulte Função NULL.
  • A função ISNULL simplesmente prova se um valor é nulo. Consulte Função ISNULL.
  • Os valores nulos são diferentes dos valores ausentes.
  • Para mais informações sobre valores nulos, consulte Gerenciar valores nulos.

Uso básico

derive type:single value:IFNULL(my_score,'0') as:'final_score'

Saída: gera uma nova coluna chamada final_score, que conterá o valor 0 se o valor em my_score for nulo.

Sintaxe

derive type:single value:IFNULL(column_string, computed_value)

ArgumentoObrigatório?Tipo de dadosDescrição
source_valueSstringNome da coluna, literal de string ou função a ser testada
output_valuesstringValor literal da string para gravar

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

source_value

Nome da coluna, literal de string ou função a ser testada para valores nulos.

  • Os valores ausentes de literal ou de coluna geram resultados de string ausentes.
  • Não há compatibilidade com várias colunas e caracteres curinga.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimLiteral de string, referência de coluna ou chamada de funçãomyColumn

output_value

O valor de saída para gravar se o valor testado retorna um valor nulo.

Observações de uso:

Obrigatório?Tipo de dadosValor de exemplo
SimString ou literal numérico'Null input'

Exemplos

Exemplo: funções IF* para validação de tipo de dados

Nesta seção, você verá exemplos simples de como usar as funções IF* para validação do tipo de dados. Estas são algumas das funções:

  • IFNULL: para uma expressão ou valor de entrada, esta função retornará o valor especificado se a entrada for nula. Consulte Função IFNULL.
  • IFMISSING: retornará o valor especificado se o valor ou expressão de entrada estiver ausente. Consulte Função IFMISSING.
  • IFMISMATCHED: retornará o valor especificado se o valor ou expressão de entrada for incompatível com o tipo de dados da coluna. Consulte Função IFMISMATCHED.
  • IFVALID: retornará o valor especificado se o valor ou expressão de entrada for válido em relação ao tipo de dados da coluna. Consulte Função IFVALID.

Origem:

A seguinte tabela simples lista os CEPs por identificador do cliente:

custIdcustZip
C00198123
C00294105
C00312415
C00412451-2234
C00512441-298
C006
C007
C0081242
C0091104


Transformação:

Quando os dados acima forem importados para a página "Transformer", você observará o seguinte:

  • A coluna custZip é classificada como Número inteiro.
  • Há dois valores ausentes e dois incompatíveis na coluna custZip.

Primeiro, você testa valores válidos na coluna custZip. Com a função IFVALID, é possível fazer a validação com base em qualquer tipo de dados:

derive type:single value:IFVALID(custZip, 'Zipcode', 'ok') as:'status'

Corrigir CEPs de quatro dígitos: na coluna status, há instâncias de ok para as quatro linhas superiores. Você observa que as duas linhas inferiores contêm códigos de quatro dígitos.

Como os valores custZip foram originalmente importados como números inteiros, quaisquer valores 0 à frente foram excluídos. Nesse caso, é possível adicionar novamente o zero à frente. Antes de realizar a etapa anterior, altere o tipo de dados de zip para "String" e insira o seguinte texto:

derive type:single value:IF(LEN(custZip)==4,'0','') as:'FourDigitZip'

derive type:single value: merge([FourDigitZip,custZip]) as:'custZip2'

set col:zip value:custZip2

drop col:FourDigitZip,custZip2

Agora, ao clicar na última etapa da receita, observe que duas outras linhas no status estão listadas como Ok.

Para o CEP com a extensão de três dígitos, você pode simplesmente remover essa extensão para torná-lo válido. Clique na etapa acima da última. Na grade de dados, destaque o valor. Clique no cartão de sugestão Replace. Selecione a opção que usa o comando a seguir para o padrão correspondente:

'-{digit}{3}{end}'

A instrução acima significa que todas as extensões de três dígitos são excluídas do CEP. É possível fazer o mesmo para qualquer extensão de um e de dois dígitos, mesmo que não haja nenhuma nesta amostra.

Valores ausentes e nulos: agora, você precisa resolver como manipular valores ausentes e nulos. IFMISSING testa valores ausentes e nulos, enquanto IFNULL testa apenas valores nulos. Neste exemplo, o objetivo é excluir valores nulos, o que pode significar que os dados desta linha são inválidos, e gravar um status de missing para os valores ausentes.

Clique acima da última linha na receita para inserir o texto a seguir:

set col:custZip value:IFNULL(custZip, 'xxxxx')

set col:custZip value:IFMISSING(custZip, '00000')

Agora, ao clicar na última linha da receita, apenas o valor nulo estará listado com um status diferente de ok. Use a etapa a seguir para remover esta linha e tudo o que se pareça com ela:

delete row:(status == 'xxxxx')


Resultados:

custIdcustZipstatus
C00198123ok
C00294105ok
C00312415ok
C00412451-2234ok
C00512441-298ok
C006 00000ok
C0081242ok
C0091104ok

Como exercício, repita as etapas acima começando com a função IFMISMATCHED, determinando o valor na coluna status:

derive type:single value:IFMISMATCHED(custZip, 'Zipcode', 'mismatched') as:'status'

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.