Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
ab92
Creator II
Creator II

Ajouter un flag 1 à +48h sur une date

Bonjour,

Je vous propose un fichier Excel (sample_data) pour vous faire comprendre ce que je souhaite.

Par ailleurs, ci-dessous vous trouverez plus de détails sur la condition que je souhaite réaliser et l'explication du fichier Excel :

- Condition : marquer les dates_conso >= 48h (cad si date conso = 10/01/2020 à 8h additionner la date à + 48h = 12/01/2020 à 8h pour chaque num_sej). Cela me permettra donc du coup de récupérer les produits consommés dans les premières 48h du clients.

- Colonne g du fichier : explique de nouveau ce que je souhaite réaliser mais autrement. Par ailleurs je n'ai pas besoin de votre aide pour réaliser un compteur, j'ai pu solutionner ce problème.

Bonne journée !

Axel B

1 Solution

Accepted Solutions
Taoufiq_Zarra

Bonjour,

si j'ai bien compris, ci-joint une solution :

Data:

LOAD Num_Sej, 
     Timestamp(Date(Date_dbt)+Maketime(08,00,00)) as Date_dbt , 
     Timestamp(Date(Date_fin)+Maketime(08,00,00)) as Date_fin, 
     Timestamp(Date(Date_conso)+Maketime(08,00,00)) as Date_conso, 
     Code_Prod, 
     Num_Client 
FROM
.\Sample_Data.xlsx
(ooxml, embedded labels, table is Feuil1);


temp:

load Num_Client,
Timestamp(min(Date_conso)+48/24) as min 
resident Data group by Num_Client;
left join load * resident Data;

drop table Data;

output:
noconcatenate

load Num_Sej,Date_dbt,Date_fin,Date_conso,Code_Prod,Num_Client,
if(Date_conso<=min,1,0) as Flag
resident temp;

drop table temp;

 

 puisque le fichier example ne contient pas de Time, donc j'ai ajouté par defaut 08:00:00 sinon tu peux utiliser les fichiers sources

après un groupement par client pour identifer le min+48h donc date+48/24 avec un left joint

puis le flag qui identifier si ou pas la date conso<= le min

résultats:

Capture.JPG

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

9 Replies
Taoufiq_Zarra

Bonjour,

si j'ai bien compris, ci-joint une solution :

Data:

LOAD Num_Sej, 
     Timestamp(Date(Date_dbt)+Maketime(08,00,00)) as Date_dbt , 
     Timestamp(Date(Date_fin)+Maketime(08,00,00)) as Date_fin, 
     Timestamp(Date(Date_conso)+Maketime(08,00,00)) as Date_conso, 
     Code_Prod, 
     Num_Client 
FROM
.\Sample_Data.xlsx
(ooxml, embedded labels, table is Feuil1);


temp:

load Num_Client,
Timestamp(min(Date_conso)+48/24) as min 
resident Data group by Num_Client;
left join load * resident Data;

drop table Data;

output:
noconcatenate

load Num_Sej,Date_dbt,Date_fin,Date_conso,Code_Prod,Num_Client,
if(Date_conso<=min,1,0) as Flag
resident temp;

drop table temp;

 

 puisque le fichier example ne contient pas de Time, donc j'ai ajouté par defaut 08:00:00 sinon tu peux utiliser les fichiers sources

après un groupement par client pour identifer le min+48h donc date+48/24 avec un left joint

puis le flag qui identifier si ou pas la date conso<= le min

résultats:

Capture.JPG

Regards,
Taoufiq ZARRA

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

(you can mark up to 3 "solutions") 😉
ab92
Creator II
Creator II
Author

Bonjour Taoufiq,

Je te remercie pour ta réactivité, je vais tester du coup cela cette aprem.

Ab

ab92
Creator II
Creator II
Author

Bonjour Taoufiq,

Je viens de réaliser des tests et je suis bloqué des ta première explications...

Je n'arrive pas à comprendre à ce que tu souhaites réaliser avec ce script :

timestamp(date(Date_dbt)maketime(08,00,00)) as Date_dbt

Tu comptes récupérer les horraires de chaque séjour ?

Pour la suite bien entendu pour le moment en regardant cela me parait être la logique que je souhaite ...

En te remerciant

A

 

 

Taoufiq_Zarra

Bonjour, d'après ce que j'ai compris dans ta question : 10/01/2020 à 8h  mais dans le fichier test que tu as envoyé il ya que la date par exemple 10/01/2020 donc j'ai ajouter la ligne

 Timestamp(Date(Date_dbt)+Maketime(08,00,00)) as Date_dbt

par exemple pour pouvoir afficher 10/01/2020 08:00:00

sinon en production si tu as l'heure déjà dans le champs Date_dbt tu peux utiliser juste :

 Timestamp(Date_dbt) as Date_dbt,

 

Regards,
Taoufiq ZARRA

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

(you can mark up to 3 "solutions") 😉
ab92
Creator II
Creator II
Author

D'accord, stupid question du coup je n'avais pas idée de cette fonction car effectivement en prod j'ai tout mes dates affiliées avec des horaires... Ce qui du coup m'évite d'utiliser cette fonction mais du coup je te remercie ça me permet de comprendre un peux mieux les config possible avec les champs dates et heures ^^

En te remerciant !

ab92
Creator II
Creator II
Author

Taoufiq,

Après plusieurs tests, je comprends pas, je viens de changer le format et je pense que mon problème est clairement du à cela car quand j'effectue ton calcul Qlikview m'indique : invalid expression

Calcul : Timestamp(min(date_conso)+48/24) as min

ex de champ sur date_conso

22/06/2016 07:30:00
22/06/2016 18:30:00
22/06/2016 22:00:00
23/06/2016 07:30:00
23/06/2016 16:00:00
23/06/2016 18:00:00
23/06/2016 18:30:00
23/06/2016 22:00:00
24/06/2016 07:30:00
24/06/2016 08:00:00
24/06/2016 11:30:00

 

En te remerciant encore pour ton aide

Taoufiq_Zarra

Je n'arrive pas à voir l'erreur dan le syntaxe

est ce que tu peux utiliser la version en PJ et partager l'ecran d'erreur

Regards,
Taoufiq ZARRA

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

(you can mark up to 3 "solutions") 😉
ab92
Creator II
Creator II
Author

Je pense que mon script comportait une erreur sur le chargement de données

J'ai copier ton script tout est fonctionnel, je ne t'avais même pas expliqué en plus que les num_sej était identique en fonction de la localisation : cad 1008 dispo sur loc 1 et 2 et 4 sur 10 loc. Même cette condition est pris en compte, c'est top !

Cependant en regardant je vois qu'il y a de forte chance par rapport au résultat que l'échelle de résultat ne soit pas borner par rapport au première 48h des l'arrivé mais par rapport première 48h de date de conso. Je vais réfléchir à ce pb en te remerciant, je te souhaite excellente journée !

 

 

Taoufiq_Zarra

au cas où tu détectes un problème avec les 48h partage l'erreur ici pour voir ensemble

Excellent journnée également

Regards,
Taoufiq ZARRA

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

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