Een time-in-state-meting toevoegen aan uw Power BI-rapport
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
De tijd die een werkitem besteedt aan een specifieke werkstroomstatus of reeks statussen is een belangrijk aspect voor het begrijpen van efficiëntie. De widgets Cyclustijd en Lead Time Analytics bieden enkele metingen van de time-in-state. Deze widgets hebben mogelijk echter niet het gewenste detailniveau.
Dit artikel bevat recepten met behulp van DAX (Data Analysis Expressions) om de tijd te evalueren die door werkitems in een combinatie van statussen is besteed. In het bijzonder leert u hoe u de volgende meting en berekende kolommen toevoegt aan uw Power BI-rapporten en deze kunt gebruiken om verschillende trenddiagrammen te genereren. Alle velden zijn berekende kolommen, behalve de eerste die wordt vermeld.
Tellen | Beschrijving |
---|---|
Aantal werkitems (meting) | Berekent het aantal afzonderlijke werkitems op basis van de laatste dagvermelding voor het werkitem |
Sorteervolgorde van status | Hiermee voegt u een kolom toe die moet worden gebruikt om werkstroomstatussen te sorteren op basis van de volgorde Statuscategorie |
Datum vorige | Voegt een kolom toe waarmee de vorige datum wordt berekend op basis van de kolom Datum |
Datumverschil in dagen | Hiermee wordt een kolom toegevoegd waarmee het aantal dagen tussen de kolommen Datum en Datum vorige wordt berekend |
Is laatste dag in staat | Voegt een kolom toe die bepaalt of de datumwaarde de laatste dag is waarop het werkitem een status heeft |
Statustijd in dagen | Hiermee wordt een kolom toegevoegd waarmee het aantal dagen wordt berekend dat het werkitem in elke staat heeft besteed |
Vorige status | Voegt een kolom toe waarmee de vorige status voor elke rij in de gegevenstabel wordt geïdentificeerd |
Status gewijzigd | Hiermee voegt u een kolom toe waarmee de datum wordt bepaald waarop een werkitem van de ene staat naar de andere wordt overgezet |
Statusstroom | Hiermee voegt u een kolom toe die de statusstroom illustreert als een werkitem van de ene naar de andere staat overgaat |
Aantal statuswijzigingen | Hiermee wordt een kolom toegevoegd waarmee het aantal keren wordt berekend dat een werkitem is overgezet van de ene staat naar de andere |
Aantal statuswijzigingen - eerste voltooid | Hiermee voegt u een kolom toe waarmee wordt bepaald hoe vaak een werkitem voor het eerst overgaat naar de status Voltooid. Met andere woorden, wanneer deze van een andere status naar de status Voltooid wordt verplaatst. |
Aantal statuswijzigingen - Laatst voorgesteld | Voegt een kolom toe die bepaalt of een werkitem de status Voorgesteld heeft, eerder nadat het is overgezet naar een latere status |
Tijd voor opnieuw opstarten van status in dagen | Hiermee wordt een kolom toegevoegd waarmee de dagen worden berekend waarop een werkitem is besteed met de status Opnieuw opstarten |
Statusherwerktijd in dagen | Hiermee wordt een kolom toegevoegd waarmee de dagen worden berekend die een werkitem in een andere staat dan Voltooid besteedt |
Belangrijk
- Wanneer u een berekende kolom of meting toevoegt aan de voorbeelden die in dit artikel worden weergegeven, vervangt u Weergavenaam door de tabelnaam voor de analytics-weergave of gegevenstabel. Vervang bijvoorbeeld de weergavenaam door actieve bugs.
- Analytics biedt geen ondersteuning voor revisies binnen de dag. Deze voorbeelden hebben de meeste precisie bij het gebruik van een dagelijks interval bij het verwijzen naar een analyseweergave.
- Alle revisies binnen of binnen de dag (wekelijks/maandelijks) worden genegeerd door de berekeningen. Dit kan leiden tot onverwachte resultaten voor specifieke scenario's, zoals een werkitem dat geen tijd 'Wordt uitgevoerd' weergeeft wanneer een werkitem minder dan een dag wordt uitgevoerd.
- Power BI-standaardaggregaties worden waar mogelijk gebruikt in plaats van metingen te bouwen.
- Sommige berekeningen bevatten +0 om ervoor te zorgen dat een numerieke waarde wordt opgenomen voor elke rij in plaats van BLANK.
- Mogelijk moet u enkele berekende kolomdefinities herzien op basis van de werkstroomstatussen die door uw project worden gebruikt. Als uw project bijvoorbeeld gebruikmaakt van Nieuw, Actief en Gesloten in plaats van Voorgesteld, Wordt uitgevoerd en Voltooid.
- De kolom Datum waarnaar in dit artikel wordt verwezen, is geen systeemeigen kolom in Azure DevOps; Het is een afgeleide kolom die is gemaakt in PowerBI om het rapport Time in State te vergemakkelijken. U kunt deze kolom maken met behulp van de bestaande datumgerelateerde kolommen, zoals 'Datum gewijzigd' of 'Datum gewijzigd'.
Vereisten
- Toegang: Wees lid van een project met ten minste basistoegang .
- Machtigingen: projectleden zijn standaard gemachtigd om query's uit te voeren op Analytics en weergaven te maken.
- Zie Machtigingen en vereisten voor toegang tot Analyse voor meer informatie over andere vereisten met betrekking tot het inschakelen van services en functies en algemene activiteiten voor het bijhouden van gegevens.
Notitie
Als u alle tijd-in-statusmetingen wilt uitvoeren die in dit artikel worden beschreven, moet u de volgende velden opnemen in uw analytics-weergaven, Power Query of OData-query: Gemaakt datum- en statuscategorie naast de standaardvelden: Gebiedspad, Toegewezen aan, Iteratiepad, Status, Titel, Werkitem-id en Werkitemtype.
Overweeg ook het gebruik van een analyseweergave op basis van een dagelijkse granulariteit. Voorbeelden in dit artikel zijn gebaseerd op de weergave Active Bugs Analytics die is gedefinieerd in Een actief foutenrapport maken in Power BI op basis van een aangepaste analyseweergave, met uitzondering dat 60 dagen geschiedenis en dagelijkse granulariteit zijn geselecteerd. Bepaal ook of u voltooide of gesloten werkitems wilt bekijken.
Een meting Aantal werkitems toevoegen
Om het snel genereren van rapporten te vereenvoudigen, hebben we analyseweergaven ontworpen om te werken met standaardaggregaties in Power BI. Om het verschil tussen een standaardaggregatie en een meting te illustreren, beginnen we met een eenvoudige meting voor het tellen van werkitems.
Laad uw analyseweergave in Power BI Desktop. Zie Verbinding maken met Power BI-gegevensconnector, verbinding maken met een analyseweergave voor meer informatie.
Selecteer de gegevenstabel en kies vervolgens op het tabblad Hulpmiddelen voor tabellen , de sectie Berekeningen van het lint, de optie Nieuwe meting.
Vervang de standaardtekst door de volgende code en selecteer het vinkje.
Work Items Count=CALCULATE(COUNTROWS ('View Name'),LASTDATE ('View Name'[Date]))
De meting Aantal werkitems maakt gebruik van de
CALCULATE
functies ,COUNTROWS
enLASTDATE
DAX die verderop in dit artikel worden beschreven.Notitie
Vergeet niet om weergavenaam te vervangen door de tabelnaam voor de analytics-weergave. Hier vervangen we bijvoorbeeld Weergavenaam door actieve fouten.
Hoe verschilt een meting van een berekende kolom
Een meting evalueert altijd de hele tabel waarbij een berekende kolom specifiek is voor één rij. Zie Berekende kolommen en metingen in DAX voor meer informatie.
Vergelijk de meting Aantal werkitems met de standaardaggregatie op basis van de werkitem-id. De volgende afbeelding wordt gemaakt door de kaartvisual en de meting Aantal werkitems toe te voegen aan de eerste kaart en de eigenschap Werkitem-id aan de tweede kaart.
Als u het juiste aantal wilt ophalen met behulp van een standaardaggregatie, past u het filter Is current toe op 'True'. Dit patroon van het toepassen van filters op een standaardaggregatie is de basis voor veel van de voorbeelden in dit artikel.
Sorteervolgorde voor status toevoegen
In Power BI worden statussen standaard alfabetisch gesorteerd in een visualisatie weergegeven. Het kan misleidend zijn als u de tijd in de status wilt visualiseren en Voorgesteld wordt weergegeven na Wordt uitgevoerd. Met de volgende stappen kunt u dit probleem oplossen.
Controleer of het veld Statuscategorie is opgenomen in de analyseweergave. Dit veld is opgenomen in alle standaard gedeelde weergaven.
Selecteer de gegevenstabel en kies vervolgens op het tabblad Hulpmiddelen voor tabellen , de sectie Berekeningen van het lint, de optie Nieuwe kolom.
Vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Sort Order = SWITCH ( 'View Name'[State Category], "Proposed", 1, "InProgress", 2, "Resolved", 3, 4 )
Zie het volgende voorbeeld:
Notitie
Mogelijk moet u de definitie aanpassen als u meer granulariteit nodig hebt dan staatscategorie biedt. Statuscategorie biedt de juiste sortering voor alle typen werkitems, ongeacht eventuele aanpassingen van de status.
Open de gegevensweergave en selecteer de kolom Status .
Kies Op het tabblad Hulpmiddelen voor kolommen de optie Sorteren op kolom en selecteer vervolgens het veld Sorteervolgorde voor staten.
Datum vorige toevoegen
De volgende stap voor het berekenen van de tijd-in-status vereist het toewijzen van het vorige interval (dag, week, maand) voor elke rij met gegevens in de gegevensset. Het is een eenvoudige berekening met behulp van een berekende kolom. Normaal gesproken definieert u deze kolom zoals wordt weergegeven.
Date Previous =
PREVIOUSDAY ( 'View Name'[Date] )
Deze aanpak heeft echter twee hoofdproblemen:
- Het werkt alleen voor dagelijkse perioden.
- Er worden geen hiaten in de gegevens verwerkt. Als een werkitem bijvoorbeeld tussen projecten wordt verplaatst.
Om deze problemen op te lossen, moet de berekende kolom de vorige dag vinden door het veld Datum te scannen.
Als u de berekende kolom Datum vorige wilt toevoegen, kiest u nieuwe kolom op het tabblad Hulpmiddelen voor tabellen en vervangt u de standaardtekst door de volgende code en selecteert u het vinkje.
Date Previous =
CALCULATE (
MAX ( 'View Name'[Date] ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] < EARLIER ( 'View Name'[Date] )
)
De berekende kolom Date Previous maakt gebruik van drie DAX-functies, MAX
en ALLEXCEPT
, die EARLIER
verderop in dit artikel worden beschreven. Omdat de kolom wordt berekend, wordt deze uitgevoerd voor elke rij in de tabel en elke keer dat deze wordt uitgevoerd, heeft deze de context van die specifieke rij.
Tip
Kies in het contextmenu voor de velden Datum en Vorige datum de optie Datum (in plaats van datumhiërarchie) om één datum voor deze velden weer te geven.
Datumverschil in dagen toevoegen
Date Previous berekent het verschil tussen de vorige en de huidige datum voor elke rij. Met Datumverschil in Dagen berekenen we een telling van dagen tussen elk van deze perioden. Voor de meeste rijen in een dagelijkse momentopname is de waarde gelijk aan 1. Voor veel werkitems met hiaten in de gegevensset is de waarde echter groter dan 1.
Belangrijk
Hiervoor moet u de berekende kolom Datum vorige aan de tabel hebben toegevoegd.
Het is belangrijk om rekening te houden met de eerste dag van de gegevensset waarin Datum vorige leeg is. In dit voorbeeld geven we die rij een standaardwaarde van 1 om de berekening consistent te houden.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
Date Diff in Days =
IF (
ISBLANK ( 'View Name'[Date Previous] ),
1,
DATEDIFF (
'View Name'[Date Previous],
'View Name'[Date],
DAY
)
)
In deze berekende kolom worden de ISBLANK
functies en DATEDIFF
DAX gebruikt die verderop in dit artikel worden beschreven.
Toevoegen is laatste dag in staat
In deze volgende stap berekenen we of een bepaalde rij de laatste dag aangeeft dat een specifiek werkitem een status heeft. Het biedt ondersteuning voor standaardaggregaties in Power BI die we toevoegen in de volgende sectie waarin we de kolom State Time in Days toevoegen.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
Is Last Day in State =
ISBLANK (CALCULATE (
COUNTROWS ( 'View Name' ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] > EARLIER ( 'View Name'[Date] ),
'View Name'[State] = EARLIER ( 'View Name'[State] )
))
Statustijd in dagen toevoegen
De tijd die een werkitem in een specifieke status heeft doorgebracht, kan nu worden berekend door de datumverschil in dagen voor elk werkitem op te sommen. Deze berekening omvat alle tijd die is besteed aan een specifieke status, zelfs als deze meerdere keren tussen statussen is overgeschakeld. Het is mogelijk om elke rij te evalueren als trend met datum of de meest recente informatie met behulp van Is Last Day In State.
Belangrijk
Vereist dat u de berekende kolommen Date Diff in Days en Is Last Day in State hebt toegevoegd aan de tabel.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Time in Days =
CALCULATE (
SUM ( 'View Name'[Date Diff in Days] ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
'View Name'[State] = EARLIER ( 'View Name'[State] )
) + 0
Gestapelde kolomtrenddiagrammen maken op basis van statustijd in dagen
Om de kolom State Time in Days te demonstreren, worden de volgende gestapelde kolomdiagrammen gemaakt. In de eerste grafiek ziet u het aantal werkitems in elke status in de loop van de tijd.
In de tweede grafiek ziet u de trend van gemiddelde dagen dat de actieve werkitems een bepaalde status hebben.
Statustijd toevoegen in dagen - Laatste (is laatste dag in staat)
Wanneer u een time-in-state evalueert voor elk werkitem in een tabel of wanneer dit wordt gefilterd op een veld zoals Vlakpad, gebruikt u de kolom State Time in Days niet in een aggregatie. De aggregatie gebruikt de waarde voor elke dag dat het werkitem de status heeft. Als een werkitem bijvoorbeeld op maandag wordt uitgevoerd en op donderdag is verplaatst naar Voltooid , is de tijd-in-status drie dagen, maar de som van de kolom State Time in Days is zes dagen, 1+2+3
wat onjuist is.
Als u dit probleem wilt oplossen, gebruikt u State Time in Days en past u het filter Is Last Day In State gelijk aan 'True'. Het elimineert alle historische gegevens die nodig zijn voor een trend en richt zich in plaats daarvan op alleen de meest recente waarde voor elke status.
Statustijd toevoegen in dagen - wordt uitgevoerd
In de vorige voorbeelden wordt statustijd in dagen voor een bepaald werkitem alleen geteld wanneer het werkitem die specifieke status heeft. Als het uw doel is om de time-in-state voor een bepaald werkitem te tellen voor een gemiddeld continu, moet u de berekening wijzigen. Als we bijvoorbeeld de status 'Wordt uitgevoerd' willen bijhouden, voegen we de berekende kolom State Time in Days - In Progress toe.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Time in Days - In Progress =
CALCULATE (
SUM ( 'View Name'[Date Diff in Days] ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] <= EARLIER('View Name'[Date]),
'View Name'[State] = "In Progress"
) + 0
Notitie
Mogelijk moet u de definitie aanpassen op basis van de werkstroomstatussen die door uw project worden gebruikt. Het project dat in de voorbeelden in dit artikel wordt gebruikt, gebruikt bijvoorbeeld de werkstroomstatus 'In voortgang', maar Agile-, Scrum- en CMMI-processen gebruiken doorgaans de status 'Actief' of 'Vastgelegd' om werk in uitvoering weer te geven. Zie Werkstroomstatussen en statuscategorieën voor een overzicht.
In de volgende afbeelding ziet u het effect van het overwegen van alle time-in-state voor elk bestaand werkitem (links weergegeven) versus alleen die werkitems in een specifieke status op een bepaalde dag (rechts weergegeven).
Statustijd in dagentrend van meerdere statussen
Het analyseren van prestaties in meerdere statussen is ook mogelijk met behulp van het patroon Doorlopend. Deze benadering werkt echter alleen met een trendgrafiek.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Time in Days - Working States =
CALCULATE (
SUM ( 'View Name'[Date Diff in Days] ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] <= EARLIER('View Name'[Date]),
'View Name'[State] IN { "Committed", "In Progress" }
) + 0
Notitie
Mogelijk moet u de definitie aanpassen op basis van de werkstroomstatussen die door uw project worden gebruikt. Als uw project bijvoorbeeld 'Actief' gebruikt in plaats van 'Vastgelegd' of 'Voorgesteld'.
In het diagram aan de linkerkant ziet u het gecombineerde gemiddelde, terwijl aan de rechterkant elke afzonderlijke status wordt weergegeven.
De statustijd in dagen ophalen- Laatste voor meerdere statussen
U gebruikt de kolom State Time in Days- Meest recente berekende kolom bij het maken van een trend. Met een filter op de statussen biedt de kolom State Time in Days en Is Last Day in State een eenvoudige manier om de totale tijd te krijgen die elk werkitem of een groep werkitems in een set statussen heeft besteed.
Vorige status toevoegen
De berekende kolom Datum vorige kan ook worden gebruikt om eerdere waarden op te zoeken, zoals de vorige status voor elk werkitem.
Belangrijk
Hiervoor moet u de berekende kolom Datum vorige aan de tabel hebben toegevoegd.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Previous =
LOOKUPVALUE (
'View Name'[State],
'View Name'[Work Item Id], 'View Name'[Work Item Id],
'View Name'[Date], 'View Name'[Date Previous]
)
In deze berekende kolom wordt de LOOKUPVALUE
, die verderop in dit artikel wordt beschreven, gebruikt.
De eerste LOOKUPVALUE
parameter, 'View Name'[State]
geeft aan de waarde van [Staat].
De volgende parameter, 'View Name'[Work Item Id], 'View Name'[Work Item Id]
geeft aan dat alleen rijen met een overeenkomende werkitem-id als de huidige rij moeten worden overwogen.
En de laatste parameter, 'View Name'[Date], 'View Name'[Date Previous]
geeft aan dat de datum van de rij die wordt geretourneerd een [Datum] moet hebben die overeenkomt met de [vorige datum] van de huidige rij. In een momentopname kan slechts één rij voldoen aan deze criteria.
Status toevoegen gewijzigd
Met behulp van de kolom Status vorige kunnen we de rijen markeren voor elk werkitem waarin een statusovergang heeft plaatsgevonden. De berekende kolom Fase gewijzigd heeft twee speciale overwegingen:
- Lege waarden van *State Previous, die we hebben ingesteld op de gemaakt datum van het werkitem
- Het maken van een werkitem wordt beschouwd als een statusovergang
Belangrijk
Hiervoor moet u de berekende kolom State Previous aan de tabel hebben toegevoegd.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Changed =
IF (
ISBLANK ( 'View Name'[State Previous] ),
'View Name'[Created Date].[Date] = 'View Name'[Date],
'View Name'[State Previous] <> 'View Name'[State]
)
De berekende kolom is een Booleaanse waarde die aangeeft of de rij een statusovergang is. Door de Not Equal To
operator te gebruiken, haalt u juist rijen op waarbij de vorige status niet overeenkomt met de huidige status, wat betekent dat de vergelijking Waar retourneert zoals verwacht.
Statusstroom toevoegen
Met berekende kolommen State Previous en State Changed kunt u een kolom maken die de statusstroom voor een bepaald werkitem illustreert. Het maken van deze kolom is optioneel voor het doel van dit artikel.
Belangrijk
Hiervoor moet u de berekende kolommen State Previous en State Changed aan de tabel hebben toegevoegd.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Flow =
IF([State Changed], [State Previous], [State]) & " => " & [State]
Aantal statuswijziging toevoegen
Naarmate we naar de complexere metingen gaan, moeten we een weergave hebben van het totale aantal statuswijzigingen om de rijen van een gegevens voor een bepaald werkitem te vergelijken. We krijgen de weergave door een berekende kolom Statuswijzigingsaantal toe te voegen.
Belangrijk
Hiervoor moet u de berekende kolom State Changed aan de tabel hebben toegevoegd.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Change Count =
CALCULATE (
COUNTROWS ( 'View Name' ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
'View Name'[State Changed]
) + 0
Aantal statuswijzigingen toevoegen - Laatst voorgesteld en tijd voor opnieuw opstarten van status in dagen
De tijd voor opnieuw opstarten van de status in dagen is een redelijk complexe berekening. De eerste stap is het vinden van de laatste keer dat een werkitem een voorgestelde status heeft. Voeg het aantal statuswijzigingen toe - Laatst voorgestelde berekende kolom.
Notitie
Mogelijk moet u de volgende definities aanpassen op basis van de werkstroomstatussen die door uw project worden gebruikt. Als uw project bijvoorbeeld 'Nieuw' gebruikt in plaats van 'Voorgesteld'.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Change Count - Last Proposed =
CALCULATE (
MAX ( 'View Name'[State Change Count] ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
'View Name'[State] = "Proposed"
)
Kijk vervolgens verder terug naar het verleden en kijk of er een aantal actieve staten waren vóór deze voorgestelde status. Ten slotte somt u alle dagen op waarop het werkitem actief was voordat het laatst werd voorgesteld.
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Restart Time in Days =
CALCULATE (
SUM ( 'View Name'[Date Diff in Days] ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
'View Name'[State Change Count] < EARLIER('View Name'[State Change Count - Last Proposed] ),
'View Name'[State] <"Proposed"
) + 0
Omdat de tijd voor opnieuw opstarten van status in dagen voor elke rij met gegevens wordt bijgewerkt, kunt u een trend maken om het werk te evalueren in specifieke sprints of om het werk opnieuw te onderzoeken voor afzonderlijke werkitems met is actueel.
Statusherwerktijd toevoegen in dagen
Net als de status opnieuw opstarten in dagen zoekt de statusherstarttijd in dagen naar de eerste keer dat een werkitem de categorie Voltooide status heeft. Na die tijd wordt elke dag een werkitem in een andere staat dan Voltooid besteed, telt als herwerk.
Maak de kolom Statuswijziging - Eerste voltooid. In deze kolom wordt het aantal keren bijgehouden dat een werkitem vanuit een andere status naar de status Voltooid gaat.
State Change Count - First Completed = VAR CompletedState = "Completed" RETURN CALCULATE( COUNTROWS('YourTable'), FILTER( 'YourTable', 'YourTable'[State] = CompletedState && 'YourTable'[State Change Date] = MIN('YourTable'[State Change Date]) ) )
Kies op het tabblad Modelleren de optie Nieuwe kolom en vervang de standaardtekst door de volgende code en selecteer het vinkje.
State Rework Time in Days = IF ( ISBLANK ( 'View Name'[State Change Count - First Completed] ), 0, CALCULATE ( SUM ( 'View Name'[Date Diff in Days] ), ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ), 'View Name'[Date] <= EARLIER ( 'View Name'[Date] ), 'View Name'[State Change Count] <= EARLIER ( 'View Name'[State Change Count - First Completed] ), 'View Name'[State] IN {"Completed", "Closed", "Cut" } = FALSE() ) + 0 )
Notitie
Mogelijk moet u de vorige definitie aanpassen op basis van de werkstroomstatussen die door uw project worden gebruikt. Als uw project bijvoorbeeld Gereed gebruikt in plaats van Gesloten, enzovoort.
DAX-functies
Aanvullende informatie vindt u in deze sectie voor de DAX-functies die worden gebruikt voor het maken van de berekende kolommen en meting die in dit artikel zijn toegevoegd. Zie ook DAX, Time intelligence-functies.
Functie | Beschrijving |
---|---|
ALLEXCEPT |
Hiermee verwijdert u alle contextfilters in de tabel, behalve filters die zijn toegepast op de opgegeven kolommen. In wezen ALLEXCEPT ('View Name'', 'View Name'[Work Item Id]) vermindert u de rijen in de tabel tot alleen de rijen die dezelfde werkitem-id delen als de huidige rij. |
CALCULATE |
Deze functie is de basis voor bijna alle voorbeelden. De basisstructuur is een expressie gevolgd door een reeks filters die op de expressie worden toegepast. |
COUNTROWS |
Met deze functie COUNTROWS ( 'View Name' ) wordt eenvoudigweg het aantal rijen geteld dat achterblijft nadat de filters zijn toegepast. |
DATEDIFF |
Retourneert het aantal intervalgrenzen tussen twee datums. DATEDIFF Hiermee wordt Datum vorige van datum afgetrokken om het aantal dagen tussen de datums te bepalen. |
EARLIER |
Retourneert de huidige waarde van de opgegeven kolom in een buitenste evaluatiepass van de genoemde kolom. Vermindert bijvoorbeeld 'View Name'[Date] < EARLIER ( 'View Name'[Date] ) de gegevensset nog verder op alleen de rijen die zich vóór de datum voor de huidige rij hebben voorgedaan waarnaar wordt verwezen met behulp van de EARLIER functie. EARLIER verwijst niet naar eerdere datums; hiermee wordt specifiek de rijcontext van de berekende kolom gedefinieerd. |
ISBLANK |
Controleert of een waarde leeg is en retourneert WAAR of ONWAAR. ISBLANK evalueert de huidige rij om te bepalen of Datum vorige een waarde heeft. Als dit niet het probleem is, stelt de if-instructie Datumverschil in Dagen in op 1. |
LASTDATE |
We passen het LASTDATE filter toe op een expressie, bijvoorbeeld LASTDATE ( 'View Name'[Date] ) om de nieuwste datum te vinden in alle rijen in de tabel en om de rijen te elimineren die niet dezelfde datum delen. Met de momentopnametabel die is gegenereerd door een analyseweergave, kiest dit filter effectief de laatste dag van de geselecteerde periode. |
LOOKUPVALUE |
Retourneert de waarde in result_columnName voor de rij die voldoet aan alle criteria die zijn opgegeven door search_columnName en search_value. |
MAX |
Retourneert de grootste numerieke waarde in een kolom of tussen twee scalaire expressies. We zijn van toepassing MAX ( 'View Name'[Date] ) , om de meest recente datum te bepalen nadat alle filters zijn toegepast. |