Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
theotshirt
Contributor
Contributor

Gestion de priorités

Bonjour,

Je cherche à créer une application de gestion du pipe d'un atelier de production. 

Celui-ci est composé de plusieurs machines (machines1 / machines2) qui peuvent produire des pièces différentes. (pièces 1 / pièces 2 / pièces 3)

Une pièce peut-être produite par plusieurs machines, du coup j'obtiens un tableau de la forme : 

Capture d’écran 2020-02-13 à 18.48.42.png

 

 

 

J'aimerai pouvoir spécifier des priorités au sein de mes machines. Par exemple dire que Machine 2 est prioritaire sur Machine 1 pour obtenir le résultat suivant :

Capture d’écran 2020-02-13 à 18.52.16.png

 

 

J'arrive déjà à obtenir ce résultat avec un if. Néanmoins cela ne me convient pas. J'aimerai pouvoir figer ces règles de priorités dans mon application.

Est-il possible de le faire au moment où je charge mes données ? Ou dois-je créer de nouvelles datas ? 

 

Si quelqu'un a une idée, je suis preneur. 

Bonne journée

1 Solution

Accepted Solutions
Taoufiq_Zarra

Data:
LOAD * INLINE [
A,X, C, D
121902,249467, A, GT
121902,249467, po, P
121901,249466, ahy, B
121900,249465, ttt, B
121899,249463, fg, B
121891,249449, df, G
121891,249450, AZ, B
121883,249427, AZ, GT
121883,249427, A, P
];

Press:
noconcatenate
load X as k,* resident Data where D='P';
join
load * resident Data where not Exists (k,X);

drop table Data;
drop field k;
Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉

View solution in original post

5 Replies
Taoufiq_Zarra

Bonjour,

si la règle de priorité est que la dernière machine qui a fabriqué la pièce, alors tu peux utiliser ce script en Load:

 

Data:
LOAD rowNo() as ID,* INLINE [
    Pièces, Machines
    Pièces 1, Machines 1
    Pièces 1, Machines 2
    Pièces 2, Machines 1
    Pièces 3, Machines 1
    Pièces 3, Machines 2
];

output:
noconcatenate

load Pièces,FirstSortedValue(Machines,-ID) as Machine resident Data group by Pièces Order by Pièces;

drop table Data;

 

le output :

Capture.PNG

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉
theotshirt
Contributor
Contributor
Author

Merci pour votre réponse. 

 

En fait, mes machines proviennent d'une data "name.machine" et les pièces de "names.pieces". 

Au sein de ces machines j'ai toujours le même ordre de priorité (machine 1 > machines 2), ce n'est donc pas forcément la dernière machine a avoir fait la pièce qui est prioritaire. 

Bonne journée

 

 

 

Taoufiq_Zarra

si j'ai bien compris, et si vous avez les machines nommées : machine 1, machine 2,...

je vous propose cette solution :

Data:
LOAD * INLINE [
    Pièces, Machines
    Pièces 1, Machines 1
    Pièces 1, Machines 2
    Pièces 2, Machines 1
    Pièces 3, Machines 1
    Pièces 3, Machines 2

];

output:
noconcatenate

load Pièces,MaxString(Machines) as Machine resident Data group by Pièces Order by Pièces;

drop table Data;

 

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉
theotshirt
Contributor
Contributor
Author

Bonjour, 

Cela fonctionne avec cet exemple mais ne correspond pas exactement à mon besoin. 

Je prépare des exemples plus complets et reviens vers vous. 

Taoufiq_Zarra

Data:
LOAD * INLINE [
A,X, C, D
121902,249467, A, GT
121902,249467, po, P
121901,249466, ahy, B
121900,249465, ttt, B
121899,249463, fg, B
121891,249449, df, G
121891,249450, AZ, B
121883,249427, AZ, GT
121883,249427, A, P
];

Press:
noconcatenate
load X as k,* resident Data where D='P';
join
load * resident Data where not Exists (k,X);

drop table Data;
drop field k;
Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉