큰 Azure 리소스 데이터 세트 작업

Azure Resource Graph는 Azure 환경의 리소스로 작업하고 해당 정보를 가져오기 위한 것입니다. Resource Graph를 사용하면 수천 개의 레코드를 쿼리하는 경우에도 이 데이터를 빠르게 가져올 수 있습니다. Resource Graph에는 이러한 큰 데이터 세트 작업을 위한 여러 가지 옵션이 있습니다.

높은 빈도로 쿼리를 사용하는 방법에 대한 지침은 제한된 요청에 대한 지침을 참조하세요.

데이터 세트 결과 크기

기본적으로 Resource Graph는 1000개의 레코드만 반환하도록 쿼리를 제한합니다. 이 제어는 큰 데이터 세트를 생성하는 의도하지 않은 쿼리로부터 사용자와 서비스를 둘 다 보호합니다. 이 이벤트는 주로 고객이 특정 요구 사항에 맞는 방식으로 리소스를 찾고 필터링하기 위해 쿼리를 실험하는 경우에 발생합니다. 이 제어는 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 또는 limitFirst보다 작은 경우 반환되는 레코드 집합은 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를 사용하는 경우 건너뛰기는 무시됩니다.

다음 예제에서는 반환된 결과 집합을 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 APIQueryResponse는 결과 집합이 분할되었음을 나타내는 값(resultTruncated$skipToken)을 제공합니다. resultTruncated는 응답에 반환되지 않은 추가 레코드가 있는지 여부를 소비자에게 알리는 부울 값입니다. count 속성이 totalRecords 속성보다 작은 경우에도 이 조건을 식별할 수 있습니다. totalRecords는 쿼리와 일치하는 레코드 수를 정의합니다.

쿼리가 요청하는 것보다 사용 가능한 리소스가 적을 경우 또는 다음과 같은 이유로 페이징이 비활성화되거나 사용 불가능해지면 resultTruncatedtrue입니다.

  • 쿼리에는 limit 또는 sample/take 연산자가 포함됩니다.
  • 모든 출력 열은 dynamic 또는 null 형식입니다.

resultTruncatedtrue이면 $skipToken 속성이 설정되지 않습니다.

다음 예에서는 Azure CLI 및 Azure PowerShell을 사용하여 처음 3,000개 레코드를 건너뛰고 이러한 레코드를 건너뛴 후 처음 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 쿼리의 결과는 TableObjectArray라는 두 가지 형식으로 제공됩니다. 형식은 요청 옵션의 일부로 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"
}

다음 단계