프로젝트 및 조직 범위 지정 쿼리

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

Azure DevOps용 Analytics를 사용하여 프로젝트 또는 조직 또는 컬렉션으로 범위가 지정된 쿼리를 생성할 수 있습니다. 이러한 쿼리는 브라우저 또는 Power BI 내에서 직접 실행할 수 있습니다.

프로젝트 범위 쿼리는 단일 프로젝트에 대한 질문에 답변하는 데 도움이 되는 반면 조직 및 컬렉션 범위 쿼리를 사용하면 프로젝트 경계를 넘나드는 질문에 대답할 수 있습니다. 조직 및 컬렉션 범위 쿼리에는 더 광범위한 사용자 권한 또는 신중한 범위 제한 사항이 필요하므로 권한이 부족하여 쿼리가 차단되지 않도록 해야 합니다.

참고 항목

Analytics 서비스는 모든 Azure DevOps Services에 대해 프로덕션에서 자동으로 사용하도록 설정되고 지원됩니다. Analytics Service의 OData 피드에 대한 Power BI 통합 및 액세스는 일반적으로 사용할 수 있습니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다. 사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0최신 미리 보기 버전입니다 v4.0-preview. 자세한 내용은 OData API 버전 관리를 참조 하세요.

참고 항목

Analytics 서비스는 Azure DevOps Server 2020 이상 버전의 모든 새 프로젝트 컬렉션에 대해 프로덕션에 자동으로 설치되고 지원됩니다. Analytics Service의 OData 피드에 대한 Power BI 통합 및 액세스는 일반적으로 사용할 수 있습니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다. Azure DevOps Server 2019에서 업그레이드한 경우 업그레이드 중에 Analytics 서비스를 설치할 수 있습니다.

사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0최신 미리 보기 버전입니다 v4.0-preview. 자세한 내용은 OData API 버전 관리를 참조 하세요.

참고 항목

Analytics 서비스는 Azure DevOps Server 2019용 미리 보기로 제공됩니다. 프로젝트 컬렉션에 사용하도록 설정하거나 설치할 수 있습니다. Power BI 통합 및 Analytics Service의 OData 피드에 대한 액세스는 미리 보기로 제공됩니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다.

사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0최신 미리 보기 버전입니다 v4.0-preview. 자세한 내용은 OData API 버전 관리를 참조 하세요.

필수 조건

  • 분석 데이터를 보고 서비스를 쿼리하려면 기본 액세스 이상의 프로젝트 멤버여야 합니다. 기본적으로 모든 프로젝트 멤버에는 분석을 쿼리하고 분석 뷰를 정의할 수 있는 권한이 부여됩니다.
  • 서비스 및 기능 사용 및 일반 데이터 추적 활동과 관련된 다른 필수 구성 요소에 대해 알아보려면 분석에 액세스하기 위한 사용 권한 및 필수 구성 요소를 참조 하세요.

Important

조직의 모든 프로젝트에 액세스할 수 없는 경우 모든 쿼리에 프로젝트 필터를 적용하는 것이 좋습니다. Power BI 또는 Excel과 같은 클라이언트 도구로 데이터를 끌어 올 때 프로젝트 경로 구문을 사용하는 것이 모든 데이터가 지정된 프로젝트에 의해 제한되도록 하는 가장 좋은 방법입니다. 둘 이상의 프로젝트에 대해 보고해야 하는 경우에만 조직 범위 또는 컬렉션 범위 쿼리를 사용하는 것이 좋습니다.

프로젝트 범위 쿼리

지원되는 웹 브라우저에 OData URL을 입력하여 쿼리를 생성합니다.

프로젝트 수준 OData 쿼리의 기본 URL은 다음 구문과 같습니다.

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

제공된 예제에서 쿼리할 조직 및 {ProjectName} 프로젝트의 이름으로 바꿉 {OrganizationName} 니다.

참고 항목

이 문서에 제공된 다시 기본 예제는 Azure DevOps Services URL을 기반으로 합니다. 예제를 실행하려면 Azure DevOps Server URL을 대체해야 합니다.

작업 항목 수 반환

예를 들어 다음 프로젝트 범위 쿼리는 특정 프로젝트의 작업 항목 수를 반환합니다.

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

예를 들어 Fabrikam 파이버 프로젝트의 쿼리는 7126개의 작업 항목을 반환합니다. 삭제된 작업 항목은 개수에 포함되지 않습니다.

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

7126

프로젝트 영역 경로 반환

마찬가지로 다음 쿼리 문자열은 특정 프로젝트의 영역을 반환합니다.

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

조직 범위 쿼리에 대한 다음 필터와 동일합니다.

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

예를 들어 Fabrikam Fiber 프로젝트의 쿼리는 쿼리에 연산자가 적용되지 않는 $select 영역 경로에 대해 정의된 모든 속성을 반환합니다.

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

다음 예제에서는 단일 영역 경로에 대해 반환된 데이터를 보여줍니다.

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

$expand 옵션 사용

옵션과 함께 프로젝트 범위 쿼리를 $expand 사용하는 경우 다른 필터를 제공할 필요가 없습니다.

예를 들어 다음 프로젝트 범위 필터는 다음과 같습니다.

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

는 보안을 적용하기 위해 자동으로 필터링됩니다.

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

조직 범위 쿼리

조직 수준 쿼리에 대한 기본 URL은 다음과 같습니다.

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

옵션과 함께 조직 범위 쿼리를 $expand 사용하는 경우 다른 필터를 제공해야 합니다.

예를 들어 다음 조직 범위 쿼리는 모든 작업 항목의 자식을 검색하는 데 사용됩니다 $expand .

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

자식이 지정된 프로젝트로 제한되는지 확인하려면 다른 필터가 필요합니다.

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

모든 작업 항목의 부모 반환

다음 쿼리는 모든 작업 항목의 부모를 검색하는 옵션을 사용합니다 $expand .

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

부모가 지정된 프로젝트로 제한되는지 확인하려면 다른 필터가 필요합니다.

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

다른 필터가 없으면 작업 항목의 부모가 읽기 권한이 없는 프로젝트의 작업 항목을 참조하는 경우 요청이 실패합니다.

프로젝트 수준 보안 제한

분석에는 프로젝트 수준 보안과 관련된 쿼리 구문에 대한 몇 가지 제한 사항이 있습니다.

또는 all 필터는 any .의 기본 엔터티에 $expand적용됩니다. 프로젝트를 기반으로 하는 필터의 경우 다음을 사용할 때 필터를 $expand명시적으로 무시합니다.

예를 들어, 다음과 같은 쿼리가 있습니다.

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

다음과 같이 해석됩니다.

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

모든 프로젝트에 액세스할 수 없는 경우 실패합니다.

제한을 해결하려면 다음에서 추가 식을 추가해야 합니다.$filter

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

사용 $level 은 컬렉션의 모든 프로젝트에 액세스할 수 있거나 프로젝트 범위 쿼리를 사용하는 경우에만 지원됩니다.

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

Analytics는 절을 사용하는 프로젝트에 대한 교차 수준 참조를 $it 지원하지 않습니다. 예를 들어 다음 쿼리는 지원되지 않는 루트 작업 항목의 ProjectName$it 사용 별칭을 참조합니다.

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

다음 단계