Dela via


Arbeta med stora Azure-resursdatauppsättningar

Azure Resource Graph är utformat för att arbeta med och få information om resurser i din Azure-miljö. Resource Graph gör det snabbt att hämta dessa data, även när du kör frågor mot tusentals poster. Resource Graph har flera alternativ för att arbeta med dessa stora datamängder.

Vägledning om hur du arbetar med frågor med hög frekvens finns i Vägledning för begränsade begäranden.

Resultatstorlek för datamängd

Som standard begränsar Resource Graph alla frågor till att endast returnera 1 000 poster. Den här kontrollen skyddar både användaren och tjänsten mot oavsiktliga frågor som skulle resultera i stora datamängder. Den här händelsen beror ofta på att en kund experimenterar med frågor för att hitta och filtrera resurser på ett sätt som passar dennes specifika behov. Den här kontrollen fungerar inte på samma sätt som när resultatet begränsas med operatorerna top och limit i Azure Data Explorer-språket.

Kommentar

När du använder firstrekommenderar vi att du beställer resultaten efter minst en kolumn med asc eller desc. Utan sortering är resultaten som returneras slumpmässiga och inte repeterbara.

Standardgränsen kan åsidosättas med någon av metoderna för interaktion med Resource Graph. I följande exempel visas hur du ändrar storleksgränsen för datauppsättningen till 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

I REST-API:et är $top kontrollen och är en del av QueryRequestOptions.

Den kontroll som är mest restriktiv vinner. Om frågan till exempel använder operatorerna top eller limit och skulle resultera i fler poster än first, skulle de maximala poster som returneras vara lika med first. På samma sätt, om top eller limit är mindre än first, skulle postuppsättningen som returneras vara det mindre värdet som konfigurerats av top eller limit.

Parametern first har ett högsta tillåtna värde på 1 000.

Storleksbegränsning för CSV-exportresultat

När du använder csv-exportfunktionen (kommaavgränsat värde) i Azure Resource Graph Explorer är resultatuppsättningen begränsad till 55 000 poster. Den här begränsningen är en plattformsgräns som inte kan åsidosättas genom att skicka in en Azure-supportbegäran.

Om du vill ladda ned CSV-resultat från Azure-portalen bläddrar du till Azure Resource Graph Explorer och kör en fråga. I verktygsfältet väljer du Ladda ned som CSV.

Hoppa över poster

Nästa alternativ för att arbeta med stora datauppsättningar är skip kontrollen. Med den här kontrollen kan frågan hoppa över eller hoppa över det definierade antalet poster innan resultatet returneras. Skip är användbart för frågor som sorterar resulterar i ett meningsfullt sätt där avsikten är att komma åt poster någonstans mitt i resultatuppsättningen. Om de resultat som behövs är i slutet av den returnerade datauppsättningen är det mer effektivt att använda en annan sorteringskonfiguration och hämta resultaten från toppen av datauppsättningen i stället.

Kommentar

När du använder skiprekommenderar vi att du beställer resultaten efter minst en kolumn med asc eller desc. Utan sortering är resultaten som returneras slumpmässiga och inte repeterbara. Om limit eller take används i frågan skip ignoreras.

I följande exempel visas hur du hoppar över de första 10 posterna som en fråga skulle resultera i, i stället startar du den returnerade resultatuppsättningen med den elfte posten:

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

I REST-API:et är $skip kontrollen och är en del av QueryRequestOptions.

Växla resultat

När det är nödvändigt att dela upp en resultatuppsättning i mindre uppsättningar poster för bearbetning eller eftersom en resultatuppsättning skulle överskrida det maximala tillåtna värdet på 1 000 returnerade poster använder du växling. REST-APIQueryResponse:et innehåller värden som anger att en resultatuppsättning har brutits upp: resultTruncated och $skipToken. resultTruncated är ett booleskt värde som informerar konsumenten om det finns fler poster som inte returneras i svaret. Det här villkoret kan också identifieras när egenskapen count är mindre än egenskapen totalRecords. totalRecords definierar hur många poster som matchar frågan.

resultTruncated är true när det finns färre resurser tillgängliga än en fråga begär eller när växling är inaktiverad eller när växling inte är möjligt eftersom:

  • Frågan innehåller en eller sample/take -limitoperator.
  • Alla utdatakolumner är antingen dynamic eller null typ.

När resultTruncated är true$skipToken har egenskapen inte angetts.

I följande exempel visas hur du hoppar över de första 3 000 posterna och returnerar de first 1 000 posterna efter att posterna hoppat över med Azure CLI och Azure PowerShell:

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

Viktigt!

Svaret inkluderar $skipToken inte om:

  • Frågan innehåller en eller sample/take -limitoperator.
  • Alla utdatakolumner är antingen dynamic eller null typ.

Du kan till exempel gå till Nästa sidfråga i REST API-dokumenten.

Formatera resultat

Resultatet av en Resource Graph-fråga tillhandahålls i två format och Table ObjectArray. Formatet konfigureras med parametern resultFormat som en del av begärandealternativen. Formatet Table är standardvärdet för resultFormat.

Resultat från Azure CLI tillhandahålls som standard i JSON. Resultat i Azure PowerShell är ett PSResourceGraphResponse objekt, men de kan snabbt konverteras till JSON med hjälp av cmdleten ConvertTo-Jsondata egenskapen. För andra SDK:er kan frågeresultatet konfigureras för att mata ut ObjectArray formatet.

Format – tabell

Standardformatet, Table, returnerar resultat i ett JSON-format som utformats för att markera kolumndesignen och radvärdena för de egenskaper som returneras av frågan. Det här formatet liknar data som definierats i en strukturerad tabell eller ett kalkylblad med de kolumner som identifieras först och sedan varje rad som representerar data som är justerade mot dessa kolumner.

Här är ett exempel på ett frågeresultat med Table formateringen:

{
  "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"
}

Format – ObjectArray

Formatet ObjectArray returnerar också resultat i JSON-format. Den här designen justeras dock efter den nyckel/värde-parrelation som är gemensam i JSON där kolumnen och raddata matchas i matrisgrupper.

Här är ett exempel på ett frågeresultat med ObjectArray formateringen:

{
  "totalRecords": 47,
  "count": 1,
  "data": [
    {
      "name": "veryscaryvm2-nsg",
      "type": "microsoft.network/networksecuritygroups",
      "location": "eastus",
      "subscriptionId": "11111111-1111-1111-1111-111111111111"
    }
  ],
  "facets": [],
  "resultTruncated": "true"
}

Tidsgräns för fråga

Azure Resource Graph tillämpar en tidsgräns för frågor på 30 sekunder som överensstämmer med Azure Resource Manager.

Möjliga lösningar:

  • Försök igen med ett mindre omfång. Fråga till exempel färre prenumerationer.
  • Frågor som använder join bör ha mindre resultatuppsättningar till vänster i join.

Nästa steg