Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Power Query M:n kesto edustaa kahden pisteen eroa ajassa ilmaistuna päivinä, tunteina, minuutteina ja sekunteina. Kestot ovat välttämättömiä luotettavien ja älykkäiden tietomallien luomisessa, olipa kyseessä asiakkaiden vuorovaikutusten välinen aika, tietueiden suodattaminen kuluneen ajan perusteella tai dynaamisen aikapohjaisen logiikan luominen.
Tässä artikkelissa tutkitaan kestojen rakennetta, luontia ja käsittelyä Power Query M:ssä. Se sisältää käytännön esimerkkejä ja jakovinkkejä, joiden avulla voit käyttää kestoja tehokkaasti omissa tietotyönkuluissasi.
Keston luominen
Funktio määrittää keston #duration(<days>, <hours>, <minutes>, <seconds>) . Ilmaisee esimerkiksi kahden #duration(2, 3, 0, 0) päivän ja kolmen tunnin keston. Power Query M tarjoaa useita tapoja luoda keston kontekstin ja tarvittavan tarkkuustason mukaan.
Käytä toimintoa #duration
Suorin tapa luoda kesto on #duration(<days>, <hours>, <minutes>, <seconds>) syntaksi. Kunkin argumentin on oltava luku, ja tulos on kestoarvo.
#duration(2, 5, 30, 0) // 2 days, 5 hours, 30 minutes
Tämä funktio tukee myös murtosekunteja:
#duration(0, 0, 0, 1.75) // 1.75 seconds
Kestojen luominen päivämäärä- ja aika-arvoista
Kestoja voidaan myös luoda vähentämällä yksi päivämäärä- ja aika-arvo toisesta. Tulos on kesto, joka edustaa näiden kahden välistä aikaväliä.
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
Note
Yhden päivämäärä- ja aikatyypin vähentäminen eri päivämäärä- ja aikatyypistä (esimerkiksi arvon date vähentäminen datetime arvosta) aiheuttaa virheen. Jos sinun on käytettävä eri päivämäärä- ja aikatyyppejä keston määrittämiseksi, voit muuttaa jotakin päivämäärä- ja aikatyyppiä eksplisiittisesti käyttämällä Date.From- DateTime.From, -, DateTimeZone.From- tai Time.From -funktioita.
Yhteensopivista arvoista muuntaminen
Funktio Duration.From voi muuntaa yhteensopivat arvot kestoiksi. Lisätietoja on kohdassa Duration.From(arvo)..
Kestojen käsitteleminen
Kun kesto on luotu Power Query M:ssä, sitä voidaan muokata käyttämällä erilaisia toimintoja ja funktioita. Nämä ominaisuudet tekevät kestoista erittäin monipuolisia aikapohjaiseen logiikkaan ja laskutoimituksiin.
Aritmeettiset operaatiot
Kestot tukevat vakioaritmeettisia toimintoja:
Yhteenlasku ja vähennyslasku: Lisää tai vähennä kestoja toisistaan tai päivämäärä- ja aika-arvoista.
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: Kesto voidaan kumota sen suunnan kääntämiseksi.
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
Kertolasku ja jakolasku
Kestot voidaan kertoa tai jakaa numeerisilla arvoilla:
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
Tästä laskelmasta on hyötyä kestojen skaalaamisessa tai aikavälien keskiarvon laskemisessa.
Vertailut
Kestoja voi verrata käyttämällä vakiovertailuoperaattoreita:
let
Source = #duration(1, 0, 0, 0) > #duration(0, 23, 59, 59)
// Result: true
in
Source
Tämä laskutoimitus sallii kestojen käytön ehdollisessa logiikassa, kuten rivien suodattamisessa kuluneen ajan perusteella.
Tyypin yhteensopivuus
Kestot ovat yhteensopivia aritmeettisten lausekkeiden päivämäärä- ja aika-arvojen kanssa, mutta ne eivät ole niiden kanssa vaihdettavissa. Esimerkiksi kahden päivämäärä- ja aika-arvon vähentäminen durationtuottaa arvon , mutta kahden päivämäärä- ja aika-arvon lisääminen ei kelpaa.
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
M:n kestofunktiot
Power Query M sisältää joukon valmiita funktioita kestojen käsittelemiseen. Nämä funktiot mahdollistavat muunnoksen, osien poimimisen ja kestoarvojen koostamisen, minkä ansiosta ne ovat olennaisia työkaluja aikapohjaisia muunnoksia varten.
Duration.From(arvo)
Funktio Duration.From muuntaa yhteensopivan arvon kestoksi. Yhteensopivat arvot koostuvat joko luvusta, joka tulkitaan päivän murtoluvuksi tai keston tekstiesitykseksi. Siirry kohteeseen Duration.FromText , jos haluat lisätietoja tekstimuotoilumuodoista.
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
Osien käyttöoikeuden myöntäjät
Nämä funktiot poimivat keston tietyt osat:
Duration.Days(<duration>)Palauttaa kokonaisten päivien määrän kestossa.
Duration.Hours(<duration>)Palauttaa tuntien määrän koko päivien jälkeen.
Duration.Minutes(<duration>)Palauttaa minuuttien määrän koko tuntien jälkeen.
Duration.Seconds(<duration>)Palauttaa sekuntien määrän koko minuuttien jälkeen.
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
Arvofunktiot yhteensä
Nämä funktiot palauttavat keston kokonaisarvon yksittäisessä yksikössä, mukaan lukien murto-osat:
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
Keston normalisointi
Useimmissa tapauksissa kesto koostuu päivistä, tunneista (enintään 23 tuntia), minuutista (enintään 59 minuuttia) ja sekunnista (enintään 59,9999999 sekuntia). Joissakin tapauksissa saatat kuitenkin ylittää kestoparametrien enimmäisarvot. Tässä tapauksessa Power Query M normalisoi nämä arvot automaattisesti:
- Sekunnit tulvivat minuutteihin
- Minuutit tulvivat tunneiksi
- Tunnit tulvivat päiviin
Oletetaan, että sinulla on esimerkiksi sarake, joka antaa käynnissä olevan prosessin alkamispäivämäärän ja -kellonajan. Lisäksi sinulla on sarake, joka näyttää sekunteina, kuinka kauan prosessin valmistuminen kesti. Haluat luoda kolmannen sarakkeen, joka näyttää prosessin valmistumispäivän ja -kellonajan.
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
Seuraava taulukko on näiden laskutoimitusten tulos.
Vaikka sinulla oli vain prosessin suorittamien sekuntien määrä, Power Query M säilöi kestoarvon minuutteina, tunteina ja päivinä, jolloin tulos arvioidaan.
Esitetään viikot, kuukaudet ja vuodet
Koska kestot perustuvat kiinteisiin yksiköihin (päivät, tunnit, minuutit, sekunnit), ei ole alkuperäistä viikkojen, kuukausien tai vuosien käsitettä, jonka pituus vaihtelee.
duration Power Query M:n tyyppi on kiinteä rakenne, joka ei sisällä kalenterisääntöjä. Jos tarkka kesto kattaa kuukaudet tai vuodet, vähennä yksi päivämäärä ja aika toisesta kiinteiden kestojen käyttämisen sijaan. Tämä lähestymistapa käsittelee oikein karkausvuodet, vaihtelevat kuukauden pituudet ja DST (daylight savings time). Huomaa kuitenkin, että päivämäärän ja ajan toiminta saattaa vaihdella sen mukaan, suoritetaanko kysely paikallisesti (Power Query Desktopissa) vai verkossa (Power Query Onlinessa). Lisätietoja on kohdassa Paikalliset, kiinteät ja UTC-versiot nykyisestä päivämäärästä ja ajasta. Yleensä kannattaa välttää kiinteisiin kestoihin luottaminen pitkän aikavälin laskutoimituksissa.