Udostępnij za pośrednictwem


Zapytania w zakresie projektu i organizacji

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

Korzystając z analizy dla usługi Azure DevOps, można tworzyć zapytania, które są ograniczone do projektu lub organizacji lub kolekcji. Te zapytania można uruchamiać bezpośrednio w przeglądarce lub w usłudze Power BI.

Zapytania dotyczące zakresu projektu pomagają odpowiedzieć na pytania dotyczące pojedynczego projektu, natomiast zapytania w zakresie organizacji i kolekcji umożliwiają odpowiadanie na pytania, które przekraczają granice projektu. Zapytania w zakresie organizacji i kolekcji wymagają szerszych uprawnień użytkownika lub starannych ograniczeń określania zakresu, aby upewnić się, że zapytanie nie jest blokowane z powodu braku uprawnień.

Uwaga

Usługa Analytics jest automatycznie włączona i obsługiwana w środowisku produkcyjnym dla wszystkich usług Azure DevOps Services. Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne. Zachęcamy do korzystania z niego i przekazywania opinii. Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja to v2.0, a najnowsza wersja zapoznawcza to v4.0-preview. Aby uzyskać więcej informacji, zobacz Wersjonowanie interfejsu API OData.

Uwaga

Usługa Analytics jest automatycznie instalowana i obsługiwana w środowisku produkcyjnym dla wszystkich nowych kolekcji projektów dla usługi Azure DevOps Server 2020 i nowszych wersji. Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne. Zachęcamy do korzystania z niego i przekazywania opinii. W przypadku uaktualnienia z usługi Azure DevOps Server 2019 możesz zainstalować usługę Analytics podczas uaktualniania.

Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja to v2.0, a najnowsza wersja zapoznawcza to v4.0-preview. Aby uzyskać więcej informacji, zobacz Wersjonowanie interfejsu API OData.

Wymagania wstępne

Kategoria Wymagania
poziomy dostępu - Członek projektu.
— Co najmniej dostęp w warstwie podstawowej.
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.

Ważne

Jeśli nie masz dostępu do wszystkich projektów w organizacji, zastosuj filtr projektu do wszystkich zapytań. Podczas ściągania danych do narzędzi klienckich, takich jak Power BI lub Excel, użyj składni ścieżki projektu, aby upewnić się, że wszystkie dane są ograniczone przez dany projekt. Używaj zapytań o zakresie organizacji lub zapytań o zakresie kolekcji tylko wtedy, gdy trzeba raportować co najmniej dwa projekty.

Zapytania w zakresie projektu

Zapytanie tworzy się, wprowadzając adres URL OData do obsługiwanej przeglądarki internetowej.

Podstawowy adres URL zapytania OData na poziomie projektu jest pokazany w poniższej składni.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/

W podanych przykładach zamień {OrganizationName} i {ProjectName} na nazwy swojej organizacji i projektu, który chcesz zapytać.

Uwaga

Pozostałe przykłady w tym artykule są oparte na adresie URL usług Azure DevOps Services. Zastąp adres URL serwera Usługi Azure DevOps, aby użyć przykładów.

Zwracanie liczby elementów roboczych

Na przykład następujące zapytanie w zakresie projektu zwraca liczbę elementów roboczych dla określonego projektu.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/WorkItems/$count

Na przykład zapytanie projektu Fabrikam Fiber zwraca liczbę 7126 elementów roboczych. Usunięte elementy robocze nie są uwzględniane w liczbie.

https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v1.0/WorkItems/$count

7126

Przywracanie ścieżek obszaru w projekcie

Podobnie następujący ciąg zapytania zwraca obszary dla określonego projektu:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/Areas

Jest to odpowiednikiem następującego filtru w zapytaniu z zakresem organizacji.

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
  $filter=Project/ProjectName eq '{ProjectName}'

Na przykład zapytanie dotyczące projektu Fabrikam Fiber zwraca wszystkie właściwości zdefiniowane dla ścieżki obszaru, ponieważ w zapytaniu nie zastosowano żadnego operatora $select.

https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v1.0/Areas

W poniższym przykładzie przedstawiono dane zwrócone dla pojedynczej ścieżki obszaru.

ProjectSK	"56af920d-393b-4236-9a07-24439ccaa85c"
AreaSK	"26be05fd-e68a-4fcb-833f-497f6bee45f2"
AreaId	"26be05fd-e68a-4fcb-833f-497f6bee45f2"
AreaName	"Service Delivery"
Number	55373
AreaPath	"Fabrikam Fiber\\Service Delivery"
AreaLevel1	"Fabrikam Fiber"
AreaLevel2	"Service Delivery"
AreaLevel3	null
AreaLevel4	null
AreaLevel5	null
AreaLevel6	null
AreaLevel7	null
AreaLevel8	null
AreaLevel9	null
AreaLevel10	null
AreaLevel11	null
AreaLevel12	null
AreaLevel13	null
AreaLevel14	null
Depth	1

Użycie opcji $expand

W przypadku korzystania z zapytania w zakresie projektu z opcją $expand nie jest wymagane podanie innych filtrów.

Na przykład taki filtr projektowy:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/WorkItems?
  $expand=Parent

Jest filtrowany automatycznie, aby zapewnić bezpieczeństwo.

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $filter=ProjectName eq '{ProjectName}'
  &$expand=Parent($filter=ProjectName eq '{ProjectName}')

Zapytania w zakresie organizacji

Podstawowy adres URL zapytań na poziomie organizacji wygląda następująco:

https://analytics.dev.azure.com/{OrganizationName}/_odata/v1.0

W przypadku korzystania z zapytania w zakresie organizacji z opcją $expand należy podać inny filtr.

Na przykład następujące zapytanie obejmujące organizację, które używa elementu $expand, aby pobrać elementy podrzędne wszystkich elementów roboczych.

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $filter=Project/ProjectName eq '{ProjectName}'
  &$expand=Children

Wymaga to dodatkowego filtru, aby zweryfikować, czy dzieci są ograniczone do określonego projektu.

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $filter=Project/ProjectName eq '{ProjectName}'
  &$expand=Children($filter=Project/ProjectName eq '{ProjectName}')

Zwróć element nadrzędny wszystkich elementów roboczych

Poniższe zapytanie, które używa opcji $expand do pobrania elementów nadrzędnych dla wszystkich elementów roboczych.

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $filter=Project/ProjectName eq '{ProjectName}'
  &$expand=Parent

Wymaga innego filtru, aby sprawdzić, czy element nadrzędny jest ograniczony do określonego projektu:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $filter=Project/ProjectName eq '{ProjectName}'
  &$expand=Parent($filter=Project/ProjectName eq '{ProjectName}')

Bez dodatkowego filtru żądanie kończy się niepowodzeniem, jeśli element nadrzędny dowolnego elementu roboczego odwołuje się do elementów roboczych w projekcie, do którego nie masz dostępu do odczytu.

Ograniczenia zabezpieczeń na poziomie projektu

Analiza ma jeszcze kilka ograniczeń dotyczących składni zapytań związanych z zabezpieczeniami na poziomie projektu.

Filtry any lub all dotyczą jednostki podstawowej w obiekcie $expand. W przypadku filtrów opartych na projekcie jawnie ignorujemy filtr podczas korzystania z elementu $expand:

Na przykład następujące zapytanie:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $filter=ProjectName eq '{ProjectName}'
  &$expand=Children($filter=Project/ProjectName eq '{ProjectName}')

Jest interpretowany jako:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $filter=ProjectName eq '{ProjectName}'
  &$expand=Children

Niepowodzenie występuje, jeśli nie masz dostępu do wszystkich projektów.

Aby obejść to ograniczenie, należy dodać dodatkowe wyrażenie w pliku $filter:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $filter=ProjectName eq '{ProjectName}' and Children/any(r: r/ProjectName eq '{ProjectName}')
  &$expand=Children

Użycie $level jest obsługiwane tylko wtedy, gdy masz dostęp do wszystkich projektów w kolekcji lub w przypadku korzystania z zapytania o zakresie projektu:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $expand=Children($levels=2;$filter=ProjectName eq '{ProjectName}')

Analiza nie obsługuje odwołań między poziomami w projektach korzystających z klauzuli $it. Jako przykład, poniższe zapytanie odwołuje się do głównego elementu roboczego ProjectName przy pomocy aliasu $it, który nie jest obsługiwany.

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $expand=Links(
    $expand=TargetWorkItem;
    $filter=TargetWorkItem/Project/ProjectName eq $it/Project/ProjectName)

Następny krok