Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
stephaniee
Creator
Creator

Valeur selon dernière date

Bonjour, 

Je cherche à récuperer la derniere valeur du champ "disponibilite_atelier". 

Ma table est la suivante : 

LOAD
[Id_MyCaps_Disponibilite],
[Id_Garage] AS [Id_Garage-NUM_MF],
[Date_Planning],
if(len(Date_Planning)>0,
if((Date_Planning - today(0))>=7,'Semaine 2',
if((Date_Planning - today(0))>=0,'Semaine 1','Passé'))) as Semaine_Planning,
[Disponibilite_Atelier],
[Disponibilite_Cat_A],
if(([Disponibilite_Cat_A])=0,'Non-Renseigne',
if(([Disponibilite_Cat_A])=1,'Disponible',
if(([Disponibilite_Cat_A])=2,'Indisponible')))as Dispo_Cat_A,
[Disponibilite_Cat_B],
[Disponibilite_Cat_C],
[Disponibilite_Cat_D],
[Disponibilite_Cat_E],
[Disponibilite_Cat_F],
[Disponibilite_Cat_VU],
[Date_Creation] AS [mycaps_disponibilite.Date_Creation],
[Cree_Par] AS [mycaps_disponibilite.Cree_Par];
SQL SELECT `Id_MyCaps_Disponibilite`,
`Id_Garage`,
`Date_Planning`,
`Disponibilite_Atelier`,
`Disponibilite_Cat_A`,
`Disponibilite_Cat_B`,
`Disponibilite_Cat_C`,
`Disponibilite_Cat_D`,
`Disponibilite_Cat_E`,
`Disponibilite_Cat_F`,
`Disponibilite_Cat_VU`,
`Date_Creation`,

Ma formule actuelle de calcul est la suivante (à laquelle il manque la notion de dernière valeur) : 

(Count({<Disponibilite_Atelier = {'1'}>} Distinct [Id_Garage-NUM_MF]))

Avez-vous une idée ? Je coince. 

Merci,

Stéphanie

 

 

1 Solution

Accepted Solutions
brunobertels
Master
Master

Bonjour stéphanie 

 

Sur la base de ton fichier Excel que tu as joins en exemple voici une ébauche de solution

 

script ( à adapter) 

 

table:
LOAD
Id_Garage,
Date_Planning,
Disponibilite_Atelier,
Date_Creation
FROM [lib://bureau/Exemple Date_Dispo_Réparateur.xlsx]
(ooxml, embedded labels, table is Feuil1);

left join (table)
Load
Max(Date_Creation) as Date_Creation,
if(Date_Creation=max(Date_Creation),'1') as FLAG,
Id_Garage,
Date_Planning,
Disponibilite_Atelier


resident table
where Disponibilite_Atelier ='1' //and Date_Creation ='$(max(Date_Creation))'
group by Id_Garage,Date_Planning,Date_Creation,Disponibilite_Atelier;

 

je te joins le fichier qvf 

 

voir ci dessous 

en date du 12/02 pour ID garage MF0040 : 

Disponibilté atelier = 1 

Date création 07/02/2019 

et J'ai bine en flag la valeur 1 

 

Tu peux utiliser le flag ensuite pour tes calculs 

Capture.PNG

View solution in original post

7 Replies
brunobertels
Master
Master

Bonjour 

Il faut utiliser un de tes champs date,  le plus approprié , pour avoir la dernière valeur du champs disponibilité atelier 

 

stephaniee
Creator
Creator
Author

Bonjour, 

OK - La date la plus appropriée est le champs : [Date_Creation] AS [mycaps_disponibilite.Date_Creation]. 

Selon moi, je dois créer une nouvelle table en écrivant qqchose comme ceci : 

Ma_table_2 :
LOAD `Id_Garage`,
`Date_Planning`,
mettre formule pour récupérer la dernière valeur en lien avec date_creation pour chaque date planning par garage.
Resident ma_table
Group By Id_Garage,Date_Planning;

L'idée est d'avoir pour chaque date_planning la derniere disponibilité (champ Disponibilite_Atelier) renseignée pour chaque réparateur. 

Aurais-tu une idée de comment j'écris que je veux la dernière date dans cette table 2 ?

J'ai trouvé des choses qui ressemble à çà mais aucun idée de comment les utiliser... 

=Only(Aggr(max(date),.... ))

Je te joins en PJ en exemple de données extrait de ma table.

Encore merci pour ton aide, 

Stéphanie

ezkurdim
Contributor II
Contributor II

Hello Stéphanie,

Si tu dois récupérer pour id_Garage et une Date_Planning la valeur de Disponibilite_Atelier en fonction de la plus grande Date_Creation tu peux essayer ceci:

[Date Disponible Reparateur]:
LOAD Id_Garage, Date_Planning, Disponibilite_Atelier, Date_Creation
FROM ....;

Left join([Date Disponible Reparateur])

MaxDateDispo:
LOAD
Id_Garage, Date_Planning, Max(Date_Creation) as Date_Creation, 'OUI' as IsLastValue Resident [Date Disponible reparateur]
group by Id_Garage,  Date_Planning
;

Tu peux ensuite filtrer tes résultats en utilisant le champs 'IsLastValue' ou l'utliser en Set Analysis si tu fais des calculs.

Cette solution garde le même nbre de record chargé dans ton modèle.

Si tu veux réduire tes enregistrements et ne garder que les record qui correspondent à la dernière valeur max, tu changes simplement la jointure --> Inner join([Date Disponible Reparateur])

Voili voilou

Raymond

stephaniee
Creator
Creator
Author

Merci pour ton aide !
J'ai une erreur dans mon chargement et je ne comprend pas où.
L'erreur suivante s'est produite:
No qualified path for file: ***
Emplacement de l'erreur:
[Date_Disponible_Reparateur]:
LOAD Id_Garage,
Date_Planning,
Disponibilite_Atelier,
[mycaps_disponibilite.Date_Creation]
FROM `capsnaff`.`mycaps_disponibilite`

Et j'ai écris ceci :
[Date_Disponible_Reparateur]:
LOAD Id_Garage,
Date_Planning,
Disponibilite_Atelier,
[mycaps_disponibilite.Date_Creation]
FROM `capsnaff`.`mycaps_disponibilite`;

Inner join([Date_Disponible_Reparateur])

MaxDateDispo:
LOAD
Id_Garage,
Date_Planning,
Max([mycaps_disponibilite.Date_Creation]) as Date_Creation_Dispo_Ateli,
'OUI' as IsLastValue
Resident [Date_Disponible_Reparateur]
group by Id_Garage, Date_Planning;

Peux-tu me donner un autre coup de main stp ?

Par ailleurs, comment intégrer ce critère dans ma formule de calcul par la suite ?
Merci,
Stéphanie
stephaniee
Creator
Creator
Author

J'ai modifié le From par Resident, et le script passe. Pour autant, je n'ai pas le resultat souhaité. 

La valeur 'OUI' est visible pour toutes les dates et il ne remonte pas la dernière date uniquement. 

En PJ, une illustration de ce que j'obtiens.

As-tu une idée de mon problème ? Est-ce la modification du From par Resident ? 

Encore merci,

Stéphanie

 

stephaniee
Creator
Creator
Author

J'ai modifié le From par Resident, et le script passe. Pour autant, je n'ai pas le resultat souhaité. 

La valeur 'OUI' est visible pour toutes les dates et il ne remonte pas la dernière date uniquement. 

En PJ, une illustration de ce que j'obtiens.

As-tu une idée de mon problème ? Est-ce la modification du From par Resident ? 

Encore merci,

Stéphanie

 

brunobertels
Master
Master

Bonjour stéphanie 

 

Sur la base de ton fichier Excel que tu as joins en exemple voici une ébauche de solution

 

script ( à adapter) 

 

table:
LOAD
Id_Garage,
Date_Planning,
Disponibilite_Atelier,
Date_Creation
FROM [lib://bureau/Exemple Date_Dispo_Réparateur.xlsx]
(ooxml, embedded labels, table is Feuil1);

left join (table)
Load
Max(Date_Creation) as Date_Creation,
if(Date_Creation=max(Date_Creation),'1') as FLAG,
Id_Garage,
Date_Planning,
Disponibilite_Atelier


resident table
where Disponibilite_Atelier ='1' //and Date_Creation ='$(max(Date_Creation))'
group by Id_Garage,Date_Planning,Date_Creation,Disponibilite_Atelier;

 

je te joins le fichier qvf 

 

voir ci dessous 

en date du 12/02 pour ID garage MF0040 : 

Disponibilté atelier = 1 

Date création 07/02/2019 

et J'ai bine en flag la valeur 1 

 

Tu peux utiliser le flag ensuite pour tes calculs 

Capture.PNG