IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

Détermination de plages de valeur (ouverture / fermeture)


Sujet :

Développement de jobs

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Détermination de plages de valeur (ouverture / fermeture)
    Bonjour,
    Dans une table (Sql Server), j'ai une succession de lignes : Heure, état
    J'ai besoin de regrouper par changement d'état.
    Un petit exemple:
    08:00;0
    08:01;0
    08:10;0
    08:12;1
    08:13;1
    09:00;0
    10:10 0
    En gros, à 8 heures, c'est fermé (0)
    à 8 heures 01 c'est encore fermé....
    à 8h12, ça ouvre (1)
    etc...
    J'ai donc, dans l'exemple, 2 changements d'état, un premier à 08:12, et un à 09:00
    Il me faut générer une table, avec les données suivantes :
    08:00;08:12;0
    08:12;09:00;1
    09:00;10:10;0
    Ce qui signifie fonctionnellement:
    - c'est fermé,
    - ça ouvre de 8h12 à 9h
    - ça ferme de 9h à 10 heures

    Reconnaissance éternelle à celui qui me met sur la piste ....

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,

    Pour traiter ce genre cas, j'utilise plusieurs variables dans un tMap.
    L'astuce est de comparer la valeur de l'état de la ligne en cours à la valeur de l'état de la ligne précédente. Et pour cela, il suffit de valoriser une variable en dernier, qui va contenir la valeur de la ligne précédente tant qu'elle n'est pas mise à jour par la ligne en cours.

    Exemple de valorisation des variables dans le tMap :
    Var.Test_Statut = Si in.Statut <> Var.Statut_Precedent alors 1 sinon 0
    Var.Statut_Precedent = in.Statut

    Ainsi lorsque tu testes la variable Statut_Precedent pour alimenter Test_Statut, elle contient la valeur de la ligne précédente.

    J'espère avoir été clair...

    Nicolas

  3. #3
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 796
    Points : 1 686
    Points
    1 686
    Par défaut
    Perso j'utiliserai un tAggregateSortedRow sur le champs status et tu sauvegarde le premier et le dernier horraire.

    Première aggrégation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    08:00;0
    08:01;0
    08:10;0
    Deuxième aggrégation
    Troisième aggrégation
    Il y a un truc qui est chiant avec le tAggregateSortedRow c'est que tu doit faire une requête pour compter le nombre de ligne avant.
    Mais ça reste une piste
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  4. #4
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 796
    Points : 1 686
    Points
    1 686
    Par défaut
    Citation Envoyé par supergeoffrey Voir le message
    Perso j'utiliserai un tAggregateSortedRow sur le champs status et tu sauvegarde le premier et le dernier horraire.

    Première aggrégation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    08:00;0
    08:01;0
    08:10;0
    Deuxième aggrégation
    Troisième aggrégation
    Il y a un truc qui est chiant avec le tAggregateSortedRow c'est que tu doit faire une requête pour compter le nombre de ligne avant.
    Mais ça reste une piste

    Ma solution ne fonctionne pas ça donnerait
    08:00;08:01;0
    08:12;08:13;1
    09:00;10:10;0
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bon, c'est pas joli, joli, mais je m'en suis sorti.... sans Talend.
    Avec des curseurs imbriqués (parce que plus compliqué que dans l'énnoncé: on gère des villes, etc ...)
    Et là, ça marche assez bien:
    Une procédure stockée au niveau de la Base de données, et un composant tMSSqlSP pour l'appeler dans talend...

    Mais si on peut le faire direct dans Talend, ce serait plus propre...

Discussions similaires

  1. [C#] Renvoyer une valeur à la fermeture d'une forms
    Par diaboloche dans le forum Windows Forms
    Réponses: 6
    Dernier message: 14/03/2006, 11h54
  2. ouverture/fermeture d'une fenêtre modale showModelessDialog
    Par marti dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/01/2006, 05h03
  3. [C#] La bonne utilisation des WinForms (ouverture-Fermeture)
    Par Harry dans le forum Windows Forms
    Réponses: 28
    Dernier message: 03/08/2005, 11h39
  4. Recherche dans plage de valeur :
    Par lafouine dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/04/2005, 11h38
  5. [CR8.5] Init paramètre plage de valeurs
    Par juelo dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 08/04/2005, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo