Bekerja dengan himpunan data sumber daya Azure besar

Azure Resource Graph dirancang untuk bekerja dengan dan mendapatkan informasi tentang sumber daya di lingkungan Azure Anda. Azure Resource Graph membuat data ini menjadi cepat, bahkan saat meng-kueri ribuan rekaman. Azure Resource Graph memiliki beberapa opsi untuk bekerja dengan himpunan data besar ini.

Untuk panduan tentang bekerja dengan kueri pada frekuensi tinggi, lihat Panduan untuk permintaan yang dibatasi.

Ukuran hasil himpunan data

Secara default, Azure Resource Graph membatasi kueri apa pun agar hanya mengembalikan 100 rekaman. Kontrol ini melindungi pengguna dan layanan dari kueri yang tidak disengaja yang akan menghasilkan himpunan data besar. Peristiwa ini paling sering terjadi sebagai pelanggan adalah bereksperimen dengan pertanyaan untuk menemukan dan memfilter sumber daya dengan cara yang sesuai dengan kebutuhan khusus mereka. Kontrol ini berbeda dengan menggunakan operator bahasa komputer Azure Data Explorer teratas atau batasi untuk membatasi hasilnya.

Catatan

Saat menggunakan Pertama, disarankan untuk memesan hasilnya setidaknya satu kolom dengan asc atau desc. Tanpa pengurutan, hasil yang dikembalikan acak dan tidak dapat diulang.

Batas default dapat ditimpa melalui semua metode berinteraksi dengan Azure Resource Graph. Contoh berikut menunjukkan cara mengubah batas ukuran himpunan data menjadi 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

Dalam REST API, kontrol berada di $top dan merupakan bagian dari QueryRequestOptions.

Kontrol yang paling ketat akan menang. Misalnya, jika kueri Anda menggunakan operator teratas atau batas dan akan menghasilkan lebih banyak rekaman daripada yang Pertama, rekaman maksimum yang dikembalikan akan sama dengan Pertama. Demikian juga, jika atas atau batas lebih kecil dari yang Pertama, kumpulan catatan yang dikembalikan akan menjadi nilai yang lebih kecil dari yang dikonfigurasi oleh atas atau batas.

Yang pertama memiliki nilai yang diizinkan maksimum sebesar 1000.

Melompati rekaman

Opsi berikutnya untuk bekerja dengan kumpulan data besar adalah kontrol Lompati. Kontrol ini memungkinkan kueri Anda melompati atau melewati jumlah rekaman yang ditentukan sebelum mengembalikan hasilnya. Lompati berguna untuk kueri yang mengurutkan menghasilkan cara yang bermakna di mana niatnya adalah untuk mendapatkan catatan di suatu tempat di tengah-tengah kumpulan hasil. Jika hasil yang diperlukan berada di akhir kumpulan data yang dikembalikan, lebih efisien untuk menggunakan konfigurasi pengurutan yang berbeda dan mengambil hasil dari bagian atas kumpulan data.

Catatan

Saat menggunakan Lompati, disarankan untuk memesan hasilnya setidaknya satu kolom dengan asc atau desc. Tanpa pengurutan, hasil yang dikembalikan acak dan tidak dapat diulang. Jika limit atau take digunakan dalam kueri, Lompati diabaikan.

Contoh berikut memperlihatkan cara melompati 10 rekaman pertama yang akan dihasilkan kueri, sebagai gantinya memulai hasil yang dikembalikan yang diatur dengan rekaman ke-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

Dalam REST API,kontrol berada di $skip dan merupakan bagian dari QueryRequestOptions.

Hasil penomoran

Bila perlu untuk memecah hasil yang ditetapkan ke dalam kumpulan rekaman yang lebih kecil untuk diproses atau karena kumpulan hasil akan melebihi nilai maksimum yang diizinkan dari 1000 rekaman yang dikembalikan, gunakan penomoran. REST APIQueryResponse menyediakan nilai untuk menunjukkan tataan hasil yang ditetapkan telah dipecah: resultTruncated dan $skipToken. resultTruncated adalah nilai Boolean yang menginformasikan kepada konsumen jika ada lebih banyak catatan yang tidak dikembalikan dalam respons. Kondisi ini juga dapat diidentifikasi ketika properti hitungan kurang dari properti totalRecords. totalRecords menentukan berapa banyak rekaman yang cocok dengan kueri.

resultTruncated adalah true jika sumber daya yang tersedia lebih sedikit daripada yang diminta kueri atau ketika paging dinonaktifkan atau ketika paging tidak dimungkinkan karena:

  • Kueri berisi operator limit atau sample/take.
  • Semua kolom output bertipe dynamic atau null.

Ketika resultTruncated adalah true, properti $skipToken tidak diatur.

Contoh berikut menunjukkan cara melompati 3.000 rekaman pertama dan mengembalikan 1.000 rekaman pertama setelah rekaman tersebut dilompati dengan Azure CLI dan 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

Penting

Respons tidak akan menyertakan $skipToken jika:

  • Kueri berisi operator limit atau sample/take.
  • Semua kolom output bertipe dynamic atau null.

Misalnya, lihat Kueri halaman berikutnya di dokumen REST API.

Hasil pemformatan

Hasil kueri Azure Resource Graph disediakan dalam dua format, Tabel dan ObjectArray. Format dikonfigurasi dengan parameter resultFormat sebagai bagian dari opsi permintaan. Format Tabel adalah nilai default untuk resultFormat.

Hasil dari Azure CLI disediakan di JSON secara default. Hasil di Azure PowerShell adalah objek PSResourceGraphResponse, tetapi dapat dengan cepat dikonversi ke JSON menggunakan cmdlet ConvertTo-Json pada roperti Data. Untuk SDK lainnya, hasil kueri dapat dikonfigurasi untuk menghasilkan format ObjectArray.

Format - Tabel

Format default, Tabel, mengembalikan hasil dalam format JSON yang dirancang untuk menyoroti desain kolom dan nilai baris properti yang dikembalikan oleh kueri. Format ini sangat menyerupai data seperti yang ditentukan dalam tabel terstruktur atau lembar bentang dengan kolom yang diidentifikasi terlebih dahulu lalu setiap baris yang mewakili data yang diratakan ke kolom tersebut.

Berikut ini contoh hasil kueri dengan pemformatan Tabel:

{
    "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 juga mengembalikan hasil dalam format JSON. Namun, desain ini selaras dengan hubungan pasangan kunci/nilai yang umum di JSON di mana kolom dan data baris dicocokkan dalam grup array.

Berikut ini contoh hasil kueri dengan pemformatan ObjectArray:

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

Berikut adalah beberapa contoh pengaturan resultFormat untuk menggunakan format ObjectArray:

var requestOptions = new QueryRequestOptions( resultFormat: ResultFormat.ObjectArray);
var request = new QueryRequest(subscriptions, "Resources | limit 1", options: requestOptions);
request_options = QueryRequestOptions(
    result_format=ResultFormat.object_array
)
request = QueryRequest(query="Resources | limit 1", subscriptions=subs_list, options=request_options)
response = client.resources(request)

Langkah berikutnya