Freigeben über


Hinzufügen eines Time-in-State-Measures zu Ihrem Power BI-Bericht

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

Die Zeit, die ein Arbeitselement in einem bestimmten Workflowzustand oder einer Reihe von Zuständen verbringt, ist ein wichtiger Aspekt für das Verständnis der Effizienz. Die Widgets "Zykluszeit" und "Vorlaufzeitanalyse " stellen einige Measures für die Zustandszeit bereit. Diese Widgets verfügen jedoch möglicherweise nicht über die gewünschte Detailebene.

Dieser Artikel enthält Rezepte mithilfe von DAX (Data Analysis Expressions), um die von Arbeitsaufgaben in einer Kombination von Zuständen aufgewendete Zeit auszuwerten. Insbesondere erfahren Sie, wie Sie Die folgenden Measure- und berechneten Spalten zu Ihren Power BI-Berichten hinzufügen und zum Generieren verschiedener Trenddiagramme verwenden. Alle Felder sind berechnete Spalten mit Ausnahme der ersten aufgeführten.

Anzahl BESCHREIBUNG
Anzahl der Arbeitselemente (Measure) Berechnet die Anzahl unterschiedlicher Arbeitselemente basierend auf dem Letzten Tageintrag für das Arbeitselement.
Statussortierreihenfolge Fügt eine Spalte hinzu, die zum Sortieren von Workflowzuständen basierend auf der Zustandskategoriesequenz verwendet werden soll.
Datum Zurück Fügt eine Spalte hinzu, die das vorherige Datum basierend auf der Spalte Date berechnet.
Datumsvergleich in Tagen Fügt eine Spalte hinzu, die die Anzahl der Tage zwischen den Spalten Date und Date Previous berechnet.
Ist letzter Tag im Bundesstaat Fügt eine Spalte hinzu, die bestimmt, ob der Date-Wert der letzte Tag ist, an dem sich das Arbeitselement in einem Zustand befand.
Zustandszeit in Tagen Fügt eine Spalte hinzu, die die Anzahl der Tage berechnet, die das Arbeitselement in den einzelnen Bundesstaaten verbracht hat.
Status Zurück Fügt eine Spalte hinzu, die den vorherigen Zustand für jede Zeile in der Datentabelle identifiziert.
Status geändert Fügt eine Spalte hinzu, die das Datum bestimmt, an dem ein Arbeitselement von einem Zustand in einen anderen wechselt.
Zustandsfluss Fügt eine Spalte hinzu, die den Zustandsfluss veranschaulicht, während ein Arbeitselement von einem Zustand in einen anderen übergibt.
Anzahl der Statusänderungen Fügt eine Spalte hinzu, die berechnet, wie oft ein Arbeitselement von einem Zustand in einen anderen wechselt.
Anzahl der Statusänderungen – First Completed Fügt eine Spalte hinzu, die bestimmt, wie oft ein Arbeitselement zum status "Abgeschlossen" wechselt. Mit anderen Worten, wenn es von einem anderen Zustand in den Status "Abgeschlossen" wechselt.
Anzahl der Zustandsänderungen – Zuletzt vorgeschlagen Fügt eine Spalte hinzu, die bestimmt, ob sich ein Arbeitselement zuvor nach dem Übergang in einen späteren Zustand im Status "Vorgeschlagen" befand.
Zustandsneustartzeit in Tagen Fügt eine Spalte hinzu, die die Tage berechnet, die ein Arbeitselement im Neustartzustand verbracht hat.
Zustand Nacharbeitszeit in Tagen Fügt eine Spalte hinzu, die die Tage berechnet, die ein Arbeitselement in einem anderen Zustand als Abgeschlossen verbringt.

Wichtig

  • Wenn Sie eine berechnete Spalte oder ein Measure gemäß den in diesem Artikel gezeigten Beispielen hinzufügen, ersetzen Sie Ansichtsname durch den Tabellennamen für die Analyseansicht oder Die Datentabelle. Ersetzen Sie beispielsweise Ansichtsname durch Aktive Fehler.
    Screenshot der Registerkarte
  • Analysen unterstützen keine tagesinternen Revisionen. Diese Beispiele haben die größte Genauigkeit, wenn ein tägliches Intervall verwendet wird, wenn auf eine Analyseansicht verwiesen wird.
  • Alle tages- oder periodeninternen (wöchentlichen/monatlichen) Überarbeitungen werden von den Berechnungen ignoriert. Dies kann zu unerwarteten Ergebnissen für bestimmte Szenarien führen, z. B. bei einem Arbeitselement, das keine Zeit "In Bearbeitung" anzeigt, wenn ein Arbeitselement für weniger als einen Tag "in Bearbeitung" ist.
  • Power BI-Standardaggregationen werden nach Möglichkeit verwendet, anstatt Measures zu erstellen.
  • Einige Berechnungen enthalten +0 , um sicherzustellen, dass für jede Zeile ein numerischer Wert anstelle von BLANK enthalten ist.
  • Möglicherweise müssen Sie einige der berechneten Spaltendefinitionen basierend auf den workflowzuständen, die von Ihrem Projekt verwendet werden, überarbeiten. Beispiel: Das Projekt verwendet "Neu", " Aktiv" und " Geschlossen " anstelle von "Vorgeschlagen", " In Bearbeitung" und " Abgeschlossen".
  • Die in diesem Artikel genannte Spalte "Datum " ist keine systemeigene Spalte in Azure DevOps. Es ist eine abgeleitete Spalte, die in PowerBI erstellt wurde, um den Bericht "Zeit im Zustand" zu erleichtern. Sie können diese Spalte mit den vorhandenen datumsbezogenen Spalten erstellen, z. B. "Geändertes Datum" oder "Datum geändert am Status".

Voraussetzungen

Hinweis

Um alle in diesem Artikel beschriebenen Time-in-State-Measures auszuführen, müssen Sie die folgenden Felder in Ihre Analyseansichten, Power Query oder OData-Abfrage einschließen: Erstellungsdatum und Statuskategorie zusätzlich zu den Standardfeldern: Bereichspfad, Zugewiesen an, Iterationspfad, Status, Titel, Arbeitselement-ID und Arbeitselementtyp.

Erwägen Sie außerdem die Verwendung einer Analyseansicht basierend auf einer täglichen Granularität. Beispiele in diesem Artikel basieren auf der Ansicht Active Bugs Analytics, die in Erstellen eines aktiven Fehlerberichts in Power BI basierend auf einer benutzerdefinierten Analyseansicht definiert ist, mit der Ausnahme, dass 60 Tage Verlauf und Tägliche Granularität ausgewählt sind. Ermitteln Sie auch, ob Sie abgeschlossene oder geschlossene Arbeitselemente überprüfen möchten.

Hinzufügen eines Measures für die Anzahl von Arbeitselementen

Um die schnelle Generierung von Berichten zu vereinfachen, haben wir Analyseansichten so konzipiert, dass sie mit Standardaggregationen in Power BI funktionieren. Um den Unterschied zwischen einer Standardaggregation und einem Measure zu veranschaulichen, beginnen wir mit einem einfachen Measure für die Anzahl von Arbeitselementen.

  1. Laden Sie Ihre Analyseansicht in Power BI Desktop. Weitere Informationen finden Sie unter Verbinden mit Power BI-Datenconnector, Herstellen einer Verbindung mit einer Analyseansicht.

  2. Wählen Sie die Datentabelle aus, und wählen Sie dann im Menüband auf der Registerkarte Tabellentools im Abschnitt Berechnungen die Option Neues Measure aus.

    Screenshot der Registerkarte

  3. Ersetzen Sie den Standardtext durch den folgenden Code, und aktivieren Sie dann das Häkchen.

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

    Das Measure Anzahl der Arbeitselemente verwendet die CALCULATEDAX-Funktionen , COUNTROWSund LASTDATE die weiter unten in diesem Artikel ausführlicher beschrieben werden.

    Hinweis

    Denken Sie daran, Ansichtsname durch den Tabellennamen für die Analyseansicht zu ersetzen. Hier ersetzen wir beispielsweise Ansichtsname durch Aktive Fehler.

    Screenshot der Registerkarte

Wie unterscheidet sich ein Measure von einer berechneten Spalte?

Ein Measure wertet immer die gesamte Tabelle aus, wobei eine berechnete Spalte spezifisch für eine einzelne Zeile ist. Weitere Informationen finden Sie unter Berechnete Spalten und Measures in DAX.

Vergleichen Sie das Measure Anzahl der Arbeitselemente mit der Standardanzahlaggregation basierend auf der Arbeitselement-ID. Die folgende Abbildung wird erstellt, indem der ersten Karte das Visual Card und das Measure Für die Anzahl der Arbeitselemente und die Eigenschaft Arbeitselement-ID zur zweiten Karte hinzugefügt werden.

Screenshot der Power BI-Berichtsseite mit zwei Karten mit dem Measure

Um die richtige Anzahl mithilfe einer Standardaggregation zu erhalten, wenden Sie den Filter "Ist Aktuell " gleich "True" an. Dieses Muster zum Anwenden von Filtern auf eine Standardaggregation ist die Grundlage für viele der in diesem Artikel bereitgestellten Beispiele.

Screenshot der Power BI-Berichtsseite, gefilterte Anzahl der Arbeitsaufgaben-ID.

Statussortierreihenfolge hinzufügen

Standardmäßig zeigt Power BI in einer Visualisierung alphabetisch sortierte Zustände an. Es kann irreführend sein, wenn Sie die Zeit im Zustand visualisieren möchten und Der Vorschlag nach In Bearbeitung angezeigt wird. Die folgenden Schritte helfen, dieses Problem zu beheben.

  1. Überprüfen Sie, ob das Feld Statuskategorie in der Analyseansicht enthalten ist. Dieses Feld ist in allen freigegebenen Standardansichten enthalten.

  2. Wählen Sie die Datentabelle aus, und wählen Sie dann im Menüband auf der Registerkarte Tabellentools im Abschnitt Berechnungen die Option Neue Spalte aus.

    Screenshot der Registerkarte

  3. Ersetzen Sie den Standardtext durch den folgenden Code, und aktivieren Sie dann das Häkchen.

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

    Sehen Sie sich folgendes Beispiel an:

    Screenshot der Registerkarte

    Hinweis

    Möglicherweise müssen Sie die Definition überarbeiten, wenn Sie mehr Granularität benötigen, als Die Statuskategorie bietet. Zustandskategorie ermöglicht die korrekte Sortierung aller Arbeitselementtypen, unabhängig von Statusanpassungen .

  4. Öffnen Sie die Datenansicht, und wählen Sie die Spalte Status aus.

  5. Wählen Sie auf der Registerkarte Spaltentoolsdie Option Nach Spalte sortieren aus, und wählen Sie dann das Feld Zustandssortierreihenfolge aus.

    Screenshot der Registerkarte

Datum "Vorheriges Hinzufügen"

Der nächste Schritt zum Berechnen der Zustandszeit erfordert die Zuordnung des vorherigen Intervalls (Tag, Woche, Monat) für jede Datenzeile im Dataset. Dies ist eine einfache Berechnung mit einer berechneten Spalte. In der Regel würden Sie diese Spalte wie gezeigt definieren.

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

Dieser Ansatz hat jedoch zwei Hauptprobleme:

  • Es funktioniert nur für tägliche Zeiträume.
  • Es behandelt keine Lücken in den Daten. Beispielsweise, wenn ein Arbeitselement zwischen Projekten verschoben wird.

Um diese Probleme zu beheben, sollte die berechnete Spalte den vorherigen Tag finden, indem das Feld Datum gescannt wird.

Um die berechnete Spalte Datum Vorheriger hinzuzufügen, wählen Sie auf der Registerkarte Tabellentoolsdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Die berechnete Spalte Date Previous verwendet die drei DAX-Funktionen MAX, ALLEXCEPTund EARLIER, die weiter unten in diesem Artikel ausführlicher beschrieben werden. Da die Spalte berechnet wird, wird sie für jede Zeile in der Tabelle ausgeführt, und jedes Mal, wenn sie ausgeführt wird, weist sie den Kontext dieser bestimmten Zeile auf.

Screenshot des Power BI-Tabellendiagramms und der Registerkarte

Tipp

Wählen Sie im Kontextmenü für die Felder Datum und Vorheriges Datumdie Option Datum (anstelle der Datumshierarchie) aus, um ein einzelnes Datum für diese Felder anzuzeigen.

Hinzufügen von Datumsunterschieden in Tagen

Date Previous berechnet die Differenz zwischen dem vorherigen und dem aktuellen Datum für jede Zeile. Bei Datumsunterschieden in Tagen berechnen wir eine Anzahl von Tagen zwischen jedem dieser Zeiträume. Für die meisten Zeilen in einer täglichen Momentaufnahme entspricht der Wert 1. Für viele Arbeitselemente, die Lücken im Dataset aufweisen, ist der Wert jedoch größer als 1.

Wichtig

Erfordert, dass Sie der Tabelle die berechnete Spalte Date Previous hinzugefügt haben.

Es ist wichtig, den ersten Tag des Datasets zu berücksichtigen, an dem Datum vorheriger Wert leer ist. In diesem Beispiel geben wir dieser Zeile den Standardwert 1, um die Berechnung konsistent zu halten.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Für diese berechnete Spalte werden die DAX-Funktionen und DATEDIFF verwendet, die ISBLANKweiter unten in diesem Artikel beschrieben werden.

Add Is Last Day in State

In diesem nächsten Schritt wird berechnet, ob eine angegebene Zeile den letzten Tag darstellt, an dem sich ein bestimmtes Arbeitselement in einem Zustand befand. Es unterstützt Standardaggregationen in Power BI, die wir im nächsten Abschnitt hinzufügen, in dem wir die Spalte Zustandszeit in Tagen hinzufügen.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Hinzufügen der Zustandszeit in Tagen

Die Zeit, die ein Arbeitselement in einem bestimmten Zustand verbracht hat, kann jetzt berechnet werden, indem der Datumsunterschied in Tagen für jedes Arbeitselement summiert wird. Diese Berechnung umfasst alle in einem bestimmten Zustand aufgewendeten Zeit, auch wenn sie mehrmals zwischen Zuständen gewechselt wurde. Es ist möglich, jede Zeile mit Datum oder den neuesten Informationen als Trend zu bewerten, indem Sie Den letzten Tag im Zustand verwenden.

Wichtig

Erfordert, dass Sie der Tabelle die berechneten Spalten Date Diff in Days und Is Last Day in State hinzugefügt haben.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Erstellen von Trenddiagrammen für gestapelte Spalten basierend auf der Zustandszeit in Tagen

Um die Spalte Zustandszeit in Tagen zu veranschaulichen, werden die folgenden gestapelten Säulendiagramme erstellt. Das erste Diagramm zeigt die Anzahl der Arbeitselemente in jedem Zustand im Zeitverlauf an.

Screenshot des gestapelten Power BI-Säulendiagramms und der Registerkarte

Das zweite Diagramm veranschaulicht den Trend der durchschnittlichen Tage, an denen sich die aktiven Arbeitselemente in einem bestimmten Zustand befinden.

Screenshot des gestapelten Power BI-Säulendiagramms und der Registerkarte

Hinzufügen der Zustandszeit in Tagen – Latest (Ist letzter Tag im Zustand)

Verwenden Sie beim Auswerten des Zustands für jedes Arbeitselement in einer Tabelle oder beim Filtern nach einem Feld wie Bereichspfad nicht die Spalte Zustandszeit in Tagen in einer Aggregation. Die Aggregation verwendet den Wert für jeden Tag, an dem sich das Arbeitselement im Zustand befand. Wenn z. B. eine Arbeitsaufgabe am Montag in Bearbeitung war und am Donnerstag in "Abgeschlossen" verschoben wurde, beträgt der Zeit-in-Zustand drei Tage, die Summe der Spalte "State Time in Days" ist jedoch sechs Tage, 1+2+3was falsch ist.

Fügen Sie State Time in Days – Latest (Zustandszeit in Tagen – Neueste) hinzu.

Um dieses Problem zu beheben, verwenden Sie "State Time in Days ", und wenden Sie den Filter "Letzter Tag im Zustand " auf "True" an. Es eliminiert alle verlaufsbezogenen Daten, die für einen Trend erforderlich sind, und konzentriert sich stattdessen nur auf den neuesten Wert für jeden Zustand.

Verwenden Sie State Time in Days, und wenden Sie den Filter Ist letzter Tag im Zustand gleich

Hinzufügen der Zustandszeit in Tagen – In Bearbeitung

In den vorherigen Beispielen wird die Statuszeit in Tagen für eine bestimmte Arbeitsaufgabe nur gezählt, wenn sich die Arbeitsaufgabe in diesem bestimmten Zustand befand. Wenn Ihr Ziel darin besteht, die Anzahl der Zeit im Zustand eines bestimmten Arbeitselements kontinuierlich in Richtung eines Durchschnitts zu erreichen, müssen Sie die Berechnung ändern. Wenn wir beispielsweise den Status "In Bearbeitung" nachverfolgen möchten, fügen wir die berechnete Spalte State Time in Days - In Progress hinzu.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Hinweis

Möglicherweise müssen Sie die Definition basierend auf den Workflowzuständen, die von Ihrem Projekt verwendet werden, überarbeiten. Das in den Beispielen in diesem Artikel verwendete Projekt verwendet beispielsweise den Workflowstatus "In Bearbeitung". Agile-, Scrum- und CMMI-Prozesse verwenden jedoch in der Regel die Zustände "Aktiv" oder "Committet", um die laufende Arbeit darzustellen. Eine Übersicht finden Sie unter Workflowstatus und Statuskategorien.

Die folgende Abbildung zeigt den Effekt der Berücksichtigung aller Zeit im Zustand für jedes vorhandene Arbeitselement (links dargestellt) im Vergleich zu den Arbeitselementen in einem bestimmten Zustand an einem bestimmten Tag (rechts dargestellt).

Trendvergleich der durchschnittlichen Zeit im Zustand

Zustandszeit in Tagen Trend mehrerer Zustände

Die Analyse der Leistung über mehrere Zustände hinweg ist auch mithilfe des Musters "Fortlaufend" möglich. Dieser Ansatz funktioniert jedoch nur mit einem Trenddiagramm.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Hinweis

Möglicherweise müssen Sie die Definition basierend auf den Workflowzuständen, die von Ihrem Projekt verwendet werden, überarbeiten. Wenn Ihr Projekt beispielsweise "Active" anstelle von "Committed" oder "Proposed" verwendet.

Das Diagramm auf der linken Seite zeigt den kombinierten Durchschnitt, während auf der rechten Seite jeder einzelne Zustand angezeigt wird.

Trendvergleich mehrerer Zustände

Abrufen der Zustandszeit in Tagen – Neueste für mehrere Zustände

Beim Erstellen eines Trends verwenden Sie die berechnete Spalte State Time in Days – Latest . Mit einem Filter nach den Zuständen bietet die Spalte "State Time in Days " und "Is Last Day in State " eine einfache Möglichkeit zum Abrufen der Gesamtzeit aller Arbeitsaufgaben, die in einer Reihe von Zuständen verbracht wurden.

Neueste Uhrzeit in Bundesstaaten

Hinzufügen des Zustands "Zurück"

Die berechnete Spalte Date Previous kann auch verwendet werden, um vergangene Werte wie den vorherigen Zustand für jedes Arbeitselement nachzuschlagen.

Wichtig

Erfordert, dass Sie der Tabelle die berechnete Spalte Date Previous hinzugefügt haben.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Diese berechnete Spalte verwendet die , die LOOKUPVALUEweiter unten in diesem Artikel beschrieben wird.

Der erste LOOKUPVALUE Parameter , gibt an, 'View Name'[State]um den Wert von [State] zurückzugeben.

Der nächste Parameter gibt an, 'View Name'[Work Item Id], 'View Name'[Work Item Id]dass nur Zeilen mit einer übereinstimmenden Arbeitselement-ID als aktuelle Zeile berücksichtigt werden sollen.

Der letzte Parameter gibt an, 'View Name'[Date], 'View Name'[Date Previous]dass das Datum der zurückgegebenen Zeile ein [Datum] aufweisen muss, das dem [Vorherigen Datum] der aktuellen Zeile entspricht. In einer Momentaufnahme kann nur eine Zeile dieses Kriterium erfüllen.

Status geändert hinzufügen

Mithilfe der Spalte State Previous (Zustand zurück) können wir die Zeilen für jedes Arbeitselement kennzeichnen, in dem ein Zustandsübergang stattgefunden hat. Die berechnete Spalte Stage Changed weist zwei besondere Aspekte auf:

  • Leere Werte von *State Previous, die wir auf das Erstellungsdatum der Arbeitsaufgabe festlegen
  • Die Erstellung eines Arbeitselements wird als Zustandsübergang betrachtet.

Wichtig

Erfordert, dass Sie der Tabelle die berechnete Spalte State Previous hinzugefügt haben.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Die berechnete Spalte ist ein boolescher Wert, der angibt, ob die Zeile ein Zustandsübergang ist. Mithilfe des Not Equal To -Operators können Sie Zeilen ordnungsgemäß abfangen, bei denen der vorherige Zustand nicht mit dem aktuellen Zustand übereinstimmt. Das bedeutet, dass der Vergleich wie erwartet True zurückgibt.

Zustandsfluss hinzufügen

Mit den berechneten Spalten State Previous und State Changed können Sie eine Spalte erstellen, die den Zustandsfluss für ein bestimmtes Arbeitselement veranschaulicht. Das Erstellen dieser Spalte ist für die Zwecke dieses Artikels optional.

Wichtig

Erfordert, dass Sie der Tabelle die berechneten Spalten State Previous und State Changed hinzugefügt haben.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Anzahl von Zustandsänderungen hinzufügen

Wenn wir mit den komplizierteren Measures fortfahren, benötigen wir eine Darstellung der Gesamtzahl der Zustandsänderungen, um die Zeilen einer Daten für ein bestimmtes Arbeitselement zu vergleichen. Die Darstellung wird durch Hinzufügen einer berechneten Spalte State Change Count abgerufen.

Wichtig

Erfordert, dass Sie der Tabelle die berechnete Spalte State Changed hinzugefügt haben.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Hinzufügen der Anzahl von Zustandsänderungen – Letzte vorgeschlagene Und Zustandsneustartzeit in Tagen

Die Zustandsneustartzeit in Tagen ist eine ziemlich komplexe Berechnung. Der erste Schritt besteht darin, den zeitpunkt zu ermitteln, zu dem sich ein Arbeitselement zuletzt in einem vorgeschlagenen Zustand befunden hat. Fügen Sie die berechnete Spalte State Change Count – Last Proposed (State Change Count – Last Proposed) hinzu.

Hinweis

Möglicherweise müssen Sie die folgenden Definitionen basierend auf den von Ihrem Projekt verwendeten Workflowzuständen überarbeiten. Wenn Ihr Projekt beispielsweise "New" anstelle von "Proposed" verwendet.

Wählen Sie auf der Registerkarte "Modellieren " die Option "Neue Spalte " aus, und ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Schauen Sie dann weiter zurück in die Vergangenheit und sehen Sie, ob es vor diesem vorgeschlagenen Zustand einige aktive Zustände gab. Summieren Sie schließlich alle Tage, an dem sich das Arbeitselement vor dem letzten Vorschlag im aktiven Zustand befand.

Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

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

Da die Zustandsneustartzeit in Tagen für jede Datenzeile aktualisiert wird, können Sie entweder einen Trend erstellen, um die Nacharbeit über bestimmte Sprints hinweg auszuwerten, oder die Nacharbeit für einzelne Arbeitselemente mithilfe von Is Current untersuchen.

Hinzufügen der Zustandsreworkzeit in Tagen

Ähnlich wie die Zustandsneustartzeit in Tagen sucht die Statusumarbeitszeit in Tagen nach dem ersten Mal, wenn sich eine Arbeitsaufgabe in der Kategorie "Abgeschlossen" befand. Danach zählt jeder Tag, den ein Arbeitselement in einem anderen Zustand als Abgeschlossen verbringt, als Nacharbeit.

  1. Erstellen Sie die Spalte "State Change Count - First Completed". Diese Spalte verfolgt die Anzahl der Übergänge eines Arbeitselements in den Status "Abgeschlossen" aus einem anderen Zustand.

    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. Wählen Sie auf der Registerkarte Modellierungdie Option Neue Spalte aus, ersetzen Sie dann den Standardtext durch den folgenden Code, und aktivieren Sie das Häkchen.

    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
    )
    

    Hinweis

    Möglicherweise müssen Sie die vorherige Definition basierend auf den workflowzuständen, die von Ihrem Projekt verwendet werden, überarbeiten. Wenn Ihr Projekt z. B. "Erledigt" anstelle von "Geschlossen" verwendet, usw.

DAX-Funktionen

Weitere Informationen finden Sie in diesem Abschnitt für die DAX-Funktionen, die zum Erstellen der berechneten Spalten und des Measures verwendet werden, die in diesem Artikel hinzugefügt wurden. Siehe auch DAX, Zeitintelligenzfunktionen.

Funktion Beschreibung
ALLEXCEPT Entfernt alle Kontextfilter in der Tabelle mit Ausnahme von Filtern, die auf die angegebenen Spalten angewendet wurden. Reduziert im Wesentlichen die Zeilen in der Tabelle auf die Zeilen, ALLEXCEPT ('View Name'', 'View Name'[Work Item Id]) die dieselbe Arbeitselement-ID wie die aktuelle Zeile verwenden.
CALCULATE Diese Funktion ist die Grundlage für fast alle Beispiele. Die Basisstruktur ist ein Ausdruck, gefolgt von einer Reihe von Filtern, die auf den Ausdruck angewendet werden.
COUNTROWS Diese Funktion COUNTROWS ( 'View Name' )zählt einfach die Anzahl der Zeilen, die nach dem Anwenden der Filter verbleiben.
DATEDIFF Gibt die Anzahl der Intervallgrenzen zurück, die zwischen zwei Daten überschritten wurden DATEDIFF subtrahiert Date Previous von Date , um die Anzahl der Tage zwischen ihnen zu bestimmen.
EARLIER Gibt den aktuellen Wert der angegebenen Spalte in einem äußeren Auswertungsdurchlauf der angegebenen Spalte zurück. Reduziert z. B 'View Name'[Date] < EARLIER ( 'View Name'[Date] ) . den Datensatz weiter auf die Zeilen, die vor dem Datum für die aktuelle Zeile aufgetreten sind, auf die mithilfe der EARLIER Funktion verwiesen wird. EARLIER bezieht sich nicht auf vorherige Datumsangaben; sie definiert speziell den Zeilenkontext der berechneten Spalte.
ISBLANK Überprüft, ob ein Wert leer ist, und gibt TRUE oder FALSE zurück. ISBLANK wertet die aktuelle Zeile aus, um zu bestimmen, ob Date Previous einen Wert aufweist. Wenn dies nicht der Fall ist, legt die If-Anweisung Date Diff in Days auf 1 fest.
LASTDATE Wir wenden den LASTDATE Filter auf einen Ausdruck an, z. B LASTDATE ( 'View Name'[Date] ). , um das neueste Datum in allen Zeilen in der Tabelle zu finden und die Zeilen zu entfernen, die nicht dasselbe Datum gemeinsam haben. Da die Momentaufnahmetabelle von einer Analyseansicht generiert wird, wählt dieser Filter effektiv den letzten Tag des ausgewählten Zeitraums aus.
LOOKUPVALUE Gibt den Wert in result_columnName für die Zeile zurück, die alle von search_columnName und search_value angegebenen Kriterien erfüllt.
MAX Gibt den größten numerischen Wert in einer Spalte oder zwischen zwei Skalarausdrücken zurück. Wir wenden MAX ( 'View Name'[Date] )an, um das neueste Datum zu ermitteln, nachdem alle Filter angewendet wurden.