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 dostarczają pewne miary czasu w określonym stanie. Jednak te widżety mogą nie mieć żądanego poziomu szczegółów.
Ten artykuł zawiera przykłady użycia wyrażeń analizy danych (DAX) do oceniania czasu spędzonego przez elementy robocze w różnych stanach. 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.
Liczba | opis |
---|---|
Liczba elementów roboczych (miara) | Oblicza liczbę unikalnych elementów roboczych na podstawie ostatniego dnia wpisu dla elementu roboczego. |
Kolejność sortowania stanu | Dodaje kolumnę do sortowania stanów workflowu 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 (geograficznym/określonym) | Dodaje kolumnę określającą, czy wartość Date jest ostatnim dniem, w którym element roboczy znajdował się w stanie State |
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 - ostatnio proponowanych | Dodaje kolumnę, która określa, czy element roboczy był wcześniej w stanie Proponowany, po przejściu do późniejszego stanu State |
Czas ponownego uruchomienia stanu w dniach | Dodaje kolumnę, która oblicza, ile dni element roboczy spędził w stanie ponownego uruchomienia |
Czas na ponowne opracowanie w dniach | Dodaje kolumnę, która oblicza dni, w których element roboczy przebywa w stanie innym niż Ukończono |
Ważne
- Podczas dodawania kolumny obliczeniowej lub miary zgodnie z przykładami przedstawionymi w tym artykule zastąp Nazwa widoku nazwą tabeli dla widoku analitycznego lub tabeli danych. Na przykład zastąp Nazwa widoku ciągiem Aktywne usterki.
- Analiza nie obsługuje poprawek w ciągu dnia. Te przykłady mają największą precyzję przy korzystaniu z interwału Dziennego przy odniesieniu się do widoku analizy.
- Wszystkie rewizje wewnątrz dnia lub wewnątrz okresu (tygodniowe/miesięczne) są ignorowane przez obliczenia. Może to prowadzić do nieoczekiwanych wyników w konkretnych sytuacjach, na przykład gdy element roboczy nie pokazuje czasu "W toku", mimo że jest w statusie "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 Nowy, Aktywny i Zamknięty zamiast Proponowany, W toku i Ukończony.
- Kolumna Data wspomniana w tym artykule nie jest kolumną natywną w ramach Azure DevOps; jest to kolumna pochodna utworzona w Power BI, aby ułatwić raportowanie Czasu w stanie. Tę kolumnę można utworzyć przy użyciu istniejących kolumn związanych z datą, takich jak "Zmieniono datę" lub "Data zmiany stanu".
Wymagania wstępne
Kategoria | Wymagania |
---|---|
poziomy dostępu |
-
Członek projektu. — Co najmniej podstawowy dostęp. |
Uprawnienia użytkownika | Domyślnie członkowie projektu mają uprawnienia do wykonywania zapytań w usłudze Analytics i tworzenia widoków. Aby uzyskać więcej informacji na temat innych wymagań 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: Data utworzenia i Kategoria 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 analitycznego o dziennej granularności. Przykłady w tym artykule są oparte na widoku Analizy aktywnych usterek zdefiniowanym w Tworzenie aktywnego raportu usterek w Power BI na podstawie niestandardowego widoku analizy, z wyjątkiem, że wybrano 60 dni Historii i dziennej szczegółowości. Określ również, czy chcesz przejrzeć ukończone lub zamknięte elementy robocze.
Dodaj miarę Liczby 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.
Załaduj widok analizy do programu Power BI Desktop. Aby uzyskać szczegółowe informacje, sprawdź Nawiązywanie połączenia z łącznikiem danych Power BI, Łączenie z widokiem analizy.
Wybierz tabelę danych, a następnie na karcie Narzędzia tabel w sekcji Obliczenia na wstążce wybierz pozycję Nowa miara.
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 wykorzystuje funkcje DAX:
CALCULATE
,COUNTROWS
iLASTDATE
, które zostały opisane szczegółowo później w tym artykule.Uwaga
Pamiętaj, aby zastąpić nazwę widoku nazwą tabeli widoku Analiza. Na przykład tutaj zastępujemy Nazwa widokuaktywnymi usterkami.
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 domyślną agregacją liczby na podstawie identyfikatora elementu roboczego. Poniższy obraz został utworzony przez dodanie wizualizacji Karta oraz miary Liczba elementów roboczych do pierwszej karty i właściwości Identyfikator elementu roboczego do drugiej karty.
Aby uzyskać poprawną liczbę przy użyciu domyślnej agregacji, zastosuj filtr Czy jest aktualny równa się 'Prawda'. Ten wzorzec stosowania filtrów do domyślnej agregacji jest podstawą dla wielu przykładów podanych w tym artykule.
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 trwania stanu i Proponowane jest wyświetlane po W toku. Poniższe kroki ułatwiają rozwiązanie tego problemu.
Sprawdź, czy pole Kategoria stanu znajduje się w widoku Analytics. To pole jest uwzględniane we wszystkich domyślnych widokach udostępnionych.
Wybierz tabelę danych, a następnie na karcie Narzędzia tabel sekcja Obliczenia na wstążce wybierz pozycję Nowa kolumna.
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:
Uwaga
Może być konieczne skorygowanie definicji, jeśli potrzebujesz większej szczegółowości niż zapewnia kategoria stanu. Kategoria State zapewnia poprawne sortowanie we wszystkich typach elementów roboczych, niezależnie od dostosowań Stanu.
Otwórz widok Dane i wybierz kolumnę State (Stan).
Na karcie Narzędzia kolumn wybierz pozycję Sortuj według kolumny, a następnie wybierz pole Kolejność sortowania stanu.
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ć obliczeniową kolumnę Date Previous (Data poprzednia), na karcie Narzędzia tabel wybierz pozycję Nowa kolumna, a następnie zastąp tekst domyślny następującym kodem i zaznacz 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
, ALLEXCEPT
i 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.
Napiwek
W menu kontekstowym dla pól Date i Previous Date wybierz pozycję Date (zamiast Date Hierarchy), aby wyświetlić jedną datę dla tych pól.
Dodaj różnicę dat 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 funkcji DAX ISBLANK
i DATEDIFF
, które zostały opisane w dalszej części tego artykułu.
Dodaj oznaczenie ostatniego dnia w stanie
W następnym kroku obliczamy, czy dany wiersz reprezentuje ostatni dzień, w którym określony element roboczy znajdował się 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, abyś dodał do tabeli obliczone kolumny Date Diff in Days oraz Is Last Day in 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 słupkowych trendów na podstawie czasu trwania 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 poszczególnych stanach w czasie.
Drugi wykres ilustruje trend średnich dni, w których aktywne elementy robocze są w określonym stanie.
Dodaj czas przebywania w stanie w dniach – najnowszy (czy jest to ostatni dzień w stanie)
Podczas oceny 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órym element roboczy znajdował się w stanie. Jeśli na przykład element roboczy był w toku w poniedziałek i przeniesiony do Ukończono w czwartek, czas w tym stanie wynosi trzy dni, ale suma w kolumnie Czas w stanie w dniach wynosi sześć dni, 1+2+3
, co jest niepoprawne.
Aby rozwiązać ten problem, użyj State Time in Days (Czas stanu w dniach) i zastosuj filtr, gdzie Is Last Day In State jest 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.
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ł liczony do średniej w sposób ciągły, musisz zmienić obliczenia. Na przykład, jeśli chcemy śledzić stan "W toku", dodajemy obliczeniową kolumnę 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 uzyskać omówienie, zobacz Stany przepływu pracy i kategorie stanów.
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).
Trend czasu trwania stanu w dniach dla 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.
Pobierz czas trwania stanu w dniach dla wielu stanów - najnowsze
Używa się kolumny obliczeniowej Czas stanu w dniach — najnowszy podczas tworzenia trendu. Dzięki filtrowi stanów, kolumna State Time in Days (Czas stanu w dniach) i Is Last Day in State (Czy to ostatni dzień w stanie) zapewniają prosty sposób na uzyskanie całkowitego czasu, jaki dowolny element roboczy lub grupa elementów roboczych spędziła w zbiorze stanów.
Dodaj stan poprzedni
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 LOOKUPVALUE
w dalszej części tego artykułu.
Pierwszy parametr LOOKUPVALUE
, 'View Name'[State]
określa, aby zwrócić wartość [State].
Następny parametr, 'View Name'[Work Item Id], 'View Name'[Work Item Id]
, określa, że należy wziąć pod uwagę tylko wiersze z pasującym identyfikatorem elementu roboczego jak bieżący wiersz.
I ostatni parametr, 'View Name'[Date], 'View Name'[Date Previous]
, określa, że data zwracanego wiersza musi mieć wartość [Date] zgodną z [Poprzednią 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 Zmieniono etap ma dwa specjalne aspekty do rozważenia.
- Puste wartości *State Previous, które ustawiliśmy na Datę 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 zawiera wartość logiczną, która określa, czy wiersz jest przejściem stanowym. 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.
Dodaj przepływ stanu
W kolumnach obliczeniowych State Previous (Poprzedni stan) i State Changed (Zmieniono stan) można utworzyć kolumnę, która objaśnia przepływ stanu dla danego elementu roboczego. Tworzenie tej kolumny jest opcjonalne na potrzeby tego artykułu.
Ważne
Wymaga, aby do tabeli zostały dodane kolumny obliczeniowe Poprzedni stan i Zmieniono stan.
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]
Dodaj licznik 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, aby kolumna obliczeniowa State Changed została dodana 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 — Ostatnio 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 terminu "Nowy" zamiast "Proponowany".
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 w ramach określonych sprintów lub zbadać przeróbki poszczególnych elementów roboczych przy użyciu funkcji "Is Current".
Dodaj czas na poprawki stanu w dniach
Podobnie jak Czas ponownego uruchomienia stanu w dniach, Czas ponownego wykonania stanu w dniach rejestruje pierwszy raz, kiedy element roboczy znalazł się w kategorii stanu "Ukończony". Po tym czasie każdego dnia, kiedy element roboczy znajduje się w stanie innym niż Ukończono, jest liczony jako przeróbka.
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]) ) )
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 poprzedniej definicji na podstawie stanów przepływu pracy używanych przez projekt. Jeśli na przykład projekt używa Gotowe zamiast Zamknięte, i tak dalej.
Funkcje 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ż DAX, funkcje inteligencji czasowej.
Funkcja | 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 etapie oceny tej 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 ocenia bieżący wiersz, aby określić, czy 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. Dzięki tabeli migawki wygenerowanej przez widok Analytics, 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. |