Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Dauer in Power Query M stellt die Differenz zwischen zwei Punkt in der Zeit dar, ausgedrückt in Tagen, Stunden, Minuten und Sekunden. Unabhängig davon, ob Sie die Zeit zwischen Kundeninteraktionen berechnen, Datensätze basierend auf verstrichener Zeit filtern oder dynamische zeitbasierte Logik erstellen, sind Daueren für die Erstellung robuster und intelligenter Datenmodelle unerlässlich.
In diesem Artikel werden die Struktur, Erstellung und Manipulation von Dauer in Power Query M beschrieben. Sie enthält praktische Beispiele und gibt Tipps frei, mit denen Sie Die Dauer in Ihren eigenen Datenworkflows effektiv nutzen können.
Erstellen einer Dauer
Eine Dauer wird durch die #duration(<days>, <hours>, <minutes>, <seconds>) Funktion definiert. Stellt beispielsweise #duration(2, 3, 0, 0) eine Dauer von 2 Tagen und 3 Stunden dar. Power Query M bietet verschiedene Möglichkeiten zum Erstellen einer Dauer, abhängig vom Kontext und der erforderlichen Genauigkeitsstufe.
Verwenden der #duration Funktion
Die direkteste Methode zum Erstellen einer Dauer ist die #duration(<days>, <hours>, <minutes>, <seconds>) Syntax. Jedes Argument muss eine Zahl sein, und das Ergebnis ist ein Dauerwert.
#duration(2, 5, 30, 0) // 2 days, 5 hours, 30 minutes
Diese Funktion unterstützt auch Bruchsekunden:
#duration(0, 0, 0, 1.75) // 1.75 seconds
Erstellen von Dauer aus Datums- und Uhrzeitwerten
Die Dauer kann auch erstellt werden, indem ein Datums- und Uhrzeitwert von einem anderen subtrahiert wird. Das Ergebnis ist eine Dauer, die die Zeitspanne zwischen den beiden darstellt.
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
Hinweis
Das Subtrahieren eines Datums- und Uhrzeittyps von einem anderen Datums- und Uhrzeittyp (z. B. Subtrahieren eines date Werts) führt zu einem datetime Fehler. Wenn Sie unterschiedliche Datums- und Uhrzeittypen verwenden müssen, um eine Dauer zu ermitteln, verwenden Sie die Date.From, DateTime.From, , DateTimeZone.Fromoder Time.From Funktionen, um einen der Datums- und Uhrzeittypen explizit zu ändern.
Konvertieren aus kompatiblen Werten
Die Duration.From Funktion kann kompatible Werte in Dauer konvertieren. Weitere Informationen hierzu können Sie zu Duration.From(Wert) aufrufen.
Arbeiten mit Dauer
Sobald eine Dauer in Power Query M erstellt wurde, kann sie mithilfe verschiedener Vorgänge und Funktionen bearbeitet werden. Diese Funktionen machen Daueren für zeitbasierte Logik und Berechnungen sehr vielseitig.
Arithmetische Vorgänge
Dauer unterstützt standardmäßige arithmetische Vorgänge:
Addition und Subtraktion: Addieren oder Subtrahieren von Dauer zu oder voneinander oder von Datums- und Uhrzeitwerten.
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 SourceNegation: Eine Dauer kann negiert werden, um die Richtung umzukehren.
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
Multiplikation und Division
Die Dauer kann mit numerischen Werten multipliziert oder dividiert werden:
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
Diese Berechnung ist nützlich für die Skalierungsdauer oder die durchschnittlichen Zeitintervalle.
Vergleiche
Die Dauer kann mithilfe von Standardvergleichsoperatoren verglichen werden:
let
Source = #duration(1, 0, 0, 0) > #duration(0, 23, 59, 59)
// Result: true
in
Source
Diese Berechnung ermöglicht die Verwendung von Dauer in bedingter Logik, z. B. das Filtern von Zeilen basierend auf verstrichener Zeit.
Typkompatibilität
Die Dauer ist mit Datums- und Uhrzeitwerten in arithmetischen Ausdrücken kompatibel, aber nicht austauschbar. Das Subtrahieren von zwei Datums- und Uhrzeitwerten führt beispielsweise zu einem durationWert, das Hinzufügen von zwei Datums- und Uhrzeitwerten ist jedoch ungültig.
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
Dauerfunktionen in M
Power Query M enthält eine Reihe integrierter Funktionen für die Arbeit mit Dauer. Diese Funktionen ermöglichen die Konvertierung, Extraktion von Komponenten und Aggregation von Dauerwerten, wodurch sie wesentliche Tools für zeitbasierte Transformationen sind.
Duration.From(Wert)
Die Duration.From Funktion konvertiert einen kompatiblen Wert in eine Dauer. Kompatible Werte bestehen entweder aus einer Zahl, die als Bruchteil eines Tages oder einer Textdarstellung einer Dauer interpretiert wird. Informationen zu den Textdarstellungsformaten finden Sie unter .Go to Duration.FromText for information about the textual representation formats.
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
Komponentenaccessoren
Diese Funktionen extrahieren bestimmte Teile einer Dauer:
Duration.Days(<duration>)Gibt die Anzahl der ganzen Tage in der Dauer zurück.
Duration.Hours(<duration>)Gibt die Anzahl der Stunden zurück, die über die gesamten Tage hinausgehen.
Duration.Minutes(<duration>)Gibt die Anzahl der Minuten zurück, die über die gesamten Stunden hinausgehen.
Duration.Seconds(<duration>)Gibt die Anzahl der Sekunden zurück, die über die gesamten Minuten hinausgehen.
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
Gesamtwertfunktionen
Diese Funktionen geben den Gesamtwert einer Dauer in einer einzelnen Einheit zurück, einschließlich Bruchteilen:
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
Dauernormalisierung
In den meisten Fällen besteht die Dauer aus Tagen, Stunden (maximal 23 Stunden), Minuten (maximal 59 Minuten) und Sekunden (maximal 59,9999999 Sekunden). In einigen Fällen können Sie jedoch die Maximalwerte in den Dauerparametern überschreiten. In diesem Fall normalisiert Power Query M diese Werte automatisch:
- Sekundenüberlauf in Minuten
- Minutenüberlauf in Stunden
- Stundenüberlauf in Tage
Angenommen, Sie haben eine Spalte, die das Startdatum und die Startzeit für einen laufenden Prozess bereitstellt. Darüber hinaus verfügen Sie über eine Spalte, die zeigt, wie lange der Vorgang in Sekunden abgeschlossen wurde. Sie möchten eine dritte Spalte erstellen, in der das Datum und die Uhrzeit angezeigt werden, zu dem der Prozess abgeschlossen ist.
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
Die folgende Tabelle ist das Ergebnis dieser Berechnungen.
Obwohl sie nur die Anzahl der Sekunden hatten, die ein Prozess ausgeführt hat, rollt Power Query M diesen Dauerwert in Minuten, Stunden und Tage, an denen das Ergebnis ausgewertet wird.
Darstellen von Wochen, Monaten und Jahren
Da Die Dauer auf festen Einheiten (Tage, Stunden, Minuten, Sekunden) basiert, gibt es kein systemeigenes Konzept von Wochen, Monaten oder Jahren, die in der Länge variieren. Ein duration Typ in Power Query M ist eine feste Struktur, die keine Kalenderregeln berücksichtigt. Für eine genaue Dauer über Monate oder Jahre hinweg subtrahieren Sie ein Datum und eine Uhrzeit von einem anderen, anstatt feste Dauer zu verwenden. Dieser Ansatz behandelt Schaltjahre, unterschiedliche Monatslängen und Sommerzeit (DST). Beachten Sie jedoch auch, dass ein Bestimmtes Datums- und Uhrzeitverhalten abhängig davon variieren kann, ob die Abfrage lokal (auf Power Query Desktop) oder online (in Power Query Online) ausgeführt wird. Ausführliche Informationen hierzu erhalten Sie unter " Lokale", "feste" und "UTC"-Varianten des aktuellen Datums und der aktuellen Uhrzeit. Im Allgemeinen vermeiden Sie die Verwendung von festen Daueren für langfristige Berechnungen.