Qlik Community

Groupe des Utilisateurs Francophones

Vous êtes francophone? Ce groupe est pour vous. Venez découvrir comment démarrer avec Qlik Sense et QlikView, poser vos questions et partager vos tutos et astuces avec les membres de notre communauté.

sfatoux72
Valued Contributor

Re: intevalmatch successifs

Parfait, mais "utile"

Merci

Highlighted
flochi75
Contributor III

Re: intevalmatch successifs

bonjour Sébastien,

je reviens vers toi car j'ai des résultats bizarres :

j'ai voulu étendre l'appli (que je te joins également) sur d'autres unités, et j'ai des dossiers "exclus" à tort.

peux tu m'éclairer ?

Capture.JPG

Merci

sfatoux72
Valued Contributor

Re: intevalmatch successifs

Bonjour Florent,

J'ai trouvé la raison et la solution.

Pour ton bien 😉 , je vais te laisser réfléchir un peu sur la raison en te donnant 2 indices avant de te donner la solution

Indice 1 : le problème est lié à l'utilisation de l'IntervalMatch

Indice 2 : regarde les date d'entrée (DENTSJL) et de sortie (DSORSJL)

flochi75
Contributor III

Re: intevalmatch successifs

Je n'en attendais pas moins de toi

j'imagine parce que c'est la même date, même si ce n'est pas la même heure...

mais je ne sais pas comment résoudre ce pb.. tu rajoutes une condition en script du genre

if(DATE(DSORSJL)=DATE(DENTSJL), DATE(DSORSJL)+1, DATE(DSORSJL)) as DSORSJLCORR ???

je voulais faire tout en 1 seule appli, les longs séjours sur plusieurs années, qui ne posent pas de pb, et les courts-séjours, et c'est sur ceux de 0 jour qu'il y a pb...

sfatoux72
Valued Contributor

Re: intevalmatch successifs

Il y a en fait un problème sur tous les séjours (sauf exception), mais c'est flagrant sur ceux d'une seul journée.

IntervalMatch permet de lier des dates de référence (Calendrier) avec des intervalles (DateDébut et DateFin).

Les dates de référence n'ont pas d'heure, il faut donc considérer le 01/01/2016 comme 01/01/2016 00:00:00.

Dans ton exemple on a l'intervalle suivante 01/01/2016 01:51:00 et 01/01/2016 11:36:00. On a donc aucune date de référence qui tombe dans cette intervalle. Et c'est le cas pour la 1ère journée de chaque séjour (sauf ceux qui sont arrivé à minuit 00:00:00).

La solution consiste simplement à ramener DateDébut de l'intervalle au début de la journée dans les tables de LINK_... .

On aura alors ça:

//*********************************************************
//* Création des tables LINK_...
//*********************************************************
LINK_REF:
LOAD
CLELINK_REF,
CLEDOS_tmp  as CLEDOS,
DayStart(DENTSJLas DateDebut,
(
DSORSJL-0.000001)  as DateFin  //==> ATTENTION les date de début sont identique au date de fin de l'intervalle précédente
Resident REF_CHAMBRE;

LINK_GIR:
LOAD
CLELINK_GIR,
CLEGIR_tmp  as CLEGIR,
DayStart(DAEFGIRas DateDebut,
DAFIGIR  as DateFin
Resident GIR;

LINK_DMT:
LOAD
CLELINK_DMT,
CLEDMT_tmp  as CLEDMT,
DayStart(DATESEas DateDebut,
(
DATSSE-0.000001)  as DateFin  //==> ATTENTION les date de début sont identique au date de fin de l'intervalle précédente
Resident DMT;

DROP Fields CLEGIR_tmp, CLEDMT_tmp, CLEDOS_tmp;

flochi75
Contributor III

Re: intevalmatch successifs

Merci Sébastien,

sans ton aide je n'aurai pas trouvé cette solution.

Florent