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: 
mahieuphilippe
Creator
Creator

Calcul d'un pourcentage dans un graphique combiné

Bonjour,

J'ai actuellement un grahique par semaine qui indique le nombre de carte cloturée et non clôturée par semaine,

j'aimerai effectué un pourcentage de realisation par semaine   -

on peut voir par exemple que pour la semaine 29    33 cartes ont été planifiés sur  38  (33 + 5 planifié) et donc 86,8 % de realisation

001.JPG

voice les dimensions  , le 'inhistory'  (false ou true) permet de distinguer les planifiés des clotures

002.JPG

J'ai essayer de transformer une formule (merci Sébastien F. !!)  mais sans success  (pourtant j'ai tout tenté)

AGGR( RangeSum (Above(count({$<START_DATE=>} WO_KEY ),0,52))/RangeSum (Above(count({$<START_DATE=>}WO_KEY),0,52)),InHistory,START_DATE)

si quelqu'un peut m'aider  ..

merci

voici les données :

35 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Peux-tu également ajouter ces 2 expressions :

  • Count(WO_KEY)
  • Count(TOTAL <InHistory> WO_KEY)

Ou mieux, nous transmettre le petit jeu de donnée

mahieuphilippe
Creator
Creator
Author

Sébastien, voici ton resultat :

mahieuphilippe
Creator
Creator
Author

j'ai ajouter une partie des données dans excel

Philippe

lcloatre
Partner - Creator III
Partner - Creator III

Et si tu ajoutes cette 4ème expression, ça ne fonctionne pas ?

=count( {<InHistory = {'TRUE'}  >}  WO_KEY) / count( {<InHistory =   >}  WO_KEY)*100

sfatoux72
Partner - Specialist
Partner - Specialist

Ajoute celle-ci :

Count({$<InHistory={'TRUE', 'FALSE'}>} TOTAL <InHistory> WO_KEY)

mahieuphilippe
Creator
Creator
Author

voici ton résultat  expression '4'

010.JPG

mahieuphilippe
Creator
Creator
Author

voici

sfatoux72
Partner - Specialist
Partner - Specialist

Ok, j'ai trouvé mon erreur, mais il me faut un champ WeekDate dans ton modèle (week(START_DATE) as WeekDate)

Et tu pourras utiliser cette expression:

=Count(WO_KEY) / Count(TOTAL <WeekDate> WO_KEY)

mahieuphilippe
Creator
Creator
Author

merci mais mes données proviennent directement d'une db ,   je ne sais pas trop où placer ton script ......

si c'est possible ?

SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='€ #.##0,00;€ -#.##0,00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='D/MM/YYYY';
SET TimestampFormat='D/MM/YYYY hh:mm:ss[.fff]';
SET FirstWeekDay=0;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET FirstMonthOfYear=1;
SET CollationLocale='fr-BE';
SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';
SET LongMonthNames='janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre';
SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';
SET LongDayNames='lundi;mardi;mercredi;jeudi;vendredi;samedi;dimanche';



LET minDate = input('Entrez la date de début','Input');
LET maxDate = input('Entrez la date de fin','Input');





ODBC CONNECT32 TO ODBC_APIPRO (XUserId is TVdAbJFLTCUEVHdISKRGVJVJ, XPassword is WYcVcJFLTCUEVHdISKRGVJdI);


load

(
week(START_DATE) as WeekDate);




SELECT
WO_Key,
'FALSE' as 'InHistory',
"jobstatus#",
start_date,
end_date,
MO_name,
WO_name,
job_type,
Jobexec_date,
work_supplier_key
FROM
pub.Work_order
where Work_order.start_date >= ('$(minDate)') and Work_order.start_date <= ('$(maxDate)') and Work_order.end_date >= ('$(minDate)') and Work_order.end_date <= ('$(maxDate)')
and Work_order.job_type <> 'U' and Work_order."jobstatus#" in ('5','6','10')
and Work_order.work_supplier_key <> 'Cofely'


UNION


SELECT
WO_Key,
'TRUE' as 'InHistory',
"jobstatus#",
start_date,
end_date,
MO_name,
WO_name,
job_type,
Jobexec_date,
work_supplier_key
FROM
pub.Work_history
WHERE Work_history.Jobexec_date>= ('$(minDate)') and Work_history.Jobexec_date<= ('$(maxDate)') and
Work_history.start_date>= ('$(minDate)') and Work_history.start_date<= ('$(maxDate)') and Work_history.end_date>= ('$(minDate)') and Work_history.end_date<= ('$(maxDate)')
and Work_history.job_type <> 'U'
and Work_history.work_supplier_key <> 'Cofely';

sfatoux72
Partner - Specialist
Partner - Specialist

Dans les LOAD, il faut mettre * pour récupérer tout les champs de ta requête et ajouter le nouveau champ :

SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='€ #.##0,00;€ -#.##0,00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='D/MM/YYYY';
SET TimestampFormat='D/MM/YYYY hh:mm:ss[.fff]';
SET FirstWeekDay=0;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET FirstMonthOfYear=1;
SET CollationLocale='fr-BE';
SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';
SET LongMonthNames='janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre';
SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';
SET LongDayNames='lundi;mardi;mercredi;jeudi;vendredi;samedi;dimanche';



LET minDate = input('Entrez la date de début','Input');
LET maxDate = input('Entrez la date de fin','Input');





ODBC CONNECT32 TO ODBC_APIPRO (XUserId is TVdAbJFLTCUEVHdISKRGVJVJ, XPassword is WYcVcJFLTCUEVHdISKRGVJdI);


LOAD
    *,
   
week(start_date) as WeekDate;
SQL SELECT
WO_Key,
'FALSE' as 'InHistory',
"jobstatus#",
start_date,
end_date,
MO_name,
WO_name,
job_type,
Jobexec_date,
work_supplier_key
FROM
pub.Work_order
where Work_order.start_date >= ('$(minDate)') and Work_order.start_date <= ('$(maxDate)') and Work_order.end_date >= ('$(minDate)') and Work_order.end_date <= ('$(maxDate)')
and Work_order.job_type <> 'U' and Work_order."jobstatus#" in ('5','6','10')
and Work_order.work_supplier_key <> 'Cofely'


UNION

SELECT
WO_Key,
'TRUE' as 'InHistory',
"jobstatus#",
start_date,
end_date,
MO_name,
WO_name,
job_type,
Jobexec_date,
work_supplier_key
FROM
pub.Work_history
WHERE Work_history.Jobexec_date>= ('$(minDate)') and Work_history.Jobexec_date<= ('$(maxDate)') and
Work_history.start_date>= ('$(minDate)') and Work_history.start_date<= ('$(maxDate)') and Work_history.end_date>= ('$(minDate)') and Work_history.end_date<= ('$(maxDate)')
and Work_history.job_type <> 'U'
and Work_history.work_supplier_key <> 'Cofely';