IntervalMatch

El prefijo IntervalMatch se utiliza para crear una tabla que coincida con valores numéricos discretos con uno o más intervalos numéricos y, opcionalmente, que coincida con los valores de una o varias claves adicionales.

Syntax:  

IntervalMatch (matchfield)(loadstatement | selectstatement )

IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )

 

El prefijo IntervalMatch debe colocarse antes de una sentencia LOAD o SELECT que carga los intervalos. El campo que contiene los puntos de datos discretos (Time en el ejemplo inferior) y las claves adicionales ya deben haberse cargado en Qlik Sense antes de la sentencia con el prefijo IntervalMatch. El prefijo no lee por sí mismo este campo desde la tabla de la base de datos. El prefijo transforma la tabla cargada de intervalos y claves en una tabla que contiene una columna adicional: los puntos de datos numéricos discretos. También amplía el número de registros de forma que la nueva tabla contiene un registro por combinación posible de puntos de datos discretos, intervalo y valor del campo(s) clave.

Los intervalos pueden solaparse y los valores discretos se enlazarán con todos los intervalos coincidentes.

Cuando el prefijo IntervalMatch se amplía con los campos clave, se utiliza para crear una tabla que haga coincidir valores numéricos discretos con uno o más intervalos numéricos, mientras que al mismo tiempo coincida con los valores de una o varias teclas adicionales.

Para evitar que se ignoren los límites de intervalos no definidos, puede ser necesario permitir que los valores NULL se asignen a otros campos que constituyen los límites inferior o superior del intervalo. Esto puede gestionarlo la sentencia NullAsValue o una prueba explícita que reemplaza los valores NULL por un valor numérico mucho antes o después de cualquiera de los puntos de datos numéricos discretos.

Arguments:  

Argumento Descripción
matchfield Es el campo que contiene los valores numéricos discretos que se van a enlazar con los intervalos.
keyfield Son campos que contienen los atributos adicionales que se van a comparar en la transformación.
loadstatement or selectstatement Debe dar como resultado una tabla, en la que el primer campo contiene el límite inferior de cada intervalo, el segundo campo contiene el límite superior de cada intervalo y, en el caso de usar la asignación de claves, el tercer campo y cualquier campo subsiguiente contienen los campos clave presentes en la sentencia IntervalMatch. Los intervalos están siempre cerrados, es decir, los puntos finales están incluidos en el intervalo. En caso de tener límites no numéricos, no se considera el intervalo (se descarta como indefinido).

Example 1:  

En las dos tablas a continuación, la primera enumera una serie de eventos discretos y la segunda define las horas de inicio y finalización de distintos pedidos. Mediante el prefijo IntervalMatch es posible conectar de forma lógica las dos tablas a fin de hallar por ej. qué pedidos se vieron afectados por incidencias y qué pedidos fueron procesados por qué turnos.

EventLog: LOAD * Inline [ Time, Event, Comment 00:00, 0, Start of shift 1 01:18, 1, Line stop 02:23, 2, Line restart 50% 04:15, 3, Line speed 100% 08:00, 4, Start of shift 2 11:43, 5, End of production ]; OrderLog: LOAD * INLINE [ Start, End, Order 01:00, 03:35, A 02:30, 07:58, B 03:04, 10:27, C 07:23, 11:43, D ]; //Link the field Time to the time intervals defined by the fields Start and End. Inner Join IntervalMatch ( Time ) LOAD Start, End Resident OrderLog;

 

La tabla OrderLog contiene ahora una columna adicional: Time. El número de registros también se expande.

Time Start End Order

00:00

- - -
01:18 01:00 03:35 A
02:23 01:00 03:35 A
04:15 02:30 07:58 B
04:15 03:04 10:27 C
08:00 03:04 10:27 C
08:00 07:23 11:43 D
11:43 07:23

11:43

D

Example 2: (usando keyfield)

Mismo ejemplo que el anterior, añadiendo ProductionLine como un campo clave.

EventLog:
LOAD * Inline [
Time, Event, Comment, ProductionLine
00:00, 0, Start of shift 1, P1
01:00, 0, Start of shift 1, P2
01:18, 1, Line stop, P1
02:23, 2, Line restart 50%, P1
04:15, 3, Line speed 100%, P1
08:00, 4, Start of shift 2, P1
09:00, 4, Start of shift 2, P2
11:43, 5, End of production, P1
11:43, 5, End of production, P2
];
 
OrderLog:
LOAD * INLINE [
Start, End, Order, ProductionLine
01:00, 03:35, A, P1
02:30, 07:58, B, P1
03:04, 10:27, C, P1
07:23, 11:43, D, P2
];
 
//Link the field Time to the time intervals defined by the fields Start and End and match the values
// to the key ProductionLine.
Inner Join
IntervalMatch ( Time, ProductionLine )
LOAD Start, End, ProductionLine
Resident OrderLog;

 

Ahora se podría crear un cuadro de tabla como éste:

ProductionLine Time Event Comment Order Start End
P1

00:00

0 Start of shift 1 - - -
P2 01:00 0 Start of shift 1 - - -
P1 01:18 1 Line stop A 01:00 03:35
P1 02:23 2 Line restart 50% A 01:00 03:35
P1 04:15 3 Line speed 100% B 02:30 07:58
P1 04:15 3 Line speed 100% C 03:04 10:27
P1 08:00 4 Start of shift 2 C 03:04 10:27
P2 09:00 4 Start of shift 2 D 07:23 11:43
P1 11:43 5 End of production - - -
P2 11:43 5 End of production D 07:23 11:43