큰 Azure 리소스 데이터 세트 작업
Azure Resource Graph는 Azure 환경의 리소스로 작업하고 해당 정보를 가져오기 위한 것입니다. Resource Graph를 사용하면 수천 개의 레코드를 쿼리하는 경우에도 이 데이터를 빠르게 가져올 수 있습니다. Resource Graph에는 이러한 큰 데이터 세트 작업을 위한 여러 가지 옵션이 있습니다.
높은 빈도로 쿼리를 사용하는 방법에 대한 지침을 보려면 제한된 요청에 대한 지침으로 이동하세요.
데이터 세트 결과 크기
기본적으로 Resource Graph는 1,000개의 레코드만 반환하도록 쿼리를 제한합니다. 이 제어는 큰 데이터 세트를 생성하는 의도하지 않은 쿼리로부터 사용자와 서비스를 둘 다 보호합니다. 이 이벤트는 주로 고객이 특정 요구 사항에 맞는 방식으로 리소스를 찾고 필터링하기 위해 쿼리를 실험하는 경우에 발생합니다. 이 제어는 top 또는 limit Azure Data Explorer 언어 연산자를 사용하여 결과를 제한하는 것과 다릅니다.
참고 항목
first
을 사용할 경우 asc
또는 desc
를 사용하여 하나 이상의 열을 기준으로 결과를 정렬하는 것이 좋습니다. 정렬하지 않으면 결과가 무작위로 반환되고 반복되지 않습니다.
Resource Graph를 조작하는 모든 메서드를 통해 기본 제한을 재정의할 수 있습니다. 다음 예제에서는 데이터 세트 크기 제한을 200으로 변경하는 방법을 보여 줍니다.
az graph query -q "Resources | project name | order by name asc" --first 200 --output table
Search-AzGraph -Query "Resources | project name | order by name asc" -First 200
REST API에서 제어는 $top
이고 QueryRequestOptions
의 일부입니다.
가장 제한적인 제어가 적용됩니다. 예를 들어 쿼리에서 top
또는 limit
연산자를 사용하며 first
보다 많은 레코드를 생성하는 경우 반환되는 최대 레코드 수는 first
와 같습니다. 마찬가지로, top
또는 limit
가 first
보다 작은 경우 반환되는 레코드 집합은 top
또는 limit
로 구성된 더 작은 값이 됩니다.
first
매개 변수의 허용된 최댓값은 1000입니다.
CSV 내보내기 결과 크기 제한
Azure Resource Graph Explorer의 CSV(쉼표로 구분된 값) 내보내기 기능을 사용할 때 결과 집합은 55,000개의 레코드로 제한됩니다. 이 제한 사항은 Azure 지원 티켓을 제출하여 재정의할 수 없는 플랫폼 제한 사항입니다.
Azure Portal에서 CSV 결과를 다운로드하려면 Azure Resource Graph Explorer로 이동하고 쿼리를 실행합니다. 도구 모음에서 CSV로 다운로드를 선택합니다.
레코드 건너뛰기
큰 데이터 세트 작업을 위한 다음 옵션은 skip
제어입니다. 이 제어를 사용하면 쿼리가 결과를 반환하기 전에 정의된 레코드 수를 점프하거나 건너뛸 수 있습니다. Skip
은 결과 집합의 중간에 있는 레코드에 접근하기 위해 의미 있는 방식으로 결과를 정렬하는 쿼리에 유용합니다. 필요한 결과가 반환된 데이터 세트의 끝에 있는 경우, 다른 정렬 구성을 사용하고 대신 데이터 세트의 맨 위에서 결과를 검색하는 것이 더 효율적입니다.
참고 항목
skip
을 사용할 경우 asc
또는 desc
를 사용하여 하나 이상의 열을 기준으로 결과를 정렬하는 것이 좋습니다. 정렬하지 않으면 결과가 무작위로 반환되고 반복되지 않습니다. 쿼리에서 limit
또는 take
를 사용하는 경우 skip
은 무시됩니다.
다음 예제에서는 반환된 결과 집합을 11번째 레코드로 시작하는 대신, 쿼리에서 생성하는 처음 10개의 레코드를 건너뛰는 방법을 보여 줍니다.
az graph query -q "Resources | project name | order by name asc" --skip 10 --output table
Search-AzGraph -Query "Resources | project name | order by name asc" -Skip 10
REST API에서 제어는 $skip
이고 QueryRequestOptions
의 일부입니다.
페이징 결과
처리를 위해 결과 집합을 작은 레코드 집합으로 나누어야 하는 경우 또는 결과 집합이 허용된 최댓값인 1000을 초과하기 때문에 페이징을 사용합니다. REST API QueryResponse
는 결과 집합이 분할되었음을 나타내는 값(resultTruncated
및 $skipToken
)을 제공합니다. resultTruncated
는 응답에 반환되지 않은 추가 레코드가 있는지 여부를 소비자에게 알리는 부울 값입니다. count
속성이 totalRecords
속성보다 작은 경우에도 이 조건을 식별할 수 있습니다. totalRecords
는 쿼리와 일치하는 레코드 수를 정의합니다.
resultTruncated
는 쿼리가 요청하는 것보다 사용 가능한 리소스가 적거나 페이징이 사용하지 않도록 설정된 경우 또는 다음과 같은 이유로 페이징이 불가능한 경우 true
입니다.
- 쿼리에는
limit
또는sample
/take
연산자가 포함됩니다. - 모든 출력 열은
dynamic
또는null
형식입니다.
resultTruncated
가 true
이면 $skipToken
속성이 설정되지 않습니다.
다음 예에서는 Azure CLI 및 Azure PowerShell을 사용하여 처음 3,000개 레코드를 건너뛰고 이러한 레코드를 건너뛴 후 first
1,000개 레코드를 반환하는 방법을 보여 줍니다.
az graph query -q "Resources | project id, name | order by id asc" --first 1000 --skip 3000
Search-AzGraph -Query "Resources | project id, name | order by id asc" -First 1000 -Skip 3000
Important
다음과 같은 경우 응답에 $skipToken
이 포함되지 않습니다.
- 쿼리에는
limit
또는sample
/take
연산자가 포함됩니다. - 모든 출력 열은
dynamic
또는null
형식입니다.
예제를 보려면 REST API 문서에서 다음 페이지 쿼리로 이동합니다.
결과에 서식 지정
Resource Graph 쿼리의 결과는 Table
및 ObjectArray
라는 두 가지 형식으로 제공됩니다. 형식은 요청 옵션의 일부로 resultFormat
매개 변수를 사용하여 구성됩니다. Table
형식은 resultFormat
의 기본값입니다.
Azure CLI의 결과는 기본적으로 JSON 형식으로 제공됩니다. Azure PowerShell 결과는 기본적으로 PSResourceGraphResponse
개체이지만 data
속성의 ConvertTo-Json
cmdlet을 사용하여 JSON으로 신속하게 변환할 수 있습니다. 다른 SDK의 경우 ObjectArray
형식을 출력하도록 쿼리 결과를 구성할 수 있습니다.
형식 - Table
기본 형식인 Table
은 쿼리에서 반환하는 속성의 열 디자인과 행 값을 강조 표시하도록 설계된 JSON 형식으로 결과를 반환합니다. 이 형식은 먼저 열이 식별된 후 데이터를 표현하는 각 행이 이러한 열에 맞게 조정되는 구조화된 테이블이나 스프레드시트에 정의된 데이터와 비슷합니다.
다음은 Table
서식이 지정된 쿼리 결과의 샘플입니다.
{
"totalRecords": 47,
"count": 1,
"data": {
"columns": [
{
"name": "name",
"type": "string"
},
{
"name": "type",
"type": "string"
},
{
"name": "location",
"type": "string"
},
{
"name": "subscriptionId",
"type": "string"
}
],
"rows": [
[
"veryscaryvm2-nsg",
"microsoft.network/networksecuritygroups",
"eastus",
"11111111-1111-1111-1111-111111111111"
]
]
},
"facets": [],
"resultTruncated": "true"
}
형식 - ObjectArray
ObjectArray
형식도 JSON 형식으로 결과를 반환합니다. 그러나 이 디자인은 배열 그룹에서 열과 행 데이터가 일치하는 JSON에서 일반적인 키/값 쌍 관계에 맞게 조정됩니다.
다음은 ObjectArray
서식이 지정된 쿼리 결과의 샘플입니다.
{
"totalRecords": 47,
"count": 1,
"data": [
{
"name": "veryscaryvm2-nsg",
"type": "microsoft.network/networksecuritygroups",
"location": "eastus",
"subscriptionId": "11111111-1111-1111-1111-111111111111"
}
],
"facets": [],
"resultTruncated": "true"
}
쿼리 제한 시간
Azure Resource Graph는 Azure Resource Manager와 일치하는 30초의 쿼리 시간 제한을 적용합니다.
가능한 해결 방법:
- 더 작은 범위를 사용하여 쿼리를 다시 시도합니다. 예를 들어 더 적은 구독을 쿼리합니다.
join
을 사용하는 쿼리는join
왼쪽에 더 작은 결과 집합이 있어야 합니다.
다음 단계
- Azure Resource Graph 쿼리 언어 이해에 대해 자세히 알아봅니다.
- 리소스 검색 방법에 대해 자세히 알아보기