Praca z dużymi zestawami danych zasobów platformy Azure
Usługa Azure Resource Graph jest przeznaczona do pracy z zasobami i uzyskiwania informacji o zasobach w środowisku platformy Azure. Usługa Resource Graph sprawia, że pobieranie tych danych jest szybkie, nawet w przypadku wykonywania zapytań dotyczących tysięcy rekordów. Usługa Resource Graph oferuje kilka opcji pracy z tymi dużymi zestawami danych.
Aby uzyskać wskazówki dotyczące pracy z zapytaniami o wysokiej częstotliwości, zobacz Wskazówki dotyczące żądań ograniczonych.
Rozmiar wynikowego zestawu danych
Domyślnie usługa Resource Graph ogranicza wszystkie zapytania do zwracania tylko 1000 rekordów. Ten mechanizm kontroli chroni użytkownika i usługę przed niezamierzonymi zapytaniami, które mogłyby spowodować zwrócenie dużych zestawów danych. Taka sytuacja występuje najczęściej wtedy, gdy klient eksperymentuje z zapytaniami, aby znaleźć i odfiltrować zasoby zgodnie ze swoimi konkretnymi potrzebami. Ten mechanizm kontroli różni się od ograniczania wyników za pomocą operatora języka top lub limit w usłudze Azure Data Explorer.
Uwaga
W przypadku używania polecenia first
zaleca się porządkowenie wyników przez co najmniej jedną kolumnę z elementem asc
lub desc
. Bez sortowania zwracane wyniki są losowe i nie są powtarzalne.
Limit domyślny można przesłonić w przypadku wszystkich metod interakcji z usługą Resource Graph. W poniższych przykładach pokazano, jak zmienić limit rozmiaru zestawu danych na 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
W interfejsie API REST kontrolka jest $top
i jest częścią elementu QueryRequestOptions
.
Kontrolka, która jest najbardziej restrykcyjna, wygrywa. Jeśli na przykład zapytanie używa top
operatorów lub limit
i spowodowałoby więcej rekordów niż first
, zwracane maksymalne rekordy będą równe first
. Podobnie, jeśli top
lub limit
jest mniejszy niż first
, zwrócony zestaw rekordów będzie mniejszą wartością skonfigurowaną przez top
lub limit
.
Parametr first
ma maksymalną dozwoloną wartość 1000.
Ograniczenie rozmiaru wyniku eksportu woluminu CSV
W przypadku korzystania z funkcji eksportowania wartości rozdzielanych przecinkami (CSV) eksploratora usługi Azure Resource Graph zestaw wyników jest ograniczony do 55 000 rekordów. To ograniczenie jest ograniczeniem platformy, którego nie można zastąpić przez złożenie biletu pomoc techniczna platformy Azure.
Aby pobrać wyniki csv z witryny Azure Portal, przejdź do Eksploratora usługi Azure Resource Graph i uruchom zapytanie. Na pasku narzędzi wybierz pozycję Pobierz jako plik CSV.
Pomijanie rekordów
Kolejną opcją pracy z dużymi zestawami danych jest kontrolka skip
. Ta kontrolka umożliwia zapytanie przeskoczyć lub pominąć zdefiniowaną liczbę rekordów przed zwróceniem wyników. Skip
jest przydatny w przypadku zapytań sortujących wyniki w zrozumiały sposób, w którym intencją jest uzyskanie rekordów gdzieś w środku zestawu wyników. Jeśli potrzebne wyniki znajdują się na końcu zwróconego zestawu danych, bardziej wydajne jest użycie innej konfiguracji sortowania i pobranie wyników z górnej części zestawu danych.
Uwaga
W przypadku używania polecenia skip
zaleca się porządkowenie wyników przez co najmniej jedną kolumnę z elementem asc
lub desc
. Bez sortowania zwracane wyniki są losowe i nie są powtarzalne. Jeśli limit
zapytanie lub take
jest używane, skip
jest ignorowane.
W poniższych przykładach pokazano, jak pominąć pierwsze 10 rekordów, w wyniku których zapytanie spowoduje, zamiast tego uruchomienie zwróconego zestawu wyników z rekordem 11:
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
W interfejsie API REST kontrolka jest $skip
i jest częścią elementu QueryRequestOptions
.
Stronicowanie wyników
Gdy konieczne jest podzielenie zestawu wyników na mniejsze zestawy rekordów do przetwarzania lub przekroczenie maksymalnej dozwolonej wartości 1000 zwracanych rekordów, użyj stronicowania. Interfejs API QueryResponse
REST udostępnia wartości wskazujące, że zestaw wyników został podzielony: resultTruncated
i $skipToken
. resultTruncated
jest wartością logiczną, która informuje konsumenta, jeśli istnieje więcej rekordów, które nie zostały zwrócone w odpowiedzi. Ten warunek można również zidentyfikować, gdy właściwość count
jest mniejsza niż właściwość totalRecords
. totalRecords
określa liczbę rekordów pasujących do zapytania.
resultTruncated
występuje true
, gdy istnieje mniej dostępnych zasobów niż zapytanie żąda lub gdy stronicowanie jest wyłączone lub gdy stronicowanie nie jest możliwe, ponieważ:
- Zapytanie zawiera
limit
operator or/sample
take
. - Wszystkie kolumny wyjściowe są albo
dynamic
null
typami.
Gdy resultTruncated
wartość to true
, $skipToken
właściwość nie jest ustawiona.
W poniższych przykładach pokazano, jak pominąć pierwsze 3000 rekordów i zwrócić first
1000 rekordów po pominięcia tych rekordów za pomocą interfejsu wiersza polecenia platformy Azure i programu 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
Ważne
Odpowiedź nie będzie zawierać następujących:$skipToken
- Zapytanie zawiera
limit
operator or/sample
take
. - Wszystkie kolumny wyjściowe są albo
dynamic
null
typami.
Na przykład przejdź do pozycji Następne zapytanie strony w dokumentacji interfejsu API REST.
Formatowanie wyników
Wyniki zapytania usługi Resource Graph są dostępne w dwóch formatach: Table
i ObjectArray
. Format jest konfigurowany przy użyciu parametru resultFormat
w ramach opcji żądania. Format Table
jest wartością domyślną dla .resultFormat
Wyniki z interfejsu wiersza polecenia platformy Azure są domyślnie udostępniane w formacie JSON. Wyniki w programie Azure PowerShell są obiektem PSResourceGraphResponse
, ale można je szybko przekonwertować na kod JSON przy użyciu ConvertTo-Json
polecenia cmdlet w data
właściwości . W przypadku innych zestawów SDK wyniki zapytania można skonfigurować do wyprowadzania ObjectArray
formatu.
Format — tabela
Domyślny format Table
, zwraca wyniki w formacie JSON zaprojektowanym w celu wyróżnienia wartości projektu kolumny i wiersza właściwości zwracanych przez zapytanie. Ten format jest bardzo podobny do danych zdefiniowanych w tabeli ustrukturyzowanej lub arkuszu kalkulacyjnym z kolumnami zidentyfikowanymi najpierw, a następnie każdy wiersz reprezentujący dane wyrównane do tych kolumn.
Oto przykład wyniku zapytania z formatowaniem 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"
}
Format — ObjectArray
Format ObjectArray
zwraca również wyniki w formacie JSON. Jednak ten projekt jest zgodny z relacją pary klucz/wartość typową w formacie JSON, w której kolumna i dane wierszy są dopasowywane w grupach tablic.
Oto przykład wyniku zapytania z formatowaniem ObjectArray
:
{
"totalRecords": 47,
"count": 1,
"data": [
{
"name": "veryscaryvm2-nsg",
"type": "microsoft.network/networksecuritygroups",
"location": "eastus",
"subscriptionId": "11111111-1111-1111-1111-111111111111"
}
],
"facets": [],
"resultTruncated": "true"
}
Limit czasu zapytania
Usługa Azure Resource Graph wymusza limit czasu zapytania 30 sekund, który jest zgodny z usługą Azure Resource Manager.
Możliwe rozwiązania:
- Spróbuj ponownie wykonać zapytanie przy użyciu mniejszego zakresu. Na przykład wykonaj zapytanie o mniej subskrypcji.
- Zapytania, które używają
join
, powinny mieć mniejsze zestawy wyników po lewej stronie obiektujoin
.