Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour, je travail sur Qlik sense cloud et j'ai un problème avec la table que j'essaie de faire.
voici un extrait des deux tables dans lesquelles je vais chercher mes informations pour que vous comprenez mieux par la suite.
Table 1
Code_SITE | Code_etape | date
69333 | 2937 | 14/11/2017 |
69337 | 2934 | 02/02/2018 |
69338 | 2937 | 24/01/2018 |
69338 | 2946 | 29/01/2018 |
69339 | 2946 | 11/12/2017 |
69339 | 2937 | 11/12/2017 |
69339 | 2972 | 31/01/2018 |
69351 | 2946 | 16/01/2018 |
69351 | 2937 | 24/01/2018 |
69358 | 2934 | 29/11/2017 |
69359 | 2934 | 28/11/2017 |
69359 | 2937 | 28/11/2017 |
69359 | 2946 | 16/01/2018 |
table 2
69333 | 2928 | 19/05/2017 |
69333 | 2952 | 06/12/2017 |
69334 | 2928 | 04/12/2017 |
69334 | 2952 | 06/12/2017 |
69335 | 2928 | 01/12/2017 |
69335 | 2952 | 04/12/2017 |
69337 | 2928 | 30/11/2017 |
69337 | 2952 | 01/12/2017 |
69338 | 2928 | 19/05/2017 |
69338 | 2962 | 23/01/2018 |
69338 | 2960 | 24/01/2018 |
69338 | 2953 | 29/01/2018 |
ce que je voudrais faire c'est donc un tableau avec tous les codes sites la date de la table 1 la date de la table 2 et une colonne avec la fonction networkday(date_table1,date_table2, [jours fériés] ) et parfois il n'y pas de Date_table2 renseigner, dans ce cas la je remplace date_table_2 par today()
MAIS je ne dois prendre dans la table 1 que les date pour les code_etape 2937 ,2997 ,3036 et 3075, 3114
et dans la table 2 pour les code_etape 2960, 3003, 3042, 3081 et 3120
Si j'utilise deux volets de filtre pour les code_etape de chaque table et je coche mes étapes je rencontre une problème car si je fais cela je perd certain code site et je ne peux plus faire ma deuxième version de networkday avec today() en date de fin car ce qui ce passe c'est que si je coche mes étapes par exemple pour le code site 69333 on a dans la table 1 l'étape 2937 donc j'aurai bien un résultat mais dans la table2 aucune des mes étapes cochés ne sera renseigné donc ce qui va ce passer c'est que le site 69333 va disparaître de ma liste de code_site et puisqu'il disparaît quand la date table 2 n'est pas renseigné m'as fonction avec today() n'apparait même pas.
Il faudrait donc que je puisse conserver tous mes code site en cochant les filtres ou que je trouve une autre solution.
J'ai tester autre chose mais cela n'as pas fonctionner, j'ai voulu afficher mes date voulu avec des if comme ceci " if(Table1.code_etape =2937 , table1.date) " mais cela ne fonctionne pas car comme dans mes tables je peux avoir plusieurs fois le même code site mais sur des étapes différentes il ne teste que la première ligne puis passe à au prochain code site donc si la première étape de mon code site est 2937 cela fonctionne par contre si cette étape n'est pas en première position cela ne fonctionne pas cela ne fonctionne pas.
Je ne sais pas si j'ai était très clair, n'hésitez pas à demander des informations complémentaires.
Bonjour,
Si j'ai bien compris le besoin, le script suivant devrai marcher pour toi :
(J'ai mis dans deux onglets différent d'un fichier excel tes deux tables)
// Code étapes pour filter les chargements
Filtres:
LOAD * Inline [
P1,P2
2937,2960
2997,3003
3036,3042
3075,3081
3114,3120
];
TEMP:
LOAD Code_SITE,
Date1 as Date_Debut
FROM
(ooxml, embedded labels, table is Feuil2)
where exists(P1,Code_Etape) ; //on garde les étapes présentes dans le champs P1
left join(TEMP) // On ramène dans la table la deuxième date pour chaque site
LOAD Code_SITE,
Date2 as Date_Fin
FROM
(ooxml, embedded labels, table is Feuil3)
where exists(P2,Code_Etape) ;//on garde les étapes présentes dans le champs P2
Durées:
LOAD Code_SITE,
Date_Debut,
Date_Fin,
NetWorkDays(Date_Debut,alt(Date_Fin,today())) as Durée // fonction pour calcul entre deux dates. la fonction Alt()
//remplace les dates de fin vides avec la date du jour
Resident TEMP;
drop table TEMP;
Bonjour,
Si j'ai bien compris le besoin, le script suivant devrai marcher pour toi :
(J'ai mis dans deux onglets différent d'un fichier excel tes deux tables)
// Code étapes pour filter les chargements
Filtres:
LOAD * Inline [
P1,P2
2937,2960
2997,3003
3036,3042
3075,3081
3114,3120
];
TEMP:
LOAD Code_SITE,
Date1 as Date_Debut
FROM
(ooxml, embedded labels, table is Feuil2)
where exists(P1,Code_Etape) ; //on garde les étapes présentes dans le champs P1
left join(TEMP) // On ramène dans la table la deuxième date pour chaque site
LOAD Code_SITE,
Date2 as Date_Fin
FROM
(ooxml, embedded labels, table is Feuil3)
where exists(P2,Code_Etape) ;//on garde les étapes présentes dans le champs P2
Durées:
LOAD Code_SITE,
Date_Debut,
Date_Fin,
NetWorkDays(Date_Debut,alt(Date_Fin,today())) as Durée // fonction pour calcul entre deux dates. la fonction Alt()
//remplace les dates de fin vides avec la date du jour
Resident TEMP;
drop table TEMP;
Je vais essayer mais cela semble bien être ce que je chercher à faire, merci beaucoup.