Partager via


DATESINPERIOD

s’applique à :colonne calculéetable calculéemesurecalcul visuel

Note

Cette fonction est déconseillée pour une utilisation dans calculs visuels car elle retourne probablement des résultats sans signification.

Pour l’entrée de colonne de date, retourne une table qui contient une colonne de dates qui commence par une date de début spécifiée et continue pour le nombre et le type spécifiés d’intervalles de date.

Pour l’entrée de calendrier, retourne une table qui commence par une date de début spécifiée et continue pour le nombre et le type spécifiés d’intervalles de date. La table contient toutes les colonnes marquées principales et toutes les colonnes associées à l’heure.

Cette fonction est adaptée à passer en tant que filtre à la fonction CALCULATE. Utilisez-la pour filtrer une expression selon les intervalles de date standard tels que les jours, les mois, les trimestres ou les années.

Syntaxe

DATESINPERIOD(<dates> or <calendar>, <start_date>, <number_of_intervals>, <interval>)

Paramètres

Terme Définition
dates or calendar Colonne qui contient des dates ou une référence de calendrier
start_date Expression de date. Si la syntaxe du calendrier est utilisée, utilisez le même type de données que la colonne principale étiquetée dans la catégorie Jour.
number_of_intervals Entier qui spécifie le nombre d’intervalles à ajouter ou soustraire des dates.
interval Intervalle par lequel déplacer les dates. La valeur de l’intervalle peut être l’une des suivantes : DAY, , WEEKMONTH, , QUARTERet YEAR. La semaine ne peut être utilisée qu’avec le calendrier.

Valeur de retour

Pour l’entrée de colonne de date, une table contenant une seule colonne de valeurs de date.
Pour l’entrée de calendrier, une table qui contient toutes les colonnes marquées principales et toutes les colonnes associées à l’heure.

Remarques

  • Dans le cas d’usage le plus courant, dates est une référence à la colonne date d’une table de dates marquée.

  • Si le nombre spécifié pour number_of_intervals est positif, les dates sont déplacées vers l’avant dans le temps ; si le nombre est négatif, les dates sont décalées vers l’arrière dans le temps.

  • Le paramètre interval est une énumération. Les valeurs acceptables sont : DAY, WEEK, MONTH, QUARTER et YEAR. Comme il s’agit d’une énumération, les valeurs ne sont pas passées sous forme de chaînes. Ne les placez donc pas entre guillemets.

  • Pour l’entrée de colonne de date, la table retournée ne peut contenir que des dates stockées dans la dates colonne. Par exemple, si la colonne dates commence à partir du 1er juillet 2017 et que la valeur start_date est le 1er juillet 2016, la table retournée commence à partir du 1er juillet 2017.

  • Pour les entrées de calendrier, si la date d’entrée est introuvable dans la colonne jour marquée, le résultat n’est pas défini. Indiquez une entrée de date valide.

  • Pour les entrées de calendrier, utilisez le même type de données et le même format que la colonne jour balisée pour la date de début. Par exemple, si la colonne utilise le format AAAA-Sn-Qn-Mnn-Wnn-Dnn (par exemple, « 2014-S2-Q4-M11-W45-D03 »), la date de début doit suivre le même format (par exemple, « 2015-S2-Q4-M11-W45-D03 »). Sinon, le comportement n’est pas défini.

  • Cette fonction n’est pas prise en charge pour une utilisation en mode DirectQuery lorsqu’elle est utilisée dans les colonnes calculées ou les règles de sécurité au niveau des lignes (RLS).

Exemple

La définition de mesure de table sales suivante utilise la fonction pour calculer les revenus de l’année précédente (PY).

Notez que la formule utilise la fonction MAX. Cette fonction retourne la date la plus récente dans le contexte de filtre. Par conséquent, la fonction DATESINPERIOD retourne une table de dates commençant par la date la plus récente de l’année dernière.

Les exemples de cet article peuvent être utilisés avec l’exemple de modèle Adventure Works DW 2020 Power BI Desktop. Pour obtenir le modèle, consultez DAX exemple de modèle.

Revenue PY =
CALCULATE (
    SUM ( Sales[Sales Amount] ),
    DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -1, YEAR )
)

Considérez que le rapport est filtré par le mois de juin 2020. La fonction MAX retourne le 30 juin 2020. La fonction DATESINPERIOD retourne ensuite une plage de dates comprise entre le 1er juillet 2019 et le 30 juin 2020. Il s’agit d’une année de valeurs de date à partir du 30 juin 2020 pour l’année dernière.

Exemple pour l’intelligence temporelle basée sur le calendrier

La définition de mesure de table sales suivante utilise la fonction pour calculer les revenus de l’année précédente (PY).

Notez que la formule utilise la fonction MAX. Cette fonction retourne la date la plus récente dans le contexte de filtre. Par conséquent, la DATESINPERIOD fonction retourne les colonnes principales commençant par la date la plus récente de l’année dernière. DateKey est utilisé comme exemple pour montrer que la catégorie « Jour » peut être marquée avec une colonne qui n’est pas typée date.

Les exemples de cet article peuvent être utilisés avec l’exemple de modèle Adventure Works DW 2020 Power BI Desktop. Pour obtenir le modèle, consultez DAX exemple de modèle.

Revenue PY =
CALCULATE (
    SUM ( Sales[Sales Amount] ),
    DATESINPERIOD ( FiscalCalendar, MAX ( 'Date'[DateKey] ), -1, YEAR )
)

Considérez que le rapport est filtré par le mois de juin 2020. La fonction MAX retourne le 30 juin 2020. La DATESINPERIOD fonction retourne ensuite une plage comprise entre le 1er juillet 2019 et le 30 juin 2020. C’est une année à partir du 30 juin 2020 pour l’année dernière.

Différences de comportement entre l’intelligence temporelle classique et le calendrier

En interne, DATESINPERIOD utilise la même logique que DATEADD pour déterminer la date de fin à partir de la date de début, puis calcule la plage. Certains scénarios peuvent produire des résultats différents lors de la comparaison de l’intelligence temporelle classique et du calendrier. Par exemple, dans une année lunaire, DATEADD produit des résultats différents à la granularité de date, de sorte que le résultat diffère DATESINPERIOD également. Dans les informations temporelles basées sur le calendrier, le passage du 29 février 2008 à l’arrière d’une année entraîne le 1er mars 2007, car il est traité comme le 60e jour de l’année. Dans l’intelligence temporelle classique, le même décalage retourne le 28 février 2007. Étant donné que la date de fin diffère, la sortie de DATESINPERIOD sera également différente. La solution de contournement consiste à utiliser DATEADD(Calendrier, -<nombre d’un an>, mois) pour calculer la date de fin. Par exemple, si une année a 13 mois dans le calendrier, utilisez DATEADD(Calendrier, -13, mois). Cette approche va passer d’un mois à l’autre pour que février 2008 passe à février 2007. Ensuite, écrivez une date PersonnaliséeInPeriod en fonction de la nouvelle date de fin.

fonctions Time Intelligence (DAX)fonctions date et heure (DAX)DATESBETWEEN, fonction (DAX)