Zephyrnet-logo

Voeg vergelijkende en cumulatieve datum-/tijdberekeningen toe in Amazon QuickSight

Datum:

Amazon QuickSight recentelijk toegevoegde native ondersteuning voor vergelijkende (bijv. jaar-op-jaar) en cumulatieve (bijv. year-to-date) periodefuncties waarmee u deze berekeningen eenvoudig kunt invoeren in bedrijfsrapportage, trendanalyse en tijdreeksanalyse. Hierdoor kunnen auteurs in QuickSight geavanceerde berekeningen uitvoeren zonder ingewikkelde datumverschuivingen in berekeningen te hoeven gebruiken om dergelijke datum-tijdbewuste vergelijkingen te maken.

In dit bericht introduceren we de nieuwe periodefuncties en hun mogelijkheden, en demonstreren we verschillende typische gebruiksscenario's. We bespreken ook verschillende scenario's om het gebruik van de periodefuncties uit te breiden, wat handig zal zijn in meer geavanceerde situaties.

Nieuwe periode functies

Voordat we use-cases demonstreren, laten we de nieuwe periode-functiesuite eens bekijken en kijken welke nieuwe functies we nu ondersteunen. We kunnen periodefuncties in twee hoofdgroepen verdelen: comparatief (periode over periode) functies en cumulatieve (periode tot nu toe) functies.

Vergelijkende (periode over periode) functies

U kunt periode-over-periodefuncties gebruiken om metingen in verschillende tijdsperioden, zoals jaar, kwartaal en maand, te vergelijken. U kunt bijvoorbeeld een jaar-op-jaar stijging van de verkoop, of week-op-week procentuele omzetwijzigingen berekenen.

Een typische vergelijkende periodefunctie heeft de syntaxis periodOverPeriodDifference(measure, date, period, offset), met twee optionele argumenten: period en offset.

U kunt gebruik maken van de period argument in de functie om de periodegranulariteit van de berekening te definiëren. de granulariteit van YEAR betekent jaar-op-jaar berekening, Quarter betekent kwartaal-op-kwartaal, enzovoort. Als het argument periode leeg wordt gelaten, verandert de berekening op basis van de granulariteit van de periode die is gekozen (in het veld goed) om in de visual te worden weergegeven.

U kunt ook gebruik maken van de offset argument om op te geven met hoeveel perioden u de vergelijking wilt berekenen. Bijvoorbeeld een periode van een kwartaal met een offset van 2 betekent vergelijken met de voorgaande twee kwartalen.

Merk op dat period en offset moeten beide worden opgegeven of beide leeg worden gelaten. U kunt er niet slechts één specificeren.

De volgende tabel geeft een overzicht van de drie beschikbare periode-over-periodefuncties.

Functie Naam Functie type Omschrijving
periodeOverPeriodeVerschil Tabel Berekening Berekent het verschil van een meetwaarde over twee verschillende tijdsperioden, zoals gespecificeerd door de granulariteit van de periode en de offset.
periodOverPeriodLastValue Tabel Berekening Berekent de laatste (vorige) waarde van een meting uit een vorige periode zoals gespecificeerd door de granulariteit en offset van de periode.
periodeOverPeriodePercentageverschil Tabel Berekening Berekent het procentuele verschil van een meetwaarde over twee verschillende tijdsperioden, zoals gespecificeerd door de granulariteit van de periode en de offset.

Cumulatieve (periode tot nu toe) functies

U kunt period-to-date-functies gebruiken om metrieken te berekenen binnen een bepaald period-to-date-venster. Er zijn twee hoofdtypen cumulatieve functies.

  • "OverTime" -functies, dit zijn tabelberekeningen en retouruitvoer voor elke rij in de visual.

U kunt bijv periodToDateCountOverTime Met WEEK granulariteit om een ​​reeks wekelijkse tellingen van nieuwe klanten te berekenen om de fluctuatie van klantbetrokkenheid te volgen.

  • Aggregatiefuncties, die een geaggregeerde waarde voor een vaste periode tot nu toe uitvoeren.

Bijv. periodtoDateSum Met YEAR granulariteit retourneert een enkele waarde voor het totaal van de metriek vanaf het begin van het jaar tot de endDate voorzien in de formule. Indien blanco gelaten, is de standaard endDate neemt now(), het moment waarop gebruikers het dashboard laden.

De volgende tabel geeft een overzicht van de functies van de periode tot nu toe.

Functie Naam Functie type Omschrijving
periodToDateAvgOverTime Tabel Berekening Berekent het gemiddelde van een meetwaarde voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateCountOverTime Tabel Berekening Berekent het aantal van een dimensie of meting voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateMaxOverTime Tabel Berekening Berekent het maximum van een maatregel of datum voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateMinOverTime Tabel Berekening Berekent het minimum van een maateenheid of datum voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateSumOverTime Tabel Berekening Berekent de som van een maateenheid voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodToDateGem Aggregatie Middelt de reeks getallen in de opgegeven maat voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateCount Aggregatie Berekent de nu
aantal waarden in een dimensie of meting voor een bepaalde tijd granulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip, inclusief duplicaten.
periodeToDateMax Aggregatie Retourneert de maximale waarde van de opgegeven meetwaarde voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateMediaan Aggregatie Retourneert de mediaanwaarde van de opgegeven meetwaarde voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateMin Aggregatie Retourneert de minimumwaarde van de opgegeven meetwaarde of datum voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDatePercentiel Aggregatie Berekent het percentiel op basis van de werkelijke getallen in de maat voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDatePercentielCont Aggregatie Berekent het percentiel op basis van een continue verdeling van de getallen in de maat voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateStDev Aggregatie Berekent de standaarddeviatie van de reeks getallen in de opgegeven maat voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip op basis van een steekproef.
periodeToDateStDevP Aggregatie Berekent de populatiestandaarddeviatie van de reeks getallen in de opgegeven maat voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip op basis van een steekproef.
periodetotDatumSum Aggregatie Voegt de reeks getallen in de opgegeven maat voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) toe tot een bepaald tijdstip.
periodeToDateVar Aggregatie Berekent de steekproefvariantie van de reeks getallen in de opgegeven maat voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.
periodeToDateVarP Aggregatie Berekent de populatievariantie van de reeks getallen in de opgegeven maat voor een bepaalde tijdsgranulariteit (bijvoorbeeld een kwart) tot een bepaald tijdstip.

Use case 1: Een periode-over-periode-functie gebruiken om verkoopgroei in vaste en dynamische granulariteit te analyseren

Laten we eens kijken hoe periode-over-periode-functies typische zakelijke en financiële gebruiksscenario's kunnen ondersteunen. Het volgende voorbeeld gebruikt periodeOverPeriodeVerschil om de omzetgroei op jaarbasis te berekenen. Omdat we hebben Segment en Region in de visual wordt de YoY-omzet berekend voor elk segment en elke regio.

We definiëren de maat van YoYSales met de volgende formule: YoYSales=periodOverPeriodDifference(sum(Sales),{Order Date},YEAR,1)

Het eerste argument, sum(Sales), vertelt de functie die moet worden berekend op basis van deze meting. Het tweede argument, Order Date, specificeert de datum/tijd-kolom van waaruit Year informatie wordt geëxtraheerd. Het derde argument, YEAR, corrigeert de granulariteit van deze berekening. Wanneer dit optionele argument is opgegeven, retourneert deze maat altijd YoY (niet QoQ of MoM), ongeacht hoe Order Date is geselecteerd (in het veld goed) om te worden weergegeven in de visual. Het vierde argument 1, specificeert de offset van de vergelijking. In dit voorbeeld betekent dit dat we de verkopen van elke besteldatum willen vergelijken met dezelfde datum van het voorgaande jaar. De meetwaarde retourneert leeg voor besteldatums van 2018, omdat er geen eerdere perioden zijn om mee te vergelijken.

De periodefuncties werken met totalen en subtotalen. Door het totaal voor kolommen toe te voegen aan de visual, kunt u de totale verkoop en het totaal zien YoYSales voor elke regio.

Als u het optionele argument van laat period granulariteit leeg, wat betekent dat de formule moet worden gewijzigd in PoPSales=periodOverPeriodDifference(sum(Sales),{Order Date})zoals weergegeven in het volgende voorbeeld, wordt de tijdsperiode van de berekening bepaald door de granulariteit van Order Date weergegeven op het visuele. In het volgende voorbeeld is Orderdatum gekozen om op kwartaalniveau (in het veld goed) weer te geven, dus PoPSales berekent dynamisch de QoQ-omzetgroei. Veranderen Order Date naar het maandelijkse niveau actualiseert de maatstaf om MoM te berekenen. Voor PoPSales, alleen Q1 2018 keert leeg terug omdat dat het enige kwartaal is dat geen vorig kwartaal heeft om mee te vergelijken.

Als we toevoegen YoYSales van het vorige voorbeeld naar deze visual berekent het de YoY-omzetgroei op kwartaalniveau (vergelijkt de omzet van Q1 2019 met Q1 2018). Dit toont het verschil aan tussen een vaste granulariteit en een dynamische granulariteit van periode-over-periodefuncties.

De periode over periode-functies kunnen onderscheid maken tussen een positieve verandering (toename) en negatieve verandering (afname). Daarom, wanneer we de voorwaardelijke opmaak aan de visual toevoegen, is het heel eenvoudig om de financiële prestaties van elke periode te zien (groen is goed, rood is slecht).

Op dezelfde manier kunt u periodOverPeriodPercentDifference om de relatieve omzetgroei in de loop van de tijd te berekenen. U kunt dimensies toevoegen aan de
visual om verder in zakelijke inzichten te duiken, zoals het analyseren van de uitsplitsing van de verkoopverandering van elk bedrijfssegment per kwartaal, en hun bijdrage aan de totale verkoopstijging. We gebruiken de formule PoPSales%=periodOverPeriodPercentDifference(sum(Sales),{Order Date}).

Use case 2: Een periode tot nu toe-functie gebruiken om YTD-verkopen bij te houden in tabelberekeningen en aggregaties

Net als bij periode-over-periodefuncties, biedt de functiesuite van periode tot nu een snelle en gemakkelijke manier om jaar-tot-datum (YTD) of kwartaal-tot-datum (QTD) statistieken te berekenen. In het volgende voorbeeld gebruiken we de formule van YTDSumoverSales=periodToDateSumOverTime(sum(Sales),{Order Date},YEAR) en YTDtotalcountSales=periodToDateSumOverTime(count(Sales),{Order Date},YEAR) om de YTD-verkoop en het totale YTD-aantal transacties te berekenen.

In tegenstelling tot periode over periode functies, het derde argument van periode tot datum functies, period, is niet optioneel. Daarom ligt de granulariteit van de berekening altijd vast. In dit voorbeeld, met de granulariteit gedefinieerd als JAAR, berekent deze meting altijd YTD, in plaats van QTD of MTD. Omdat Order Date wordt weergegeven op maandelijks niveau, deze berekening geeft de YTD-verkopen van elke maand weer en begint opnieuw in januari voor het volgende jaar. Zoals te zien is in de resultatentabel, YTDSumoverSales van januari 2018 is de maandomzet van januari 2018, en YTDSumoverSales van februari 2018 is de maandomzet van januari 2018 plus die van februari 2018. En YTDSumoverSales van januari 2019 gaat terug naar de maandverkopen van januari 2019.

U kunt verder in de details duiken door de berekeningen in een lijndiagram in te vullen en meer dimensies aan de analyse toe te voegen. Het volgende voorbeeld toont de YTD wekelijkse omzetgroeitrend voor elke regio in de afgelopen vier jaar, en onthult een aantal interessante verkoopconcurrentie tussen AMER en EMEA in het jaar 2021.

Naast de tabelberekeningen zijn de aggregatieperiodefuncties met name handig wanneer u KPI-diagrammen moet maken om YTD-statistieken in realtime te evalueren. In het volgende voorbeeld gebruiken we de functies van de aggregatieperiode tot nu toe om twee KPI-diagrammen te maken om de totale YTD-verkoop en het totale YTD-aantal transacties bij te houden. Voor de datum 26 december 2021 komen de tijdstempelresultaten overeen met de overeenkomstige tabelberekeningen voor de datum 26 december 2021 in de tabel. De volgende tabel vat de formules samen.

Formule Formule type
YTDSumoverSales=periodToDateSumOverTime(sum(Sales),{Order Date},YEAR) Tabel Berekening
YTDtotalcountSales=periodToDateSumOverTime(count(Sales),{Order Date},YEAR) Tabel Berekening
YTDSumSales=periodToDateSum(Sales,{Order Date},YEAR) Aggregatie (KPI-diagram)
YTDCountSales=periodToDateCount(Sales,{Order Date},YEAR) Aggregatie (KPI-diagram)

Geavanceerde use case 1: Datum/tijd-bewustzijn met periodefuncties

Periodefuncties zijn niet alleen gemakkelijker te definiëren en te lezen, ze zijn ook datum-/tijdbewust, wat betekent dat de functies worden berekend op basis van een op datum/tijd gebaseerde offset in plaats van een vast aantal rijen. Het kan twee grote problemen oplossen die voorheen niet konden worden aangepakt.

Periodefuncties kunnen verschillende periodeduur aan

Als u de dagelijkse MoM-omzetstijging wilt berekenen, kunt u niet elke maand een vaste offset gebruiken omdat het aantal dagen van elke maand anders is (31 dagen voor januari en 28 of 29 dagen voor februari).

Periodefuncties worden berekend op basis van kalenderdata in plaats van een vaste offset. In het volgende voorbeeld gebruiken we de formule MoMsalesDiff=periodOverPeriodDifference(sum(Sales),{Order Date},MONTH,1). De dagelijkse MoM-verhoging wordt correct berekend op basis van de dag van de maand. De verkopen van de eerste dag van de maand worden vergeleken met de eerste dag van de vorige maand, en hetzelfde geldt voor alle andere dagen. (Beelden worden gedupliceerd voor demonstratiedoeleinden.)

Periodefuncties kunnen omgaan met schaarse (ontbrekende) gegevenspunten

Niet alle datasets kunnen een volledige set data garanderen. In het vorige voorbeeld ontbreken verkoopgegevens van 1 januari 2018. Het gebruik van de workaround op basis van een vaste offset kan hier een probleem opleveren omdat we 1 februari 2018 vergelijken met een andere datum in plaats van 1 januari 2018. Periodefuncties vergelijken metingen altijd op datum/tijd offsets zodat alleen gewenste datums worden vergeleken. In het vorige voorbeeld, MoMsalesDiff toont leeg voor 1 februari 2018, vanwege de ontbrekende gegevens van 1 januari 2018.

Geavanceerde use-case 2: Nesting-periodefuncties met andere berekeningen

Nu we periode-over-periode- en periode-tot-datum-functies kunnen gebruiken om berekende velden te maken, kunnen we deze functies nesten met andere berekeningen om geavanceerdere analyses aan te sturen.

U wilt bijvoorbeeld voor elk jaar weten wat de top 10 weken van het jaar zijn met betrekking tot week-op-week omzetgroei. Dit doe je door te rekenen WoWSales eerste: WoWSales=periodOverPeriodDifference(sum(Sales), {Order Date}, WEEK, 1). Dan nest je het met de denseRank venster functie: RankWoWSales=denseRank([WoWSales DESC],[{YEAR}]). Dit zou niet mogelijk zijn met de op vaste rijen gebaseerde tijdelijke oplossing, die wordt geïmplementeerd met behulp van visuele berekeningen in plaats van berekende velden. In de volgende afbeelding worden de top 10 weken van elk jaar met de hoogste omzetgroei opgehaald door een eenvoudig filter op RankWoWSales.

U kunt de periodefuncties zelfs nesten met andere pe
riod-functies om interessante inzichten te genereren. U kunt bijvoorbeeld een maandelijkse YoY-groei berekenen op basis van het maandelijkse YTD-aantal transacties. De volgende formule demonstreert de mogelijkheid om een ​​YTD berekend veld te nesten binnen een YoY berekend veld:

YTDtotalsountSales=periodToDateSumOverTime(count(Sales),{Order Date},YEAR)
YoYYTDSalesCount=periodOverPeriodDifference(YTDtotalcountSales,{Order Date},YEAR,1)

De resultaten in de volgende afbeelding tonen een groei op jaarbasis op basis van een geaccumuleerd aantal transacties in YTD in plaats van de absolute maandelijkse aantallen.

Geavanceerde use-case 3: Gedeeltelijke periodevergelijkingen

Ten slotte bespreken we een derde geavanceerde use-case: partiële periodevergelijking. Stel je voor dat het 15 november 2021 is (dat is de 46e dag van het laatste kwartaal van 2021), en je wilt berekenen 4 om de prestaties van dit kwartaal te vergelijken met voorgaande kwartalen, maar alleen de eerste 46 dagen van elk kwartaal te gebruiken in plaats van het hele kwartaal. Dit vereist een berekend veld met behulp van periodOverPeriodDifference genest met de sumIf() venster functie.

Het volgende voorbeeld demonstreert het gebruik van een genest berekend veld om deze use case aan te pakken:

QuarterToDate=periodToDateSumOverTime(sum(Sales), {Order Date}, QUARTER)
PartialQTDSales=sumIf(Sales, dateDiff(truncDate("Q", {Order Date}), {Order Date}, "HH") <= dateDiff(truncDate("Q", now()), now(), "HH"))
PartialQoQQTDSales=periodOverPeriodDifference(sumif(Sales, {Order Date} <= addDateTime(dateDiff(truncDate("Q", now()), now(), "HH"), "HH", truncDate("Q", {Order Date}))), {Order Date}, QUARTER, 1)

PartialQTDSales berekent hoeveel uur vanaf het begin van dit kwartaal tot de huidige datum en gebruikt sumIf() om de totale verkoop van die periode van elk kwartaal te berekenen. partialQoQQTDSales nestelt dan de periodOverPeriodDifference functie met PartialQTDSales om de gedeeltelijke QoQ-verschillen te vinden. Een dergelijke vergelijking op basis van een deelperiode is niet mogelijk zonder de nieuwe datum/tijdbewuste periodefuncties.

Conclusie

In deze blog hebben we nieuwe QuickSight-periodefuncties geïntroduceerd die snelle en krachtige op datum/tijd gebaseerde berekeningen mogelijk maken. We hebben vergelijkende en cumulatieve periodefuncties beoordeeld (dwz periode over periode en periode tot nu toe), twee belangrijke use-cases besproken (vaste versus dynamische granulariteit en tabelberekening versus aggregatie) en het gebruik uitgebreid tot drie geavanceerde use-cases. Periodefuncties zijn nu algemeen beschikbaar in alle ondersteunde QuickSight-regio's.

Ik kijk uit naar uw feedback en verhalen over hoe u deze berekeningen toepast op uw zakelijke behoeften.


Over de auteurs

Emily Zhu is Senior Product Manager bij Amazon QuickSight, de cloud-native, volledig beheerde SaaS BI-service van AWS. Ze leidt de ontwikkeling van de kernanalyses en berekeningen van QuickSight. Voordat ze bij AWS kwam, werkte ze een aantal jaren in het Amazon Prime Air drone-bezorgprogramma en het bedrijf Boeing als senior strateeg. Emily heeft een passie voor de mogelijkheden van cloudgebaseerde BI-oplossingen en kijkt ernaar uit om klanten te helpen vooruitgang te boeken bij het maken van datagestuurde strategieën.

Rajkumar Haridoss is Senior Software Development Engineer voor AWS QuickSight. Hij is de hoofdingenieur van het Query Generation-team en werkt aan back-endberekeningen, queryplanning en querygeneratielaag in QuickSight. Buiten het werk brengt hij graag quality time door met zijn gezin en zijn 4-jarige.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?