DatesEntre() : calculer un écart entre deux dates

Bonjour,

Dans ce tutoriel vous apprendrez à utiliser la fonction DatesEntre() afin de calculer un écart entre deux dates.

Prérequis :

  • Version : SAP BI 4.2
  • Application : SAP Web Intelligence
  • Droit de conception sur Web Intelligence

Contexte :

Vous souhaitez calculer l’écart entre deux dates en jours, semaines, mois, trimestres, semestres ou années sur un document Web Intelligence.

Mise en oeuvre :

Pour l’exemple de mise en oeuvre, j’ai créé une requête basée sur un document Excel très simple dans lequel j’ai une date de début et une date de fin :

Pour calculer l’écart entre ces dates, nous allons utiliser la fonction « DatesEntre() » ou « DatesBetween() » en anglais.

Syntaxe officielle de la fonction :

La difficulté dans l’utilisation de cette fonction réside dans le fait que la documentation fourni par SAP est en anglais et que, lorsqu’on l’utilise dans sa version française, nous n’avons pas les valeurs à indiquer pour l’argument « période » (les exemples fournis sont tous en anglais).

Vous trouverez donc ci-dessous un récapitulatif des différentes valeurs que peut prendre l’argument « période » afin de déterminer avec quel unité vous allez calculer votre écart (en jours, semaines, mois …) :

Vous pouvez désormais créer une nouvelle variable ou une nouvelle formule de calcul pour calculer votre écart en année par exemple de la manière suivante :

Vous pouvez ainsi utiliser les arguments présentés dans le tableau ci-dessus pour calculer l’écart dans l’unité souhaité.
Vous trouverez ci-dessous un exemple d’écarts calculés à partir de mon tableau d’origine :

11 commentaires

  1. Jérôme Répondre

    Bonjour,
    Est-il possible de calculer un écart entre deux dates mais en partant du principe qu’une année = 360 jours et non 365, comme le ferait la fonction JOURS360 d’Excel ?
    Par avance, merci pour votre réponse.
    Cordialement,

    • Romain CARRETERO Auteur de l’articleRépondre

      Bonjour,

      Il n’existe pas de fonction équivalente à la fonction JOURS360 dans Web Intelligence. Néanmoins vous pouvez arriver au même résultat en calculant l’écart en jours (DayPeriod au lieu de YearPeriod) ou en utilisant la fonction JoursEntre() et en divisant le résultat par 360.

      Je vous souhaite une bonne journée.

      Romain CARRETERO

  2. Benoit Répondre

    Bonjour,

    Merci pour cette explication.
    Est il possible d’ajouter une notion d’heure dans ce calcul ?

    Merci d’avance d’avoir pris du temps pour me répondre.
    Bien cordialement,

    • Romain CARRETERO Auteur de l’articleRépondre

      Bonjour,

      La fonction HeureEntre() devrait répondre à votre question. Elle s’utilise comme la fonction DateEntre() mais prend en compte l’heure des dates que vous comparez.
      Utilisez un des opérateurs suivants en fonction de votre besoin. : PériodeHeure, Période Minute, PériodeSeconde ou Période Milliseconde.

      Bonne journée.
      Cordialement,
      Romain CARRETERO

  3. TACHEFINI Répondre

    Bonjour,
    J’ai une de mes colonnes qui contient un numéro et ce numéro correspond dans une autre colonne à plusieurs dates.
    Savez vous comment je peux afficher l’ordre de classement de ces dates dans une autre colonne Svp?
    Par exemple : Colonne A contient les numéros de clients et colonne B contient les dates de passage en agence.
    Je souhaiterais pouvoir identifier pour chaque client, son premier passage, second passage, 3 eme passage.

    En vous remerciant par avance

    Bien cordialement

    • Romain CARRETERO Auteur de l’articleRépondre

      Bonjour M TACHEFINI,

      Afin de répondre à votre besoin je vous invite à suivre les étapes suivantes :

      1/ Dans votre document Webi qui contient les ID clients et les dates, il faut créer une variable pour transformer la dimension date en « indicateur ». Créer donc une variable de type indicateur et au niveau de la formule indiquer simplement le nom de la dimension date.

      2/ Créer un tableau avec 3 colonnes : Colonne 1 = ID client, Colonne 2 = Dimension Date et Colonne 3 = Variable Date (indicateur).
      Masquer la colonne 2 (clic droit sur la colonne > masquer) et créer un saut sur l’ID client (clic droit > Saut > Ajouter un saut)

      3/ Créer un classement sur votre colonne Variable Date pour avoir les n premières/dernières dates par ID client.

      Une bonne journée.

      Romain CARRETERO

  4. TACHEFINI Répondre

    Bonjour romain et merci !
    ce que je veux afficher c’est un classement par numéro client sans saut
    ça donnerais ça :

    Numéro client : date passage : classement (nouvelle colonne ):
    123456798 16/07/2020 Premier passage
    789456123 15/06/2020 Premier passage
    789456123 13/07/2020 Deuxième passage
    546654987 07/07/2020 Premier passage

    La nouvelle colonne que je souhaites créer m’indiquerais le classement par passage 🙂

    Bien cordialement

    • Romain CARRETERO Auteur de l’articleRépondre

      Bonjour,

      Si vous souhaitez utiliser un classement, il faudrait :

      1/ Créer une variable pour le classement : =SommeCumulative(Nombre([Date]) ;([ID_Client]))
      Insérer la variable dans votre tableau pour obtenir le classement(1, 2, 3,…) des dates par client.

      2/ Si vous souhaitez afficher « Premier Passage », « Deuxième Passage », etc… il suffit de modifier votre variable de cette manière :
      =Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier])) = 1 Alors « Premier Passage » Sinon Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier]))= 2 Alors « Deuxième Passage » Sinon Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier])) = 3 Alors « Troisième Passage » Sinon SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier]))

      3/ Si vous souhaitez visualiser uniquement les 3 premiers passages, il suffira simplement de filtrer le tableau sur les valeurs souhaitées.

      J’espère que cette méthode répond davantage à votre demande.

      Bonne journée.

      Romain CARRETERO

  5. Laurence Répondre

    bonjour,
    est ce qu’il est possible de calculer un nombre de jours ouvrés comme dans Excel avec la formule NB.JOURS.OUVRES ?
    J’ai insérer un fichier Excel comportant la liste des jours ouvrés.
    j’ai créé la variable suivante, mais je ne sais pas comment vérifier si un jour férié est compris entre mes dates
    =Si([Date réception de l’acte]=[Date de Fin]; »0″;(DatesEntre([Date réception de l’acte];[Date de Fin];PériodeJour)))
    Pouvez vous m’aider ?
    Merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *