Udostępnij za pośrednictwem


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 firstzaleca 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 skipzaleca 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 APIQueryResponse 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/sampletake.
  • Wszystkie kolumny wyjściowe są albo dynamicnull 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/sampletake.
  • Wszystkie kolumny wyjściowe są albo dynamicnull 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 obiektu join.

Następne kroki

  • Dowiedz się więcej na temat języka zapytań usługi Azure Resource Graph.
  • Dowiedz się więcej o sposobie eksplorowania zasobów.