다음을 통해 공유


큰 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 또는 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를 사용하는 경우 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 형식입니다.

resultTruncatedtrue이면 $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 쿼리의 결과는 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"
}

쿼리 제한 시간

Azure Resource Graph는 Azure Resource Manager와 일치하는 30초의 쿼리 시간 제한을 적용합니다.

가능한 해결 방법:

  • 더 작은 범위를 사용하여 쿼리를 다시 시도합니다. 예를 들어 더 적은 구독을 쿼리합니다.
  • join을 사용하는 쿼리는 join 왼쪽에 더 작은 결과 집합이 있어야 합니다.

다음 단계