Função IPFROMINT

Calcula um endereço IP de quatro octetos a partir de um valor inteiro de 32 bits.

O valor da origem precisa ser um inteiro válido dentro do intervalo especificado pela fórmula abaixo. Um endereço IPv4 válido tem este formato:

aaa.bbb.ccc.ddd

OBSERVAÇÃO: os endereços IPv6 não são aceitos.

A fórmula usada para calcular o inteiro equivalente de um endereço IP é a seguinte:

(aaa * 2563) + (bbb * 2562) + (ccc * 256) + (ddd)

Assim, a fórmula para calcular o endereço IP é a seguinte:

Entradaaaabbbcccddd
X

aaa = floor(Input / (256 3 ))

remainderA = Input - aaa

bbb = floor(remainderA / (256 2 ))

remainderB = remainderA - bbb

ccc = floor(remainderB / 256)

remainderC = remainderB - ccc

ddd = remainderC

Valor de saída:

Output = aaa + '.' + bbb + '.' + ccc + '.' + ddd

Uso básico

Exemplo de literal numérico:

derive type:single value: IPFROMINT('16909060' ) as:'ip_addr'

Saída: é gerada uma coluna que contém o endereço IP 1.2.3.4.

Exemplo de referência de coluna:

derive type:single value: IPFROMINT(IpInt) as: 'ip_addr'

Saída: é gerada uma nova coluna ip_addr, que contém os valores da coluna IpInt convertidos em um valor de endereço IP.

Sintaxe

derive type:single value: IPFROMINT(column_int)

ArgumentoObrigatório?Tipo de dadosDescrição
column_intSstring ou número inteiroNome da coluna ou do literal inteiro a ser convertido em um valor de endereço IP

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

column_int

Nome da coluna ou do literal inteiro cujos valores são usados para calcular o valor do endereço IP equivalente.

  • Valores de entrada ausentes geram resultados ausentes.
  • Colunas e caracteres curinga múltiplos não são aceitos.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimReferência de literal inteiro ou coluna16909060

Exemplos

Exemplo: converter endereços IP em valores inteiros

Neste exemplo, veja como converter endereços IP em valores numéricos para fins de comparação e classificação. Este exemplo ilustra as seguintes funções:

  • IPTOINT: converte um endereço IP em um valor inteiro de acordo com uma fórmula. Consulte Função IPTOINT.
  • IPFROMINT: reconverte um valor inteiro em um endereço IP de acordo com a fórmula. Consulte Função IPFROMINT.

Origem:

O conjunto de dados inclui os seguintes valores de endereços IP:

IpAddr
192.0.0.1
10.10.10.10
1.2.3.4
1.2.3
http://12.13.14.15
https://16.17.18.19

Transformação:

Quando os dados acima são importados, o aplicativo inicialmente classifica a coluna como valores de URL, devido à presença dos identificadores de protocolo http:// e https://. Selecione o tipo de dados do endereço IP para a coluna. Os três últimos valores estão listados como valores incompatíveis. Corrija os problemas com as duas últimas entradas aplicando a seguinte transformação, que corresponde às strings http:// e https://:

replace col:IpAddr with:'' on:`http%?://`

OBSERVAÇÃO: o padrão %? do Cloud Dataprep corresponde a zero ou uma vez em qualquer caractere, o que permite a correspondência nas duas variantes do identificador de protocolos.

Agora, apenas o valor 1.2.3 é incompatível. Talvez você saiba que está faltando um zero ao final. Para adicioná-lo novamente, proceda desta maneira:

replace col: IpAddr on: `1.2.3{end}` with: '1.2.3.0' global: true

Todos os valores na coluna são válidos para o tipo de dados de endereço IP. Para converter esses valores em equivalentes inteiros, use o comando a seguir:

derive type:single value:IPTOINT(IpAddr) as:'ip_as_int'

Agora é possível manipular os dados com base nessa chave numérica. Para converter os valores inteiros de volta em endereços IP para fins de verificação, use o código abaixo:

derive type:single value:IPFROMINT(ip_as_int) as:'ip_check'

Resultados:

Xip_as_intip_check
192.0.0.13221225473192.0.0.1
10.10.10.1016843009010.10.10.10
1.2.3.4169090601.2.3.4
1.2.3.0169090561.2.3.0
12.13.14.1520218215912.13.14.15
16.17.18.1926955419516.17.18.19

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.