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.
Une durée dans Power Query M représente la différence entre deux points dans le temps, exprimées en jours, heures, minutes et secondes. Que vous calculiez le temps entre les interactions client, le filtrage des enregistrements en fonction du temps écoulé ou la création d’une logique dynamique basée sur le temps, les durées sont essentielles pour créer des modèles de données robustes et intelligents.
Cet article explore la structure, la création et la manipulation de durées dans Power Query M. Il inclut des exemples pratiques et partage des conseils pour vous aider à utiliser efficacement des durées dans vos propres flux de travail de données.
Créer une durée
Une durée est définie par la #duration(<days>, <hours>, <minutes>, <seconds>) fonction. Par exemple, #duration(2, 3, 0, 0) représente une durée de 2 jours et 3 heures. Power Query M offre plusieurs façons de créer une durée, en fonction du contexte et du niveau de précision requis.
Utiliser la fonction #duration
La méthode la plus directe pour créer une durée est avec la #duration(<days>, <hours>, <minutes>, <seconds>) syntaxe. Chaque argument doit être un nombre et le résultat est une valeur de durée.
#duration(2, 5, 30, 0) // 2 days, 5 hours, 30 minutes
Cette fonction prend également en charge les fractions de secondes :
#duration(0, 0, 0, 1.75) // 1.75 seconds
Créer des durées à partir des valeurs de date et d’heure
Les durées peuvent également être créées en soustrayant une valeur de date et d’heure d’une autre. Le résultat est une durée représentant l’intervalle de temps entre les deux.
let
Source =
{
#date(2025, 7, 24) - #date(2025, 7, 23),
// Result: #duration(1, 0, 0, 0)
#time(12, 0, 0) - #time(11, 30, 30),
// Result: #duration(0, 0, 29, 30)
#datetime(2025, 7, 24, 12, 0, 0) - #datetime(2025, 7, 23, 12, 0, 0),
// Result: #duration(1, 0, 0, 0)
#datetimezone(2025, 7, 24, 12, 0, 0, 7, 0) - #datetimezone(2025, 7, 23, 10, 30, 0, 4, 0),
// Result: #duration(0, 22, 30, 0)
#datetime(2025, 7, 24, 12, 0, 0) - DateTime.From(#date(2025, 7, 23))
// Result: #duration(1, 12, 0, 0)
}
in
Source
Remarque
La soustraction d’un type de date et d’heure d’un type de date et d’heure différent (par exemple, la soustraction d’une date valeur d’une datetime valeur) entraîne une erreur. Si vous devez utiliser différents types de date et d’heure pour déterminer une durée, utilisez les fonctions , Date.FromDateTime.Fromou DateTimeZone.From les Time.Fromfonctions pour modifier explicitement l’un des types date et heure.
Convertir à partir de valeurs compatibles
La Duration.From fonction peut convertir des valeurs compatibles en durées. Pour plus d’informations, accédez à Duration.From(valeur).
Utiliser des durées
Une fois qu’une durée est créée dans Power Query M, elle peut être manipulée à l’aide de diverses opérations et fonctions. Ces fonctionnalités rendent les durées hautement polyvalentes pour la logique et les calculs basés sur le temps.
Opérations arithmétiques
Les durées prennent en charge les opérations arithmétiques standard :
Ajout et soustraction : ajoutez ou soustraitez des durées à ou à partir des valeurs de date et d’heure.
let Source = { #duration(1, 2, 0, 0) + #duration(0, 3, 30, 0), // Result: #duration(1, 5, 30, 0) #duration(1, 2, 0, 0) - #duration(0, 3, 30, 0), // Result: #duration(0, 22, 30, 0) #datetime(2025, 7, 24, 12, 0, 0) + #duration(0, 2, 0, 0), // Result: #datetime(2025, 7, 24, 14, 0, 0) #datetime(2025, 7, 24, 12, 0, 0) - #duration(0, 2, 0, 0), // Result: #datetime(2025, 7, 24, 10, 0, 0) #time(12, 0, 0) - #duration(0, 3, 30, 0) // Result: #time(8, 30, 0) } in SourceNégation : une durée peut être négation pour inverser sa direction.
let Source = { #datetime(2025, 7, 24, 12, 0, 0) + -#duration(0, 2, 0, 0), // Result (subtracts two hours): #datetime(2025, 7, 24, 10, 0, 0) #datetime(2025, 7, 23, 12, 0, 0) - #datetime(2025, 7, 24, 12, 0, 0) // Result: -#duration(1, 0, 0, 0) } in Source
Multiplication et division
Les durées peuvent être multipliées ou divisées par des valeurs numériques :
let
Source = {
#duration(0, 2, 0, 0) * 2,
// Result (4 hours): #duration(0, 4, 0, 0)
#duration(1, 0, 0, 0) / 2
// Result (12 hours): #duration(0, 12, 0, 0)
}
in
Source
Ce calcul est utile pour la mise à l’échelle des durées ou la moyenne des intervalles de temps.
Comparaisons
Les durées peuvent être comparées à l’aide d’opérateurs de comparaison standard :
let
Source = #duration(1, 0, 0, 0) > #duration(0, 23, 59, 59)
// Result: true
in
Source
Ce calcul permet d’utiliser des durées dans la logique conditionnelle, telles que le filtrage des lignes en fonction du temps écoulé.
Compatibilité des types
Les durées sont compatibles avec les valeurs de date et d’heure dans les expressions arithmétiques, mais pas interchangeables avec elles. Par exemple, la soustraction de deux valeurs de date et d’heure génère un duration, mais l’ajout de deux valeurs de date et d’heure n’est pas valide.
let
Source =
{
#datetime(2025, 7, 24, 12, 0, 0) - #datetime(2025, 7, 23, 12, 0, 0),
// Result: #duration(1, 0, 0, 0)
#datetime(2025, 7, 24, 12, 0, 0) + #datetime(2025, 7, 23, 12, 0, 0)
// Result: Error
}
in
Source
Fonctions de durée dans M
Power Query M inclut un ensemble de fonctions intégrées pour travailler avec des durées. Ces fonctions permettent la conversion, l’extraction des composants et l’agrégation des valeurs de durée, ce qui en fait des outils essentiels pour les transformations basées sur le temps.
Duration.From(valeur)
La Duration.From fonction convertit une valeur compatible en une durée. Les valeurs compatibles se composent d’un nombre interprété comme une fraction d’un jour ou d’une représentation textuelle d’une durée.
Duration.FromText Pour plus d’informations sur les formats de représentation textuelle.
let
Source =
{
Duration.From(1.5),
// Result: 1.5 days = #duration(1, 12, 0, 0)
Duration.From("2.05:55:20.242")
// Result: #duration(2, 5, 55, 20.242)
}
in
Source
Accesseurs de composant
Ces fonctions extraient des parties spécifiques d’une durée :
Duration.Days(<duration>)Retourne le nombre de jours entiers dans la durée.
Duration.Hours(<duration>)Retourne le nombre d’heures au-delà des jours entiers.
Duration.Minutes(<duration>)Retourne le nombre de minutes au-delà des heures entières.
Duration.Seconds(<duration>)Retourne le nombre de secondes au-delà des minutes entières.
let
Source = #duration(2, 5, 30, 45),
TextFormat = Text.Format(
"Duration = #{0} days, #{1} hours, #{2} minutes, and #{3} seconds.",
{
Duration.Days(Source),
Duration.Hours(Source),
Duration.Minutes(Source),
Duration.Seconds(Source)
}
)
// Results: "Duration = 2 days, 5 hours, 30 minutes, and 45 seconds."
in
TextFormat
Fonctions de valeur totale
Ces fonctions retournent la valeur totale d’une durée dans une unité unique, y compris les parties fractionnaires :
Duration.TotalDays(<duration>)Duration.TotalHours(<duration>)Duration.TotalMinutes(<duration>)Duration.TotalSeconds(<duration>)
let
Source =
{
Duration.TotalDays(#duration(1, 12, 0, 0)), // 1.5 days
Duration.TotalHours(#duration(1, 12, 0, 0)), // 36 hours
Duration.TotalMinutes(#duration(1, 12, 0, 0)), // 2160 minutes
Duration.TotalSeconds(#duration(1, 12, 0, 0)) // 129600 seconds
}
in
Source
Normalisation de la durée
Dans la plupart des cas, la durée est composée de jours, d’heures (23 heures maximum), de minutes (59 minutes maximum) et de secondes (59,999999999). Toutefois, dans certains cas, vous pouvez dépasser les valeurs maximales dans les paramètres de durée. Dans ce cas, Power Query M normalise automatiquement ces valeurs :
- Dépassement de secondes en minutes
- Dépassement de minutes en heures
- Heures de dépassement en jours
Par exemple, supposons que vous disposez d’une colonne qui fournit la date et l’heure de début d’un processus en cours d’exécution. En outre, vous disposez d’une colonne qui indique le temps nécessaire pour que le processus se termine, en secondes. Vous souhaitez créer une troisième colonne qui affiche la date et l’heure de fin du processus.
let
Source = #table(type table[StartTime = datetime, Seconds = Int64.Type],
{
{#datetime(2025, 7, 25, 8, 0, 0), 5400},
{#datetime(2025, 7, 25, 13, 15, 0), 86400},
{#datetime(2025, 7, 24, 22, 30, 0), 172800}
}),
AddSeconds = Table.AddColumn(
Source,
"EndTime",
each [StartTime] + #duration(0, 0, 0, [Seconds]),
type datetime
)
in
AddSeconds
Le tableau suivant est le résultat de ces calculs.
Ainsi, même si vous n’avez eu que le nombre de secondes qu’un processus a eu lieu, Power Query M cumule cette valeur de durée en minutes, heures et jours lorsque le résultat est évalué.
Représenter des semaines, des mois et des années
Étant donné que les durées sont basées sur des unités fixes (jours, heures, minutes, secondes), il n’existe aucun concept natif de semaines, de mois ou d’années, qui varient en longueur. Un duration type dans Power Query M est une structure fixe qui ne tient pas compte des règles de calendrier. Pour une durée précise sur des mois ou des années, soustrait une date et une heure d’une autre au lieu d’utiliser des durées fixes. Cette approche gère correctement les années bissextiles, les longueurs de mois variables et l’heure d’été (DST). Toutefois, notez également que certains comportements de date et d’heure peuvent différer selon que la requête s’exécute localement (sur Power Query Desktop) ou en ligne (sur Power Query Online). Pour plus d’informations, accédez aux variantes Locales, fixes et UTC de la date et de l’heure actuelles. En général, évitez de compter sur des durées fixes pour les calculs à long terme.