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

Problème de filtre/critère

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                                                                                               

69333293714/11/2017
69337293402/02/2018
69338293724/01/2018
69338294629/01/2018
69339294611/12/2017
69339293711/12/2017
69339297231/01/2018
69351294616/01/2018
69351293724/01/2018
69358293429/11/2017
69359293428/11/2017
69359293728/11/2017
69359294616/01/2018

    

table 2

69333292819/05/2017
69333295206/12/2017
69334292804/12/2017
69334295206/12/2017
69335292801/12/2017
69335295204/12/2017
69337292830/11/2017
69337295201/12/2017
69338292819/05/2017
69338296223/01/2018
69338296024/01/2018
69338295329/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.

1 Solution

Accepted Solutions
christophebrault
Specialist
Specialist

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;

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin

View solution in original post

2 Replies
christophebrault
Specialist
Specialist

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;

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
Anonymous
Not applicable
Author

Je vais essayer mais cela semble bien être ce que je chercher à faire, merci beaucoup.