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 first
rekommenderar 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 Support biljett.
Om du vill ladda ned CSV-resultat från Azure Portal 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 skip
rekommenderar 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
-limit
operator. - Alla utdatakolumner är antingen
dynamic
ellernull
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
-limit
operator. - Alla utdatakolumner är antingen
dynamic
ellernull
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-Json
på data
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 ijoin
.
Nästa steg
- Läs mer om att förstå frågespråket i Azure Resource Graph.
- Läs mer om hur du utforskar resurser.