IntervalMatch
Le préfixe IntervalMatch permet de créer une table faisant correspondre des valeurs numériques discrètes à un ou plusieurs intervalles numériques et, de manière facultative, faisant correspondre les valeurs d'une ou de plusieurs clés supplémentaires.
Syntax:
IntervalMatch (matchfield)(loadstatement | selectstatement )
IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )
Le préfixe
Les intervalles peuvent se superposer et les valeurs discrètes sont alors liées à tous les intervalles correspondants.
Le préfixe
Afin d'éviter la non-prise en compte des limites d'intervalle non définies, il peut s'avérer nécessaire d'autoriser le mappage des valeurs
Arguments:
Argument | Description |
---|---|
|
Champ contenant les valeurs numériques discrètes à lier aux intervalles. |
|
Champs contenant les attributs supplémentaires auxquels les points doivent correspondre dans la transformation. |
|
Doit produire une table dont les deux premiers champs contiennent respectivement les limites inférieure et supérieure de chaque intervalle et, en cas d'utilisation de la correspondance de clés, le troisième champ et les suivants contiennent les champs clés figurant dans l'instruction IntervalMatch. Les intervalles sont toujours fermés, c'est-à-dire que les points de fin sont inclus dans l'intervalle. Les limites non numériques génèrent l'intervalle à ignorer (limites non définies). |
Example 1:
Dans les deux tables ci-dessous, la première définit les heures de début et de fin pour la production de différentes commandes. La deuxième dresse la liste d'un certain nombre d'événements discrets. Au moyen du préfixe IntervalMatch, il est possible de connecter les deux tables de manière logique afin de rechercher, par exemple, les commandes ayant subi des perturbations et les commandes ayant été traitées par telle ou telle équipe.
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;
Résultat :
La table OrderLog contient à présent une colonne supplémentaire : Time. Le nombre d'enregistrements est également étendu.
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: (en utilisant
Il s'agit du même exemple que ci-dessus, avec l'ajout de ProductionLine en tant que champ clé.
Résultat :
Une zone table peut à présent être créée comme ci-dessous :
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 |