Função IFVALID

A função VALID testa se um valor é válido. Consulte Função VALID.

Uso básico

derive type:single value:IFVALID(myZip,'ZipCode', 'ok') as:'myZipCheck'

Saída: é gerada uma nova coluna chamada myZipCheck com o valor ok, se o valor em myZip corresponder ao tipo de dados ZipCode.

Tipo de dados com opções de formatação:

Para tipos de dados com opções de formatação, como Datetime, você pode especificar o formato usando uma matriz, como neste exemplo:

set col: validDate value: IFVALID(myDate, ['Datetime','mm-dd-yy','mm*dd*yy'], 'true')

Saída: os valores da coluna validDate são definidos como true se o valor correspondente na coluna myDate for um valor de data/hora válido, nos formatos yy-mm-dd ou yy*mm*dd.

Sintaxe

derive type:single value:IFVALID(column_string, data_type_literal, computed_value)

ArgumentoObrigatório?Tipo de dadosDescrição
source_valueSstringNome da coluna, literal de string ou função a ser testada
datatype_literalSstringLiteral de string que identifica o tipo de dados em relação aos quais validar os valores de origem
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 correspondências de tipo de dados.

  • 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 funçãomyColumn

datatype_literal

Valor do literal para o tipo de dados usados para validar a coluna ou a string de origem.

  • Não há suporte para referências de coluna.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimLiteral de string'Integer'

Strings de tipo de dados válidas:

Ao fazer referência a um tipo de dados dentro de uma transformação você pode usar as seguintes strings para identificar cada tipo:

OBSERVAÇÃO: nas transformações de Wrangle, esses valores diferenciam maiúsculas de minúsculas.

Tipo de dadosString
String'String'
Número inteiro'Integer'
Decimal'Float'
Booleano'Bool'
CPF/CNPJ'SSN'
Número de telefone'Phone'
Endereço de e-mail'Emailaddress'
Cartão de crédito'Creditcard'
Gênero'Gender'
Objeto'Map'
Matriz'Array'
Endereço IP'Ipaddress'
URL'Url'
Código HTTP'Httpcodes'
CEP'Zipcode'
Estado'State'
Data/hora'Datetime'

output_value

O valor de saída a ser gravado se o valor testado for válido para o tipo de dados especificado.

Notas de uso:

Obrigatório?Tipo de dadosValor de exemplo
SimString ou literal numérico'Data type mismatch'

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.