Lägga till ett tids-i-tillstånd-mått i din Power BI-rapport

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Den tid ett arbetsobjekt tillbringar i ett visst arbetsflödestillstånd eller en serie tillstånd är en viktig aspekt för att förstå effektiviteten. Widgetarna Cycle Time och Lead Time Analytics innehåller några mått på tids-i-tillstånd. De här widgetarna kanske dock inte har den detaljnivå som du vill ha.

Den här artikeln innehåller recept som använder DAX (Data Analysis Expressions) för att utvärdera tid som används av arbetsobjekt i en kombination av tillstånd. Mer specifikt lär du dig att lägga till följande mått och beräknade kolumner i dina Power BI-rapporter och använda dem för att generera olika trenddiagram. Alla fält är beräknade kolumner utom den första som visas.

Antal beskrivning
Antal arbetsobjekt (mått) Beräknar antalet distinkta arbetsobjekt baserat på posten för den sista dagen för arbetsobjektet
Sorteringsordning för tillstånd Lägger till en kolumn som ska användas för att sortera arbetsflödestillstånd baserat på sekvensen Tillståndskategori
Föregående datum Lägger till en kolumn som beräknar föregående datum baserat på kolumnen Datum
Datum-Diff i dagar Lägger till en kolumn som beräknar antalet dagar mellan kolumnerna Datum och Datum föregående
Är sista dagen i tillstånd Lägger till en kolumn som avgör om datumvärdet är den sista dagen som arbetsobjektet var i ett tillstånd
Tillståndstid i dagar Lägger till en kolumn som beräknar antalet dagar som arbetsobjektet har spenderats i varje delstat
Tillstånd föregående Lägger till en kolumn som identifierar föregående tillstånd för varje rad i datatabellen
Tillstånd har ändrats Lägger till en kolumn som avgör datumet då ett arbetsobjekt övergick från ett tillstånd till ett annat
Tillståndsflöde Lägger till en kolumn som illustrerar tillståndsflödet när ett arbetsobjekt övergår från ett tillstånd till ett annat
Antal tillståndsändringar Lägger till en kolumn som beräknar antalet gånger ett arbetsobjekt har övergått från ett tillstånd till ett annat
Antal tillståndsändringar – först slutfört Lägger till en kolumn som avgör hur många gånger ett arbetsobjekt för första gången övergår till tillståndet Slutfört. Med andra ord, när den flyttas från något annat tillstånd till tillståndet Slutfört.
Antal tillståndsändringar – senast föreslaget Lägger till en kolumn som avgör om ett arbetsobjekt var i ett föreslaget tillstånd tidigare efter att det övergått till ett senare tillstånd
Tillståndsomstartstid i dagar Lägger till en kolumn som beräknar de dagar då ett arbetsobjekt tillbringades i ett omstartstillstånd
Tid för omarbetning av tillstånd i dagar Lägger till en kolumn som beräknar de dagar som ett arbetsobjekt spenderar i ett annat tillstånd än Slutfört

Viktigt!

  • När du lägger till en beräknad kolumn eller ett mått enligt exemplen som visas i den här artikeln ersätter du Vynamn med tabellnamnet för analysvyn eller datatabellen. Ersätt till exempel Visningsnamn med Aktiva buggar.
    Skärmbild av fliken Tabellverktyg i Power BI, namn på datatabell.
  • Analys stöder inte intradagsrevisioner. De här exemplen har störst precision när du använder ett dagligt intervall när du refererar till en analysvy.
  • Alla ändringar inom dagen eller inom en period (varje vecka/månad) ignoreras av beräkningarna. Detta kan resultera i oväntade resultat för specifika scenarier som ett arbetsobjekt som inte visar någon tid "Pågår" när ett arbetsobjekt är "pågår" under mindre än en dag.
  • Power BI-standardaggregeringar används när det är möjligt i stället för att skapa mått.
  • Vissa beräkningar inkluderar +0 för att säkerställa att ett numeriskt värde inkluderas för varje rad i stället för BLANK. Du kan behöva ändra några av de beräknade kolumndefinitionerna baserat på de arbetsflödestillstånd som används av projektet. Om projektet till exempel använder Ny, Aktiv och Stängd i stället för Föreslagen, Pågår och Slutförd.

Förutsättningar

  • Om du vill visa analysdata och fråga tjänsten måste du vara medlem i ett projekt med grundläggande åtkomst eller större. Som standard beviljas alla projektmedlemmar behörighet att köra frågor mot Analytics och definiera analysvyer.
  • Mer information om andra förutsättningar för tjänst- och funktionsaktivering och allmänna dataspårningsaktiviteter finns i Behörigheter och krav för åtkomst till analys.

Kommentar

Om du vill använda alla tids-i-tillstånd-mått som beskrivs i den här artikeln måste du inkludera följande fält i analytics-vyerna, Power Query- eller OData-frågan: Skapad datum - och tillståndskategori utöver standardfälten: Områdessökväg, Tilldelad till, Iterationssökväg, Tillstånd, Rubrik, Arbetsobjekt-ID och Arbetsobjekttyp.

Överväg också att använda en analysvy baserat på en daglig kornighet. Exemplen i den här artikeln baseras på vyn Active Bugs Analytics som definierats i Skapa en rapport om aktiva buggar i Power BI baserat på en anpassad analysvy, med undantag för att 60 dagars historik och daglig kornighet har valts. Kontrollera även om du vill granska slutförda eller stängda arbetsobjekt.

Lägga till ett mått för antal arbetsobjekt

För att förenkla snabbgenerering av rapporter har vi utformat analysvyer för att fungera med standardaggregeringar i Power BI. För att illustrera skillnaden mellan en standardaggregering och ett mått börjar vi med ett enkelt mått för antal arbetsobjekt.

  1. Läs in analysvyn i Power BI Desktop. Mer information finns i Anslut med Power BI Data Anslut or, Anslut till en analysvy.

  2. Välj datatabellen och välj sedan Nytt måttfliken Tabellverktyg, avsnittet Beräkningar i menyfliksområdet.

    Skärmbild av fliken Power BI-tabellverktyg, Nytt mått.

  3. Ersätt standardtexten med följande kod och markera sedan bockmarkeringen .

    Work Items Count=CALCULATE(COUNTROWS ('View Name'),LASTDATE ('View Name'[Date]))
    

    Måttet Antal arbetsobjekt använder funktionerna CALCULATE, COUNTROWSoch LASTDATE DAX som beskrivs mer detaljerat senare i den här artikeln.

    Kommentar

    Kom ihåg att ersätta Vynamn med tabellnamnet för analysvyn. Här ersätter vi till exempel Visningsnamn med aktiva buggar.

    Skärmbild av fliken Power BI-måttverktyg, syntax för antal arbetsobjekt.

Hur skiljer sig ett mått från en beräknad kolumn

Ett mått utvärderar alltid hela tabellen där en beräknad kolumn är specifik för en enskild rad. Mer information finns i Beräknade kolumner och mått i DAX.

Jämför måttet Antal arbetsobjekt med standardantalet aggregering baserat på arbetsobjektets ID. Följande bild skapas genom att du lägger till det visuella kortet och måttet Antal arbetsobjekt till det första kortet och egenskapen Arbetsobjekt-ID till det andra kortet.

Skärmbild av Power BI-rapportsidan, två kort som visar måttet Antal arbetsobjekt och egenskapen Arbetsobjekt-ID.

Om du vill få rätt antal med hjälp av en standardaggregering använder du filtret Is Current är lika med "True". Det här mönstret för att tillämpa filter på en standardaggregering är grunden för många av exemplen i den här artikeln.

Skärmbild av Power BI-rapportsidan, antalet arbetsobjekts-ID filtrerat.

Lägg till tillståndssorteringsordning

Som standard visar Power BI tillstånd sorterade alfabetiskt i en visualisering. Det kan vara missvisande när du vill visualisera tiden i tillståndet och Föreslagna visas efter Pågående. Följande steg hjälper dig att lösa det här problemet.

  1. Kontrollera att fältet Tillståndskategori ingår i analysvyn. Det här fältet ingår i alla delade standardvyer.

  2. Välj datatabellen och välj sedan Ny kolumnfliken Tabellverktyg, avsnittet Beräkningar i menyfliksområdet.

    Skärmbild av fliken Power BI-tabellverktyg, Ny kolumn.

  3. Ersätt standardtexten med följande kod och markera sedan bockmarkeringen .

    State Sort Order =  
    SWITCH (  
        'View Name'[State Category],  
        "Proposed", 1,  
        "InProgress", 2,  
        "Resolved", 3,  
        4  
    )  
    

    Se följande exempel:

    Skärmbild av fliken Tabellverktyg i Power BI, statuskategoripost.

    Kommentar

    Du kan behöva ändra definitionen om du behöver mer kornighet än vad som anges i tillståndskategorin . Tillståndskategori ger korrekt sortering mellan alla typer av arbetsobjekt oavsett eventuella tillståndsanpassningar .

  4. Öppna datavynoch välj kolumnen Tillstånd.

  5. På fliken Kolumnverktyg väljer du Sortera efter kolumn och sedan fältet Sorteringsordning för tillstånd.

    Skärmbild av fliken Verktyg för Power BI-kolumner, Sortera efter kolumnmarkering.

Lägg till föregående datum

Nästa steg för att beräkna tid i tillstånd kräver mappning av föregående intervall (dag, vecka, månad) för varje datarad i datauppsättningen. Det är en enkel beräkning med hjälp av en beräknad kolumn. Normalt skulle du definiera den här kolumnen som du ser.

Date Previous  = 
PREVIOUSDAY ( 'View Name'[Date] )

Den här metoden har dock två huvudsakliga problem:

  • Det fungerar bara för dagliga perioder.
  • Den hanterar inte luckor i data. Om till exempel ett arbetsobjekt flyttas mellan projekt.

För att lösa dessa problem bör den beräknade kolumnen hitta föregående dag genom att skanna fältet Datum .

Om du vill lägga till kolumnen Tidigare beräknad från fliken Tabellverktyg väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen.

Date Previous =
CALCULATE (
    MAX ( 'View Name'[Date] ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] < EARLIER ( 'View Name'[Date] )
)

Den beräknade kolumnen Datum tidigare använder tre DAX-funktioner, MAX, ALLEXCEPToch , som EARLIERbeskrivs mer detaljerat senare i den här artikeln. Eftersom kolumnen beräknas körs den för varje rad i tabellen och varje gång den körs har den kontexten för den specifika raden.

Skärmbild av power BI-tabelldiagram och fliken Visualisering för Datum och Datum föregående.

Dricks

På snabbmenyn för fälten Datum och Föregående datum väljer du Datum (i stället för Datumhierarki) för att se ett enda datum för dessa fält.

Lägg till datum-Diff i dagar

Föregående datum beräknar skillnaden mellan föregående och aktuellt datum för varje rad. Med Datum-Diff i Dagar beräknar vi ett antal dagar mellan var och en av dessa perioder. För de flesta rader i en daglig ögonblicksbild är värdet lika med 1. Men för många arbetsobjekt som har luckor i datamängden är värdet större än 1.

Viktigt!

Kräver att du har lagt till kolumnen Datum tidigare beräknat i tabellen.

Det är viktigt att tänka på den första dagen i datamängden där Datum föregående är tomt. I det här exemplet ger vi den raden ett standardvärde på 1 för att hålla beräkningen konsekvent.

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

Date Diff in Days =
IF (
    ISBLANK ( 'View Name'[Date Previous] ),
    1,
    DATEDIFF (
        'View Name'[Date Previous],
        'View Name'[Date],
        DAY
    )
)

Den här beräknade kolumnen använder dax-funktionerna ISBLANK och DATEDIFF som beskrivs senare i den här artikeln.

Lägg till är sista dagen i tillstånd

I nästa steg beräknar vi om en viss rad representerar den sista dagen ett specifikt arbetsobjekt var i ett tillstånd. Den stöder standardaggregeringar i Power BI som vi lägger till i nästa avsnitt där vi lägger till kolumnen Tillståndstid i dagar .

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

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] )
))

Lägg till tillståndstid i dagar

Den tid som ett arbetsobjekt har använts i ett visst tillstånd kan nu beräknas genom att summera datum-Diff i dagar för varje arbetsobjekt. Den här beräkningen omfattar all tid som tillbringas i ett visst tillstånd även om den växlade mellan tillstånd flera gånger. Det går att utvärdera varje rad som en trend med hjälp av Datum eller den senaste informationen med hjälp av Är sista dagen i tillstånd.

Viktigt!

Kräver att du har lagt till datum-Diff i dagar och är sista dagen i state beräknade kolumner i tabellen.

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

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

Skapa staplade kolumntrenddiagram baserat på tillståndstid i dagar

För att demonstrera kolumnen Tillståndstid i dagar skapas följande staplade kolumndiagram. Det första diagrammet visar antalet arbetsobjekt i varje tillstånd över tid.

Skärmbild av det staplade stapeldiagrammet i Power BI och fliken Visualisering som visar antalet arbetsobjektsrubrik efter datum och tillstånd.

Det andra diagrammet visar trenden för genomsnittliga dagar då de aktiva arbetsobjekten är i ett visst tillstånd.

Skärmbild av det staplade stapeldiagrammet och visualiseringsfliken i Power BI som visar genomsnittliga dagar i tillstånd för arbetsobjekt efter datum.

Lägg till tillståndstid i dagar – senaste (är sista dagen i tillstånd)

När du utvärderar tid i tillstånd för varje arbetsobjekt i en tabell eller när det filtreras efter ett fält som Områdessökväg ska du inte använda kolumnen Tillståndstid i dagar i en aggregering. Aggregeringen använder värdet för varje dag som arbetsobjektet var i tillståndet. Om ett arbetsobjekt till exempel pågår på måndagen och flyttades till Slutfört på torsdag är tiden i tillståndet tre dagar, men summan av kolumnen Tillståndstid i dagar är sex dagar, 1+2+3, vilket är felaktigt.

Lägg till tillståndstid i dagar – senaste.

Lös problemet genom att använda tillståndstid i dagar och tillämpa filtret Is Last Day In State är lika med "True". Den eliminerar alla historiska data som krävs för en trend och fokuserar i stället på bara det senaste värdet för varje tillstånd.

Använd tillståndstid i dagar och använd filtret Är sista dag i tillståndet är lika med

Lägg till tillståndstid i dagar – pågår

I föregående exempel räknas tillståndstid i dagar för ett visst arbetsobjekt endast när arbetsobjektet var i det specifika tillståndet. Om målet är att ha tid i tillstånd för ett visst antal arbetsobjekt mot ett genomsnitt kontinuerligt måste du ändra beräkningen. Om vi till exempel vill spåra tillståndet "Pågår" lägger vi till kolumnen Tillståndstid i dagar – Pågår .

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

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

Kommentar

Du kan behöva ändra definitionen baserat på de arbetsflödestillstånd som används av projektet. Projektet som används i exemplen i den här artikeln använder till exempel arbetsflödestillståndet "Pågår", men agila processer, Scrum- och CMMI-processer använder vanligtvis tillstånden "Aktiv" eller "Engagerad" för att representera pågående arbete. En översikt finns i Arbetsflödestillstånd och tillståndskategorier.

Följande bild visar effekten av att överväga all tid i tillstånd för varje befintligt arbetsobjekt (visas till vänster) jämfört med endast de arbetsobjekten i ett visst tillstånd en viss dag (visas till höger).

Trendjämförelse av genomsnittlig tid i tillstånd

Statustid i dagar trend för flera tillstånd

Det går också att analysera prestanda i flera tillstånd med hjälp av mönstret "Kontinuerlig". Den här metoden fungerar dock bara med ett trenddiagram.

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

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

Kommentar

Du kan behöva ändra definitionen baserat på de arbetsflödestillstånd som används av projektet. Om ditt projekt till exempel använder "Aktiv" i stället för "Committed" eller "Proposed".

Diagrammet till vänster visar kombinerat medelvärde medan den högra sidan visar varje enskilt tillstånd.

Trendjämförelse av flera tillstånd

Hämta tillståndstid i dagar – senaste för flera tillstånd

Du använder kolumnen Tillståndstid i Dagar – Senaste beräknade kolumnen när du skapar en trend. Med ett filter för tillstånden ger kolumnen State Time in Days (Tillståndstid i dagar ) och Is Last Day in State (Sista dagen i tillstånd ) ett enkelt sätt att få den totala tiden för alla arbetsobjekt eller grupper av arbetsobjekt som spenderas i en uppsättning tillstånd.

Senaste tiden i delstater

Lägg till tillstånd föregående

Den beräknade kolumnen Datum tidigare kan också användas för att söka efter tidigare värden, till exempel tidigare tillstånd för varje arbetsobjekt.

Viktigt!

Kräver att du har lagt till kolumnen Datum tidigare beräknat i tabellen.

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

State Previous =
LOOKUPVALUE (
    'View Name'[State],
    'View Name'[Work Item Id], 'View Name'[Work Item Id],
    'View Name'[Date], 'View Name'[Date Previous]
)

Den här beräknade kolumnen använder , LOOKUPVALUEsom beskrivs senare i den här artikeln.

Den första LOOKUPVALUE parametern, 'View Name'[State], anger att värdet för [State] ska returneras.

Nästa parameter, 'View Name'[Work Item Id], 'View Name'[Work Item Id], anger att endast rader med matchande arbetsobjekt-ID som aktuell rad ska beaktas.

Och den sista parametern, 'View Name'[Date], 'View Name'[Date Previous], anger att datumet för raden som returneras måste ha ett [Datum] som matchar [föregående datum] för den aktuella raden. I en ögonblicksbild kan endast en rad uppfylla det här villkoret.

Lägg till tillstånd har ändrats

Med hjälp av kolumnen Tillstånd föregående kan vi flagga raderna för varje arbetsobjekt där en tillståndsövergång inträffade. Den beräknade kolumnen Stage Changed har två särskilda överväganden:

  • Tomma värden för *State Previous, som vi anger till det skapade datumet för arbetsobjektet
  • Skapandet av ett arbetsobjekt betraktas som en tillståndsövergång

Viktigt!

Kräver att du har lagt till kolumnen State Previous calculated i tabellen.

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

State Changed =
IF (
    ISBLANK ( 'View Name'[State Previous] ),
    'View Name'[Created Date].[Date] = 'View Name'[Date],
    'View Name'[State Previous] <> 'View Name'[State]
)

Den beräknade kolumnen är ett booleskt värde som identifierar om raden är en tillståndsövergång. Med operatorn Not Equal To fångar du korrekt rader där det tidigare tillståndet inte matchar det aktuella tillståndet, vilket innebär att jämförelsen returnerar Sant som förväntat.

Lägg till tillståndsflöde

Med beräknade kolumnerna State Previous och State Changed kan du skapa en kolumn som illustrerar tillståndsflödetför ett visst arbetsobjekt. Det är valfritt att skapa den här kolumnen i den här artikeln.

Viktigt!

Kräver att du har lagt till de beräknade kolumnerna State Previous och State Changed i tabellen.

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

State Flow = 
IF([State Changed], [State Previous], [State]) & " => " & [State]

Lägg till antal tillståndsändringar

När vi går in i de mer komplicerade måtten måste vi ha en representation av det totala antalet tillståndsändringar för att jämföra raderna i en data för ett visst arbetsobjekt. Vi får representationen genom att lägga till en beräknad kolumn för antal tillståndsändringar .

Viktigt!

Kräver att du har lagt till kolumnen State Changed calculated i tabellen.

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

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

Lägg till antal tillståndsändringar – senaste föreslagna och tillståndsomstartstid i dagar

Tillståndsomstartstid i dagar är en ganska komplex beräkning. Det första steget är att hitta den senaste gången ett arbetsobjekt var i ett föreslaget tillstånd. Lägg till kolumnen State Change Count – Senast föreslagen beräknad.

Kommentar

Du kan behöva ändra följande definitioner baserat på arbetsflödestillstånden som används av projektet. Om projektet till exempel använder "Nytt" i stället för "Föreslaget".

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

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"
)

Titta sedan längre tillbaka till det förflutna och se om det fanns några aktiva tillstånd före det föreslagna tillståndet. Slutligen summerar du alla dagar då arbetsobjektet var i aktivt tillstånd före det senast föreslagna.

På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

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

Eftersom tillståndsomstartstiden i dagar uppdateras för varje rad med data kan du antingen skapa en trend för att utvärdera omarbetning över specifika sprintar eller undersöka omarbete för enskilda arbetsobjekt med hjälp av Is Current.

Lägg till tillståndsomarbetningstid i dagar

På samma sätt som tillståndsomstartstid i dagar söker tillståndsomarbetningstiden i Dagar för första gången ett arbetsobjekt befann sig i kategorin Slutfört tillstånd. Efter den tiden räknas varje dag ett arbetsobjekt i ett annat tillstånd än Slutfört som omarbetat.

  1. Skapa kolumnen "Antal tillståndsändringar – första slutförda". Den här kolumnen spårar antalet gånger ett arbetsobjekt övergår till tillståndet Slutfört från något annat tillstånd.

    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])
       )
    )
    
  2. På fliken Modellering väljer du Ny kolumn och ersätter sedan standardtexten med följande kod och markerar bockmarkeringen .

    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
    )
    

    Kommentar

    Du kan behöva ändra definitionen ovan baserat på arbetsflödestillstånden som används av projektet. Om ditt projekt till exempel använder Klar i stället för Stängd och så vidare.

DAX-funktioner

Ytterligare information finns i det här avsnittet för DE DAX-funktioner som används för att skapa beräknade kolumner och mått som läggs till i den här artikeln. Se även DAX- och Tidsinformationsfunktioner.

Function beskrivning
ALLEXCEPT Tar bort alla kontextfilter i tabellen förutom filter som tillämpas på de angivna kolumnerna. ALLEXCEPT ('View Name'', 'View Name'[Work Item Id]) I princip minskar raderna i tabellen till endast de som delar samma arbetsobjekts-ID som den aktuella raden.
CALCULATE Den här funktionen är grunden för nästan alla exempel. Den grundläggande strukturen är ett uttryck följt av en serie filter som tillämpas på uttrycket.
COUNTROWS Den här funktionen, COUNTROWS ( 'View Name' ), räknar helt enkelt antalet rader som finns kvar när filtren har tillämpats.
DATEDIFF Returnerar antalet intervallgränser som korsas mellan två datum. DATEDIFF subtraherar datum föregående från datum för att fastställa antalet dagar mellan dem.
EARLIER Returnerar det aktuella värdet för den angivna kolumnen i ett yttre utvärderingspass för den nämnda kolumnen. Till exempel 'View Name'[Date] < EARLIER ( 'View Name'[Date] ) minskar datauppsättningen ytterligare till endast de rader som inträffat före datumet för den aktuella raden som refereras med hjälp EARLIER av funktionen. EARLIER refererar inte till tidigare datum. den definierar specifikt radkontexten för den beräknade kolumnen.
ISBLANK Kontrollerar om ett värde är tomt och returnerar TRUE eller FALSE. ISBLANK utvärderar den aktuella raden för att avgöra om Föregående datum har ett värde. Om den inte gör det anger If-instruktionen Datum-Diff i Dagar till 1.
LASTDATE Vi tillämpar filtret på LASTDATE ett uttryck, till exempel LASTDATE ( 'View Name'[Date] ), för att hitta det senaste datumet för alla rader i tabellen och eliminera de rader som inte delar samma datum. När ögonblicksbildstabellen genereras av en analysvy väljer det här filtret effektivt den sista dagen i den valda perioden.
LOOKUPVALUE Returnerar värdet i result_columnName för raden som uppfyller alla villkor som anges av search_columnName och search_value.
MAX Returnerar det största numeriska värdet i en kolumn eller mellan två skalära uttryck. Vi tillämpar MAX ( 'View Name'[Date] ), för att fastställa det senaste datumet när alla filter har tillämpats.