Accéder au contenu principal Passer au contenu complémentaire

Création d'un intervalle de dates à partir d'une seule date

Il arrive que les intervalles de temps ne soient pas stockés de manière explicite avec un début et une fin. Au lieu de cela, ils sont définis de manière implicite par un seul champ, l'horodatage de modification.

La table ci-dessous illustre une situation de ce genre, avec les taux de change définis pour plusieurs devises. Chaque modification du taux de change se trouve sur une ligne distincte, chacune avec un nouveau taux de conversion. La table contient par ailleurs des lignes aux dates vides qui correspondent au taux de conversion initial, avant la survenue de la première modification.

Taux de conversion des devises
Currency Change Date Rate
EUR - 8.59
EUR 28/01/2013 8.69
EUR 15/02/2013 8.45
USD - 6.50
USD 10/01/2013 6.56
USD 03/02/2013 6.30

Cette table spécifie un ensemble d'intervalles qui ne se chevauchent pas, où la date de début est appelée Change Date et la date de fin est définie par le début de l'intervalle suivant. Cependant, comme la date de fin n'est pas stockée de manière explicite dans une colonne distincte, il est nécessaire de créer une colonne de ce type, afin que la nouvelle table devienne une liste d'intervalles.

Procédez de la façon suivante :

  1. Créez un fichier intitulé Rates.xlsx contenant la table illustrée ci-dessus. Enregistrez-le pour qu'il soit prêt à être chargé.
  2. Assurez-vous que les dates figurant dans la colonne Change Date respectent le format de date local.

  3. Décidez de la plage de temps que vous souhaitez utiliser. Le début de la plage doit être antérieur à la première date dans les données et la fin de la plage doit être postérieure à la dernière date.
  4. Chargez les données source en remplaçant les dates vides par le début de la plage définie au point précédent. La date de modification doit être chargée sous From Date.
  5. Triez une première fois la table d'après la devise Currency, puis d'après la date de début From Date en ordre décroissant, de manière à placer les dates les plus récentes en haut de la liste.
  6. Exécutez un deuxième passage sur les données afin de calculer la date de fin To Date. Si l'enregistrement actif dispose d'une devise différente de celle de l'enregistrement précédent, alors il s'agit du premier enregistrement d'une nouvelle devise (mais son dernier intervalle). Vous devez donc utiliser la fin de la plage définie à l'étape 1. S'il s'agit de la même devise, vous devez prendre la date de début From Date de l'enregistrement précédent, une petite fraction de temps et utiliser cette valeur comme date de fin To Date dans l'enregistrement actif.

Le script ci-dessous mettra à jour la table source de la manière suivante :

Table mise à jour
Currency Rate FromDate ToDate
EUR 8.45 15/02/2013 vEndTime
EUR 8.69 28/01/2013 14/02/2013 23:59:59
EUR 8.59 vBeginTime 28/01/2013 23:59:59
USD 6.30 03/02/2013 vEndTime
USD 6.56 10/01/2013 2/02/2013 23:59:59
USD 6.50 vBeginTime 9/01/2013 23:59:59

Le script de QlikView ressemble à ceci :

Let vBeginTime = Num('1/1/2013');
Let vEndTime = Num('1/3/2013');
Let vEpsilon = Pow(2,-27);
Tmp_Rates:
LOAD Currency, Rate,
Date(If(IsNum([Change Date]), [Change Date], $(#vBeginTime))) as FromDate
From 'C:\MyFiles\Rates.xlsx'
(ooxml, embedded labels, table is Sheet1);
 
Rates:
LOAD Currency, Rate, FromDate,
Date(If( Currency=Peek(Currency),
Peek(FromDate) - $(#vEpsilon),
$(#vEndTime)
)) as ToDate
Resident Tmp_Rates
Order By Currency, FromDate Desc;
 
Drop Table Tmp_Rates;

 

Une fois le script exécuté, vous disposerez d'une table qui répertoriera correctement les intervalles.

Cette table peut ensuite servir dans un comparatif à une date existante à l'aide des méthodes Intervalmatch.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !

Rejoignez le Programme de modernisation analytique

Remove banner from view

Modernisez votre système sans compromettre vos précieuses applications QlikView grâce au Programme de modernisation analytique. Cliquez ici pour plus d'informations ou contactez : ampquestions@qlik.com