Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
monicarias
Contributor III
Contributor III

Rango de Datos y búsqueda de información Qlik Sense

Hola,

Tengo una tabla con un campo que almacena registros con una serie de rangos de direcciones IP, así por ejemplo "1.0.176.0 a 1.0.776.255" y así sucesivamente, otro campo que registra por cada uno de esos rangos a que ubicación pertenece; en otra tabla tengo un campo que contiene registros de direcciones IP completas por cada transacción realizada.

Requiero conocer de la segunda tabla que contiene la dirección IP completa a qué ubicación pertenece, por lo que requiero cruzar este campo con el campo de rangos de direcciones IP que está en la primera tabla, ¿qué debo hacer para se pueda realizar este cruce?

Agradezco la colaboración.

1 Solution

Accepted Solutions
hector
Specialist
Specialist

Hola, creo que pasando las IPs a un número puedes usar intervalmatch. Revisa este script

 

TX:
LOAD 
	IP,
	subfield(IP,'.',4) + subfield(IP,'.',3)*1e3 + subfield(IP,'.',2)*1e6 + subfield(IP,'.',1) * 1e9 as IP_NUM
	
INLINE [
    IP
    1.0.176.3
    1.0.176.99
    10.0.0.5
];




Rangos:
IntervalMatch(IP_NUM)
LOAD 
	subfield(Inicio,'.',4) + subfield(Inicio,'.',3)*1e3 + subfield(Inicio,'.',2)*1e6 + subfield(Inicio,'.',1) * 1e9 as Inicio,
	subfield(Fin,'.',4) + subfield(Fin,'.',3)*1e3 + subfield(Fin,'.',2)*1e6 + subfield(Fin,'.',1) * 1e9 as Fin
INLINE [
    Inicio, 		Fin, 			
    1.0.176.0	,	1.0.776.255
    10.0.0.1	, 	10.0.0.255
];

left join
LOAD 
	subfield(Inicio,'.',4) + subfield(Inicio,'.',3)*1e3 + subfield(Inicio,'.',2)*1e6 + subfield(Inicio,'.',1) * 1e9 as Inicio,
	subfield(Fin,'.',4) + subfield(Fin,'.',3)*1e3 + subfield(Fin,'.',2)*1e6 + subfield(Fin,'.',1) * 1e9 as Fin,
	Inicio & ' a ' & Fin as Rango
INLINE [
    Inicio, Fin, 			
    1.0.176.0,1.0.776.255
];

Espero te ayude.

View solution in original post

1 Reply
hector
Specialist
Specialist

Hola, creo que pasando las IPs a un número puedes usar intervalmatch. Revisa este script

 

TX:
LOAD 
	IP,
	subfield(IP,'.',4) + subfield(IP,'.',3)*1e3 + subfield(IP,'.',2)*1e6 + subfield(IP,'.',1) * 1e9 as IP_NUM
	
INLINE [
    IP
    1.0.176.3
    1.0.176.99
    10.0.0.5
];




Rangos:
IntervalMatch(IP_NUM)
LOAD 
	subfield(Inicio,'.',4) + subfield(Inicio,'.',3)*1e3 + subfield(Inicio,'.',2)*1e6 + subfield(Inicio,'.',1) * 1e9 as Inicio,
	subfield(Fin,'.',4) + subfield(Fin,'.',3)*1e3 + subfield(Fin,'.',2)*1e6 + subfield(Fin,'.',1) * 1e9 as Fin
INLINE [
    Inicio, 		Fin, 			
    1.0.176.0	,	1.0.776.255
    10.0.0.1	, 	10.0.0.255
];

left join
LOAD 
	subfield(Inicio,'.',4) + subfield(Inicio,'.',3)*1e3 + subfield(Inicio,'.',2)*1e6 + subfield(Inicio,'.',1) * 1e9 as Inicio,
	subfield(Fin,'.',4) + subfield(Fin,'.',3)*1e3 + subfield(Fin,'.',2)*1e6 + subfield(Fin,'.',1) * 1e9 as Fin,
	Inicio & ' a ' & Fin as Rango
INLINE [
    Inicio, Fin, 			
    1.0.176.0,1.0.776.255
];

Espero te ayude.