BASE DE CONNAISSANCES

Les calculs de date, les filtres et les horodatages affichent des résultats inattendus après la publication


Date de publication : 01 Oct 2013
Date de dernière modification : 19 Dec 2019

Problème

Après la publication d'un classeur ou d'une source de données, les calculs basés sur NOW() ou TODAY(), les filtres Date relative et les horodatages (par exemple la dernière mise à jour) affichent des résultats inattendus. Les calculs, les filtres et les horodatages semblent avoir été calculés dans un fuseau horaire différent.

Environnement

  • Tableau Online
  • Tableau Server

Résolution

Pour ajuster le fuseau horaire de la date et les champs date/heure affichés dans la vue :

  1. Ouvrez le classeur dans Tableau Desktop.
  2. Sélectionnez Analyse > Créer un champ calculé.
    • Dans le champ date/heure, créez un calcul de ce type :
      DATEADD('hour',<number of hours>,[<datetime field>])
    • Pour un champ de date seulement, créez un calcul de ce type :
      IF DATEPART('hour', NOW()) > <PST time of midnight> then DATEADD('day', 1, <datetime field>) else <datetime field> end
      • Par exemple : IF DATEPART('hour', NOW()) > 6 THEN DATEADD('day', 1, [Date]) else [Date] END Cette expression ajoute un jour supplémentaire au champ de date appelé « Date » si minuit est dépassé de 6 heures, sinon la date reste la même.
      • Pour plus d'informations sur les fonctions de date DATEPART ou DATEADD, consultez Fonctions de date dans l'aide de Tableau. 
  3. Remplacez le champ date/heure utilisé dans la vue par le champ calculé que vous venez de créer.
  4. Republiez le classeur ou la source de données.


Pour remplacer un filtre de date relative par un calcul appliquant un filtre d'heure la plus récente à l'ensemble de données :

  1. Créez un calcul de ce type :
    [DateTimeField] >= {FIXED: MAX(DATETRUNC('hour',[DateTimeField]))} 
  2. Placez le calcul sur l'étagère des filtres, choisissez d'afficher « True » 


Pour remplacer un filtre de date relative par un calcul appliquant un filtre « cette heure » dans le fuseau horaire souhaité :

  1. Créez un calcul de ce type : Notez que la formule suivante convertit Pacific Time (Tableau Online 10ay) en Eastern Time (utilisateur hypothétique) :
    [DateTimeField] >= DATEADD('hour', 3, NOW()) 
  2. Placez le calcul sur l'étagère des filtres, choisissez d'afficher « True » 

Cause

Après la publication d'une source de données ou d'un classeur, les filtres NOW(), TODAY(), Date relative, ainsi que les horodatages sont localisés sur le fuseau horaire de Tableau Server ou Tableau Online.

 

Informations supplémentaires

Le nombre d'heure pour le décalage horaire peut changer si votre région applique l'heure d'été. Le calcul suivant convertit l'heure UTC en Heure du Pacifique (en partant de l'hypothèse que l'heure d'été commence le 2nd dimanche de mars et prend fin le 1er dimanche de novembre) :
DATEADD('hour',
IF [<datetime field>] <= IFNULL(
    { FIXED DATETRUNC('year', [<datetime field>]) : MIN(
    IF DATEPART('month', [<datetime field>]) = 3
    THEN
    DATEADD('minute', 119, DATEADD('day',    IF DATEPART('weekday', DATETRUNC('month', [<datetime field>])) >1
    THEN 7 - (DATEPART('weekday', DATETRUNC('month', [<datetime field>])) - 1)
    ELSE 0
    END
    + 7,    DATETRUNC('month', [<datetime field>])
    ))
    END
    )}
, TODAY()+1)
OR [<datetime field>] >=
    { FIXED DATETRUNC('year', [<datetime field>]) : MIN(IF DATEPART('month', [<datetime field>]) = 11
    THEN
    DATEADD('minute', 119, DATEADD('day',    IF DATEPART('weekday', DATETRUNC('month', [<datetime field>])) >1
    THEN 7 - (DATEPART('weekday', DATETRUNC('month', [<datetime field>])) - 1)
    ELSE 0
    END,    DATETRUNC('month', [<datetime field>])
    ))
    END
    )}
THEN -8
ELSE -7
END,
[<datetime field>])



Discuter de cet article... Forum de commentaires
Cet article vous a-t-il permis de résoudre le problème ?