Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
s’applique à :
colonne calculée
table calculée
mesure
calcul 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,
datesest une référence à la colonne date d’une table de dates marquée.Si le nombre spécifié pour
number_of_intervalsest 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
intervalest une énumération. Les valeurs acceptables sont :DAY,WEEK,MONTH,QUARTERetYEAR. 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
datescolonne. Par exemple, si la colonnedatescommence à partir du 1er juillet 2017 et que la valeurstart_dateest 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
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
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.
Contenu connexe
fonctions Time Intelligence (DAX)fonctions date et heure (DAX)DATESBETWEEN, fonction (DAX)