Dodawanie miary czasu w stanie do raportu usługi Power BI

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

Czas spędzony przez element roboczy w określonym stanie lub serii stanów przepływu pracy jest ważnym aspektem zrozumienia wydajności. Widżety Analizy czasu cyklu i czasu realizacji udostępniają pewne miary czasu w stanie. Jednak te widżety mogą nie mieć żądanego poziomu szczegółów.

Ten artykuł zawiera przepisy dotyczące używania wyrażeń analizy danych (DAX) do oceny czasu spędzonego przez elementy robocze w kombinacji stanów. W szczególności dowiesz się, jak dodać następującą miarę i kolumny obliczeniowe do raportów usługi Power BI i użyć ich do generowania różnych wykresów trendów. Wszystkie pola są kolumnami obliczeniowymi, z wyjątkiem pierwszej na liście.

Count opis
Liczba elementów roboczych (miara) Oblicza liczbę odrębnych elementów roboczych na podstawie ostatniego wpisu dla elementu roboczego
Kolejność sortowania stanu Dodaje kolumnę do użycia do sortowania stanów przepływu pracy na podstawie sekwencji kategorii stanu
Data poprzednia Dodaje kolumnę, która oblicza poprzednią datę na podstawie kolumny Date
Różnice dat w dniach Dodaje kolumnę, która oblicza liczbę dni między kolumnami Date i Date Previous
Jest ostatni dzień w stanie Dodaje kolumnę określającą, czy wartość Date jest ostatnim dniem, w ramach którego element roboczy znajdował się w stanie
Czas stanu w dniach Dodaje kolumnę, która oblicza liczbę dni spędzonych w elemencie roboczym w każdym stanie
Poprzedni stan Dodaje kolumnę, która identyfikuje poprzedni stan dla każdego wiersza w tabeli danych
Stan został zmieniony Dodaje kolumnę określającą datę przejścia elementu roboczego z jednego stanu do innego
Przepływ stanu Dodaje kolumnę, która ilustruje przepływ stanu jako element roboczy przechodzi z jednego stanu do innego
Liczba zmian stanu Dodaje kolumnę, która oblicza liczbę przypadków przejścia elementu roboczego z jednego stanu do innego
Liczba zmian stanu — ukończono po raz pierwszy Dodaje kolumnę, która określa, ile razy element roboczy przechodzi do stanu Ukończono po raz pierwszy. Innymi słowy, gdy przechodzi z dowolnego innego stanu do stanu Ukończono.
Liczba zmian stanu — ostatnia propozycja Dodaje kolumnę, która określa, czy element roboczy był w stanie Proponowany wcześniej po przejściu do późniejszego stanu
Czas ponownego uruchomienia stanu w dniach Dodaje kolumnę, która oblicza dni spędzonych w elemencie roboczym w stanie ponownego uruchomienia
Czas ponownej pracy stanu w dniach Dodaje kolumnę, która oblicza dni, w których element roboczy wydaje się w stanie innym niż Ukończono

Ważne

  • Podczas dodawania kolumny obliczeniowej lub miary zgodnie z przykładami przedstawionymi w tym artykule zastąp ciąg Nazwa widoku tabeli nazwą tabeli widoku analizy lub tabeli danych. Na przykład zastąp ciąg Nazwa widoku aktywnymi usterkami.
    Zrzut ekranu przedstawiający kartę Narzędzia tabel usługi Power BI z nazwą tabeli danych.
  • Analiza nie obsługuje poprawek w ciągu dnia. Te przykłady mają największą precyzję w przypadku korzystania z interwału dziennego podczas odwoływania się do widoku analizy.
  • Wszystkie wersje wewnątrz dnia lub wewnątrz okresu (co tydzień/miesiąc) są ignorowane przez obliczenia. Może to spowodować nieoczekiwane wyniki dla określonych scenariuszy, takich jak element roboczy bez czasu "W toku", gdy element roboczy ma wartość "W toku" przez mniej niż dzień.
  • Domyślne agregacje usługi Power BI są używane zawsze, gdy jest to możliwe, zamiast tworzyć miary.
  • Niektóre obliczenia obejmują +0 , aby upewnić się, że wartość liczbowa jest uwzględniona dla każdego wiersza zamiast pustego. Może być konieczne skorygowanie niektórych definicji kolumn obliczeniowych na podstawie stanów przepływu pracy używanych przez projekt. Jeśli na przykład projekt używa polecenia Nowy, Aktywny i Zamknięty zamiast proponowanych, W toku i Ukończono.

Wymagania wstępne

  • Aby wyświetlić dane analizy i wykonać zapytanie dotyczące usługi, musisz być członkiem projektu z dostępem podstawowym lub większym. Domyślnie wszyscy członkowie projektu otrzymują uprawnienia do wykonywania zapytań w usłudze Analytics i definiowania widoków analizy.
  • Aby dowiedzieć się więcej o innych wymaganiach wstępnych dotyczących włączania usługi i funkcji oraz ogólnych działań śledzenia danych, zobacz Uprawnienia i wymagania wstępne dotyczące dostępu do analizy.

Uwaga

Aby wykonać wszystkie miary czasu w stanie opisane w tym artykule, pamiętaj, aby uwzględnić następujące pola w widokach analizy, dodatku Power Query lub zapytaniu OData: Utworzono datę i kategorię stanu oprócz pól domyślnych: Ścieżka obszaru, Przypisana do, Ścieżka iteracji, Stan, Tytuł, Identyfikator elementu roboczego i Typ elementu roboczego.

Należy również rozważyć użycie widoku analizy na podstawie dziennego stopnia szczegółowości. Przykłady w tym artykule są oparte na widoku Analizy aktywnych usterek zdefiniowanym w artykule Tworzenie aktywnego raportu usterek w usłudze Power BI na podstawie niestandardowego widoku analizy, z wyjątkiem wybranym przez 60 dni czasu historii i dziennego stopnia szczegółowości. Określ również, czy chcesz przejrzeć ukończone lub zamknięte elementy robocze.

Dodawanie miary Liczba elementów roboczych

Aby uprościć szybkie generowanie raportów, zaprojektowaliśmy widoki analizy do pracy z domyślnymi agregacjami w usłudze Power BI. Aby zilustrować różnicę między domyślną agregacją a miarą, zaczynamy od prostej miary liczby elementów roboczych.

  1. Załaduj widok analizy do programu Power BI Desktop. Aby uzyskać szczegółowe informacje, zobacz Połączenie z usługą Power BI Data Połączenie or, Połączenie do widoku analizy.

  2. Wybierz tabelę danych, a następnie na karcie Narzędzia tabel w sekcji Obliczenia na wstążce wybierz pozycję Nowa miara.

    Zrzut ekranu przedstawiający kartę Narzędzia tabel usługi Power BI z nową miarą.

  3. Zastąp tekst domyślny poniższym kodem, a następnie wybierz znacznik wyboru.

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

    Miara Liczba elementów roboczych używa CALCULATEfunkcji , COUNTROWSi LASTDATE języka DAX, które zostały szczegółowo opisane w dalszej części tego artykułu.

    Uwaga

    Pamiętaj, aby zastąpić nazwę widoku nazwą tabeli widoku Analiza. Na przykład w tym miejscu zastąp ciąg Nazwa widoku aktywnymi usterkami.

    Zrzut ekranu przedstawiający kartę Narzędzia miary usługi Power BI, składnia liczba elementów roboczych.

Jak miara różni się od kolumny obliczeniowej

Miara zawsze oblicza całą tabelę, w której kolumna obliczeniowa jest specyficzna dla jednego wiersza. Aby uzyskać więcej informacji, zobacz Calculated Columns and Measures in DAX (Kolumny obliczeniowe i miary w języku DAX).

Porównaj miarę Liczba elementów roboczych z agregacją liczby domyślnych na podstawie identyfikatora elementu roboczego. Poniższy obraz jest tworzony przez dodanie wizualizacji Karta i miary Liczba elementów roboczych do pierwszej karty oraz właściwości Identyfikator elementu roboczego do drugiej karty.

Zrzut ekranu przedstawiający stronę raportu usługi Power BI z dwiema kartami przedstawiającymi miarę Liczba elementów roboczych i właściwość Identyfikator elementu roboczego.

Aby uzyskać poprawną liczbę przy użyciu agregacji domyślnej, zastosuj filtr Jest bieżący jest równy "True". Ten wzorzec stosowania filtrów do domyślnej agregacji jest podstawą dla wielu przykładów podanych w tym artykule.

Zrzut ekranu przedstawiający stronę raportu usługi Power BI, filtrowaną liczbę identyfikatorów elementów roboczych.

Dodaj kolejność sortowania stanu

Domyślnie usługa Power BI wyświetla stany posortowane alfabetycznie w wizualizacji. Może to być mylące, gdy chcesz wizualizować czas w stanie i Proponowane jest wyświetlane po postępie. Poniższe kroki ułatwiają rozwiązanie tego problemu.

  1. Sprawdź, czy pole Kategoria stanu znajduje się w widoku Analiza. To pole jest uwzględniane we wszystkich domyślnych widokach udostępnionych.

  2. Wybierz tabelę danych, a następnie na karcie Narzędzia tabel sekcja Obliczenia na wstążce wybierz pozycję Nowa kolumna.

    Zrzut ekranu przedstawiający kartę Narzędzia tabel usługi Power BI z kolumną Nowy.

  3. Zastąp tekst domyślny poniższym kodem, a następnie wybierz znacznik wyboru.

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

    Zobacz poniższy przykład:

    Zrzut ekranu przedstawiający kartę Narzędzia tabel usługi Power BI, wpis kategorii stanu.

    Uwaga

    Może być konieczne skorygowanie definicji, jeśli potrzebujesz większej szczegółowości niż zapewnia kategoria stanu. Kategoria stanu zapewnia poprawne sortowanie we wszystkich typach elementów roboczych niezależnie od wszelkich dostosowań stanu .

  4. Otwórz widok Dane i wybierz kolumnę State (Stan).

  5. Na karcie Narzędzia kolumn wybierz pozycję Sortuj według kolumny, a następnie wybierz pole Kolejność sortowania stanu.

    Zrzut ekranu przedstawiający kartę Narzędzia kolumn usługi Power BI, Sortuj według kolumny.

Dodaj datę poprzednią

Następny krok obliczania czasu w stanie wymaga mapowania poprzedniego interwału (dzień, tydzień, miesiąc) dla każdego wiersza danych w zestawie danych. Jest to proste obliczenie przy użyciu kolumny obliczeniowej. Zazwyczaj należy zdefiniować tę kolumnę, jak pokazano.

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

Jednak takie podejście ma dwa główne problemy:

  • Działa tylko w okresach dziennych.
  • Nie obsługuje luk w danych. Jeśli na przykład element roboczy jest przenoszony między projektami.

Aby rozwiązać te problemy, kolumna obliczeniowa powinna znaleźć poprzedni dzień, przeskanując pole Data .

Aby dodać kolumnę obliczeniową Date Previous (Data poprzednia ), na karcie Narzędzia tabeli wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny następującym kodem i wybierz znacznik wyboru.

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

Kolumna obliczeniowa Date Previous (Data poprzednia ) używa trzech funkcji języka DAX, MAX, ALLEXCEPTi EARLIER, opisanych bardziej szczegółowo w dalszej części tego artykułu. Ponieważ kolumna jest obliczana, jest uruchamiana dla każdego wiersza w tabeli i za każdym razem, gdy jest uruchamiana, ma kontekst tego konkretnego wiersza.

Zrzut ekranu przedstawiający wykres tabeli usługi Power BI i kartę Wizualizacja dla daty i daty poprzedniej.

Napiwek

W menu kontekstowym pól Date (Data) i Previous Date (Data) wybierz pozycję Date (zamiast Date Hierarchy), aby wyświetlić jedną datę dla tych pól.

Dodawanie różnic daty w dniach

Date Previous oblicza różnicę między poprzednią i bieżącą datą dla każdego wiersza. W przypadku różnic daty w dniach obliczamy liczbę dni między poszczególnymi okresami. W przypadku większości wierszy w migawce dziennej wartość jest równa 1. Jednak w przypadku wielu elementów roboczych, które mają luki w zestawie danych, wartość jest większa niż 1.

Ważne

Wymaga dodania kolumny obliczeniowej Date Previous do tabeli.

Ważne jest, aby wziąć pod uwagę pierwszy dzień zestawu danych, w którym pole Date Previous jest puste. W tym przykładzie udostępniamy wierszowi standardową wartość 1, aby zachować spójność obliczeń.

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Ta kolumna obliczeniowa używa ISBLANK funkcji języka DAX i DATEDIFF opisanych w dalszej części tego artykułu.

Dodawanie ostatniego dnia w stanie

W następnym kroku obliczamy, czy dany wiersz reprezentuje ostatni dzień określony element roboczy w stanie. Obsługuje ona domyślne agregacje w usłudze Power BI dodawane w następnej sekcji, w której dodamy kolumnę State Time in Days (Czas stanu w dniach ).

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Dodaj czas stanu w dniach

Czas spędzony w określonym stanie elementu roboczego można teraz obliczyć, sumując różnice dat w dniach dla każdego elementu roboczego. To obliczenie obejmuje cały czas spędzony w określonym stanie, nawet jeśli przełączył się między stanami wiele razy. Istnieje możliwość oceny każdego wiersza jako trendu przy użyciu daty lub najnowszych informacji przy użyciu funkcji Is Last Day In State.

Ważne

Wymaga dodania do tabeli kolumn obliczeniowych Date Diff w dniach i Is Last Day w kolumnach obliczeniowych State .

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Tworzenie skumulowanych wykresów trendów kolumnowych na podstawie czasu stanu w dniach

Aby zademonstrować kolumnę State Time in Days (Czas stanu w dniach ), tworzone są następujące skumulowane wykresy kolumnowe. Pierwszy wykres przedstawia liczbę elementów roboczych w każdym stanie w czasie.

Zrzut ekranu przedstawiający skumulowany wykres kolumnowy usługi Power BI i kartę Wizualizacja, która ilustruje liczbę tytułów elementów roboczych według daty i stanu.

Drugi wykres ilustruje trend średnich dni, w których aktywne elementy robocze są w określonym stanie.

Zrzut ekranu przedstawiający skumulowany wykres kolumnowy usługi Power BI i kartę Wizualizacja, która przedstawia średnią liczbę dni w stanie elementów roboczych według daty.

Dodaj czas stanu w dniach — najnowszy (czy ostatni dzień jest w stanie)

Podczas obliczania czasu w stanie dla każdego elementu roboczego w tabeli lub w przypadku filtrowania według pola takiego jak Ścieżka obszaru nie używaj kolumny Czas stanu w dniach w agregacji. Agregacja używa wartości dla każdego dnia, w których element roboczy był w stanie . Jeśli na przykład element roboczy był w toku w poniedziałek i przeniesiony do pozycji Ukończono w czwartek, czas w stanie wynosi trzy dni, ale suma czasu stanu w dniach wynosi sześć dni, 1+2+3co jest niepoprawne.

Dodaj czas stanu w dniach — najnowsze.

Aby rozwiązać ten problem, użyj wartości State Time in Days (Czas stanu w dniach ) i zastosuj filtr Is Last Day In State równe "True". Eliminuje wszystkie dane historyczne niezbędne do trendu i koncentruje się zamiast tego tylko na najnowszej wartości dla każdego stanu.

Użyj wartości State Time in Days (Czas stanu w dniach) i zastosuj filtr Is Last Day In State równe 'True'.

Dodawanie czasu stanu w dniach — w toku

W poprzednich przykładach czas stanu w dniach dla danego elementu roboczego jest lizony tylko wtedy, gdy element roboczy był w tym określonym stanie. Jeśli twoim celem jest, aby czas w stanie dla danego elementu roboczego był liczone do średniej w sposób ciągły, musisz zmienić obliczenie. Jeśli na przykład chcemy śledzić stan "W toku", dodamy kolumnę obliczeniową Czas stanu w dniach — w toku .

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Uwaga

Może być konieczne skorygowanie definicji na podstawie stanów przepływu pracy używanych przez projekt. Na przykład projekt używany w przykładach w tym artykule używa stanu przepływu pracy "W toku", jednak procesy Agile, Scrum i CMMI zwykle używają stanów "Aktywne" lub "Zatwierdzone" do reprezentowania pracy w toku. Aby zapoznać się z omówieniem, zobacz Kategorie stanów i stanów przepływu pracy.

Na poniższej ilustracji przedstawiono wpływ uwzględnienia całego czasu w stanie dla każdego istniejącego elementu roboczego (pokazanego po lewej stronie) w porównaniu z elementami roboczymi w określonym stanie w danym dniu (pokazano po prawej stronie).

Porównanie trendów średniego czasu w stanie

Czas stanu w dniach trend wielu stanów

Analizowanie wydajności w wielu stanach jest również możliwe przy użyciu wzorca "Ciągłe". Jednak takie podejście działa tylko z wykresem trendu.

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Uwaga

Może być konieczne skorygowanie definicji na podstawie stanów przepływu pracy używanych przez projekt. Jeśli na przykład projekt używa elementu "Aktywny" zamiast "Zatwierdzone" lub "Proponowane".

Wykres po lewej stronie przedstawia łączną średnią, natomiast po prawej stronie przedstawiono poszczególne stany.

Porównanie trendów dla wielu stanów

Pobieranie czasu stanu w dniach — najnowsze dla wielu stanów

Czas stanu w dniach — najnowsza kolumna obliczeniowa podczas tworzenia trendu. Dzięki filtrowi stanów kolumna State Time in Days (Czas stanu w dniach ) i Is Last Day in State (Czas ostatniego dnia w stanie ) zapewnia prosty sposób uzyskania całkowitego czasu dowolnego elementu roboczego lub grupy elementów roboczych spędzonych w zestawie stanów.

Czas najnowszy w stanach

Dodaj poprzedni stan

Kolumna obliczeniowa Date Previous (Data poprzednia ) może również służyć do wyszukiwania poprzednich wartości, takich jak poprzedni stan dla każdego elementu roboczego.

Ważne

Wymaga dodania kolumny obliczeniowej Date Previous do tabeli.

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Ta kolumna obliczeniowa używa elementu , opisanego LOOKUPVALUEw dalszej części tego artykułu.

Pierwszy LOOKUPVALUE parametr 'View Name'[State], określa, aby zwrócić wartość [State].

Następny parametr określa, 'View Name'[Work Item Id], 'View Name'[Work Item Id]że należy wziąć pod uwagę tylko wiersze z pasującym identyfikatorem elementu roboczego jako bieżący wiersz.

Ostatni parametr określa, 'View Name'[Date], 'View Name'[Date Previous]że data zwracanego wiersza musi mieć wartość [Date] zgodną z [Datą] bieżącego wiersza. W migawce tylko jeden wiersz może spełniać te kryteria.

Dodawanie stanu zmienionego

Za pomocą kolumny State Previous (Poprzedni stan) możemy oznaczyć wiersze dla każdego elementu roboczego, w którym wystąpiło przejście stanu. Kolumna obliczeniowa Stage Changed (Zmieniono etap) ma dwie specjalne zagadnienia:

  • Puste wartości *State Previous (Poprzedni stan), które ustawiono na wartość Data utworzenia elementu roboczego
  • Tworzenie elementu roboczego jest uznawane za przejście stanu

Ważne

Wymaga dodania kolumny obliczeniowej State Previous do tabeli.

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Kolumna obliczeniowa to wartość logiczna określająca, czy wiersz jest przejściem stanu. Używając Not Equal To operatora, poprawnie przechwytujesz wiersze, w których poprzedni stan nie jest zgodny z bieżącym stanem, co oznacza, że porównanie zwraca wartość True zgodnie z oczekiwaniami.

Dodawanie przepływu stanu

W kolumnach obliczeniowych State Previous (Poprzedni stan) i State Changed (Zmieniono stan) można utworzyć kolumnę, która ilustruje przepływ stanu dla danego elementu roboczego. Tworzenie tej kolumny jest opcjonalne na potrzeby tego artykułu.

Ważne

Wymaga dodania kolumn obliczeniowych State Previous (Poprzedni stan) i State Changed (Zmieniono stan) do tabeli.

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Dodawanie liczby zmian stanu

W miarę przechodzenia do bardziej skomplikowanych miar musimy mieć reprezentację całkowitej liczby zmian stanu w celu porównania wierszy danych dla danego elementu roboczego. Otrzymujemy reprezentację przez dodanie kolumny obliczeniowej Liczba zmian stanu.

Ważne

Wymaga dodania kolumny obliczeniowej State Changed (Zmieniono stan) do tabeli.

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Dodawanie liczby zmian stanu — czas ostatniego proponowanego i ponownego uruchomienia stanu w dniach

Czas ponownego uruchomienia stanu w dniach to dość złożone obliczenie. Pierwszym krokiem jest znalezienie ostatniego momentu, w jakim element roboczy był w proponowanym stanie. Dodaj kolumnę obliczeniową State Change Count — Last Proponowane .

Uwaga

Może być konieczne skorygowanie poniższych definicji na podstawie stanów przepływu pracy używanych przez projekt. Jeśli na przykład projekt używa polecenia "Nowy" zamiast "Proponowane".

Na karcie Modelowanie wybierz pozycję Nowa kolumna, a następnie zastąp tekst domyślny następującym kodem i wybierz znacznik wyboru.

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

Następnie wróć do przeszłości i sprawdź, czy były jakieś aktywne stany przed tym proponowanym stanem. Na koniec zsumuj wszystkie dni, w których element roboczy był w stanie aktywnym przed ostatnią propozycją.

Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

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

Ponieważ czas ponownego uruchomienia stanu w dniach jest aktualizowany dla każdego wiersza danych, możesz utworzyć trend w celu oceny przeróbki między określonymi przebiegami lub zbadać przeróbki poszczególnych elementów roboczych przy użyciu funkcji Is Current.

Dodaj czas ponownej pracy stanu w dniach

Podobnie jak czas ponownego uruchomienia stanu w dniach, czas ponownego wykonania stanu w dniach wyszukuje pierwszy raz element roboczy w kategorii Stan ukończony. Po tym czasie każdego dnia element roboczy spędza w stanie innym niż Ukończono, jest liczone jako przeróbka.

  1. Utwórz kolumnę "State Change Count - First Completed" (Liczba zmian stanu — pierwsze ukończone). Ta kolumna śledzi liczbę przejść elementu roboczego do stanu Ukończono z dowolnego innego stanu.

    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. Na karcie Modelowanie wybierz pozycję Nowa kolumna , a następnie zastąp tekst domyślny poniższym kodem i wybierz znacznik wyboru.

    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
    )
    

    Uwaga

    Może być konieczne skorygowanie powyższej definicji na podstawie stanów przepływu pracy używanych przez projekt. Jeśli na przykład projekt używa polecenia Gotowe zamiast zamkniętego itd.

funkcji języka DAX;

Dodatkowe informacje znajdują się w tej sekcji dla funkcji języka DAX używanych do tworzenia kolumn obliczeniowych i miar dodanych w tym artykule. Zobacz też funkcje analizy czasowej języka DAX.

Function opis
ALLEXCEPT Usuwa wszystkie filtry kontekstowe w tabeli z wyjątkiem filtrów zastosowanych do określonych kolumn. ALLEXCEPT ('View Name'', 'View Name'[Work Item Id]) Zasadniczo zmniejsza liczbę wierszy w tabeli tylko do tych, które mają ten sam identyfikator elementu roboczego co bieżący wiersz.
CALCULATE Ta funkcja jest podstawą prawie wszystkich przykładów. Podstawowa struktura to wyrażenie, po którym następuje seria filtrów zastosowanych do wyrażenia.
COUNTROWS Ta funkcja , COUNTROWS ( 'View Name' )po prostu zlicza liczbę wierszy, które pozostają po zastosowaniu filtrów.
DATEDIFF Zwraca liczbę granic interwału przekraczanych między dwiema datami. DATEDIFF odejmuje datę poprzednią od daty , aby określić liczbę dni między nimi.
EARLIER Zwraca bieżącą wartość określonej kolumny w zewnętrznym przebiegu oceny wymienionej kolumny. Na przykład 'View Name'[Date] < EARLIER ( 'View Name'[Date] ) dodatkowo zmniejsza zestaw danych tylko do tych wierszy, które wystąpiły przed datą bieżącego wiersza, do którego odwołuje się funkcja EARLIER . EARLIER nie odnosi się do poprzednich dat; w szczególności definiuje kontekst wiersza kolumny obliczeniowej.
ISBLANK Sprawdza, czy wartość jest pusta, i zwraca wartość TRUE lub FALSE. ISBLANK oblicza bieżący wiersz, aby określić, czy wartość Date Previous ma wartość. Jeśli tak nie jest, instrukcja If ustawia różnice daty w dniach na 1.
LASTDATE Stosujemy LASTDATE filtr do wyrażenia, na przykład LASTDATE ( 'View Name'[Date] ), aby znaleźć najnowszą datę we wszystkich wierszach w tabeli i wyeliminować wiersze, które nie mają tej samej daty. W przypadku tabeli migawki wygenerowanej przez widok Analiza ten filtr skutecznie wybiera ostatni dzień wybranego okresu.
LOOKUPVALUE Zwraca wartość w result_columnName dla wiersza spełniającego wszystkie kryteria określone przez search_columnName i search_value.
MAX Zwraca największą wartość liczbową w kolumnie lub między dwoma wyrażeniami skalarnym. Stosujemy metodę MAX ( 'View Name'[Date] ), aby określić najnowszą datę po zastosowaniu wszystkich filtrów.