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

uniformiser les dimensions dans le script

Bonjour,

Dans une première table, j'ai un regroupement de code article en famille articles pour calculer les consommations de matières.

Dans une seconde table, j'ai les quantités de stocks par articles et non pas par famille.

Pour faire des rapprochements cela n'est pas simple pour réaliser un tableau. Je souhaiterai avoir un champs me donnant les quantités de stock par familles mais sans perdre l'info du code article.

vous trouvez ci-joint une appli test avec un tableau simple permettant de comprendre.

Pour info, j'ai essayé la formule Mapping et Applymap, mais c'est très flou pour moi

Merci de votre aide

Fabien

1 Solution

Accepted Solutions
brunobertels
Master
Master

Bonjour 

essaye ceci 

FAIT:
LOAD art,
qte,
typeln
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is [bdd]);

ART:
LOAD art,
LIB
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is art);

Join(ART)
LOAD art,
// si cellule > 0 reprend la valeur de la cellule si non prend la valeur du champ art :
if(len(trim(categ))>0,categ,art) as categ
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is categ);

View solution in original post

10 Replies
brunobertels
Master
Master

Bonjour 

essaye ce script ci dessous 

plutôt que applymap ou mapping j epense que ce que tu cherches a faire c'est joindre tes tables entre elles pour en avoir qu'une seule et non 4 tables avec pour clé le champ ART

Pour cela tu peux utiliser la fonction join 

il existe aussi les fonctions leftjoin et rightjoin 

///////////////

final:
LOAD art,
qte_stk
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is [bdd stk]);

conso:
join(final)
LOAD art,
qte_conso
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is [bdd conso]);
drop table conso;


categ:
join(final)
LOAD art,
categ
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is categ);
drop table categ;

lib:
join(final)
LOAD art,
LIB
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is art);
drop table lib;

pirotfab
Creator
Creator
Author

Bonjour,

j'ai essayé le script, mais ça ne répond pas tout à fait à ma demande. dans mon appli, j'ai déjà regroupé les infos stk+conso.

le problème c'est qu'il me manque l'info catégorie de famille dans la table stock ou articles

cdlt

 
brunobertels
Master
Master

Bonjour 

Est ce que vous pouvez envoyer en exemple le fichier excel de test ? je regarderai 

pirotfab
Creator
Creator
Author

Bonjour,

merci du coup de main

ci joint le fichier excel + l'appli.

j'ai finalement fait un join entre ma table art et categ. puis un "if" dans ma dimension. ça à l'air de fonctionner.

Cependant, s'il y a quelque chose de plus propre  faire dans le script je suis preneur !

cdlt

brunobertels
Master
Master

Bonjour 

essaye ceci 

FAIT:
LOAD art,
qte,
typeln
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is [bdd]);

ART:
LOAD art,
LIB
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is art);

Join(ART)
LOAD art,
// si cellule > 0 reprend la valeur de la cellule si non prend la valeur du champ art :
if(len(trim(categ))>0,categ,art) as categ
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is categ);

pirotfab
Creator
Creator
Author

Bonjour,

Merci ça fonctionne bien.

Puis-je vous poser une autre question sur le même principe mais qui avec un autre exemple.

j'ai supprimé dans l'onglet "categ", le code article étant aussi une catégorie. ça donne un résultat différent.

Pensez vous avoir une idée sur le script ?

Merci d'avance

 

brunobertels
Master
Master

Re, 

En effet si vous faites çà çà ne marchera plus , mais je ne comprend pas bien la finalité du coup. 

Est ce que dans la table categ tous les articles ont une catégorie ?

Et est ce que vous voulez comme règle générale que si un art n'a pas de catégorie alors sa catégorie = code art ? 

pirotfab
Creator
Creator
Author

Re,

j'ai les deux cas de figures dans mes applications. Je garde cette exemple pour savoir s'il existe une formule afin de l'adapter à une application.

Dans ma seconde application, si on garde cet exemple, je souhaite effectivement que si un article n'a pas de catégorie alors sa catégorie = code art.

Dans la table categ, tous les articles ont une catégorie, cependant, il existe certain articles qui existe dans la table article mais pas fans la table categ. il s'agit de ceux la qui doivent avoir categ = code article.

 

Cdlt

 

brunobertels
Master
Master

Bonjour 

Ok je penses avoir compris. Du coup , il faut d'abord joindre la table categ à la table Art , puis appliquer le traitement sur le champs categ, bref le faire  une fois les tables jointes et non avant. 

 

On va essayer avec un preceding load comme ceci : ( mais pas sur que ca marche du premier coup , sinon on le fera avec une table provisoire 

//////////////////////

FAIT:
LOAD art,
qte,
typeln
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is [bdd]);

ART:

//preceding load

load*,

// si cellule > 0 reprend la valeur de la cellule si non prend la valeur du champ art :
if(len(trim(categ))>0,categ1,art) as categ

;


LOAD art,
LIB
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is art);

drop field categ1;

Join(ART)
LOAD art,
categ as categ1
FROM
[C:\Users\pirot\Desktop\test.xlsx]
(ooxml, embedded labels, table is categ);