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 korzystania z funkcji 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 , wygra. Jeśli na przykład zapytanie używa operatorów górnego lub limitu i spowodowałoby więcej rekordów niż Pierwszy, zwracane maksymalne rekordy będą równe pierwszej. Podobnie, jeśli górny lub limit jest mniejszy niż Pierwszy, zwracany zestaw rekordów będzie mniejszą wartością skonfigurowaną przez górną lub maksymalną.

Pierwszy parametr 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. Jest to limit 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 kliknij pozycję Pobierz jako plik CSV.

Pomijanie rekordów

Następną opcją pracy z dużymi zestawami danych jest kontrolka Pomiń . Ta kontrolka umożliwia zapytanie przeskoczyć lub pominąć zdefiniowaną liczbę rekordów przed zwróceniem wyników. Funkcja Pomiń jest przydatna 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 korzystania z funkcji Pomiń zaleca się uporządkowanie wyników przez co najmniej jedną kolumnę z wartością asc lub desc. Bez sortowania zwracane wyniki są losowe i nie są powtarzalne. Jeśli limit lub take są używane w zapytaniu, pomiń jest ignorowany.

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. Funkcja QueryResponse interfejsu APIREST udostępnia wartości wskazujące, że zestaw wyników został podzielony: resultTruncated i $skipToken. resultTruncated jest wartością logiczną, która informuje użytkownika, jeśli w odpowiedzi nie jest zwracanych więcej rekordów. Ten warunek można również zidentyfikować, gdy właściwość count jest mniejsza niż właściwość totalRecords . totalRecords definiuje liczbę rekordów pasujących do zapytania.

resultTruncated ma wartość true , jeśli 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/sampletake.
  • Wszystkie kolumny wyjściowe są albo nulldynamic typami.

Gdy parametr resultTruncated ma wartość true, właściwość $skipToken nie jest ustawiona.

W poniższych przykładach pokazano, jak pominąć pierwsze 3000 rekordów i zwrócić pierwsze 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ć $skipToken , jeśli:

  • Zapytanie zawiera limit operator or/sampletake.
  • Wszystkie kolumny wyjściowe są albo nulldynamic typami.

Aby zapoznać się z przykładem, zobacz Następne zapytanie dotyczące 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 tabeli jest wartością domyślną elementu resultFormat.

Wyniki z interfejsu wiersza polecenia platformy Azure są domyślnie udostępniane w formacie JSON. Wyniki w programie Azure PowerShell to obiekt PSResourceGraphResponse , ale można je szybko przekonwertować na format JSON przy użyciu ConvertTo-Json polecenia cmdlet we właściwości Data . W przypadku innych zestawów SDK wyniki zapytania można skonfigurować do wyprowadzania formatu ObjectArray .

Format — tabela

Domyślny format Tabela 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 tabeli :

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

Następne kroki

  • Zobacz język używany w zapytaniach startowych.
  • Zobacz zaawansowane zastosowania w zapytaniach zaawansowanych.
  • Dowiedz się więcej o sposobie eksplorowania zasobów.