العمل مع مجموعات بيانات موارد Azure الكبيرة
تم تصميم Azure Resource Graph للعمل مع الموارد والحصول على معلومات حولها في بيئة Azure. يجعل Resource Graph الحصول على هذه البيانات سريعًا، حتى عند الاستعلام عن آلاف السجلات. يحتوي Resource Graph على العديد من الخيارات للعمل مع مجموعات البيانات الكبيرة هذه.
للحصول على إرشادات حول العمل مع الاستعلامات بتردد عال، انتقل إلى إرشادات للطلبات المقيدة.
حجم نتيجة مجموعة البيانات
بشكل افتراضي، يقيد Resource Graph أي استعلام لإرجاع 1000 سجل فقط. يحمي عنصر التحكم هذا كلا من المستخدم والخدمة من الاستعلامات غير المقصودة التي قد تؤدي إلى مجموعات بيانات كبيرة. غالبًا ما يحدث هذا الحدث عندما يقوم العميل بتجربة الاستعلامات للعثور على الموارد وتصفيتها بالطريقة التي تناسب احتياجاته الخاصة. يختلف عنصر التحكم هذا عن استخدام عوامل تشغيل top أو limit للغة Azure Data Explorer للحد من النتائج.
إشعار
عند استخدام first
، يوصى بترتيب النتائج بواسطة عمود واحد على الأقل باستخدام asc
أو desc
. دون الفرز، تكون النتائج التي تم إرجاعها عشوائية وغير قابلة للتكرار.
يمكن تجاوز الحد الافتراضي من خلال جميع أساليب التفاعل مع Resource Graph. توضح الأمثلة التالية كيفية تغيير حد حجم مجموعة البيانات إلى 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
في واجهة برمجة تطبيقات REST، يكون عنصر التحكم جزءا $top
من QueryRequestOptions
.
ويفوز عنصر التحكم الأكثر تقييدا . على سبيل المثال، إذا كان الاستعلام يستخدم top
عاملي التشغيل أو limit
وكان سيؤدي إلى سجلات أكثر من first
، فسيكون الحد الأقصى للسجلات التي تم إرجاعها مساويا ل first
. وبالمثل، إذا كان top
أو limit
أصغر من first
، فإن مجموعة السجلات التي تم إرجاعها ستكون القيمة الأصغر التي تم تكوينها بواسطة top
أو limit
.
first
المعلمة لها قيمة قصوى مسموح بها تبلغ 1000.
تقييد حجم نتيجة تصدير CSV
عند استخدام وظيفة تصدير القيمة المفصولة بفواصل (CSV) في Azure Resource Graph Explorer، تقتصر مجموعة النتائج على 55000 سجل. هذا القيد هو حد النظام الأساسي الذي لا يمكن تجاوزه عن طريق تقديم تذكرة دعم Azure.
لتنزيل نتائج CSV من مدخل Microsoft Azure، استعرض للوصول إلى Azure Resource Graph Explorer وقم بتشغيل استعلام. في شريط الأدوات، حدد Download as CSV.
تخطي السجلات
الخيار التالي للعمل مع مجموعات البيانات الكبيرة هو skip
عنصر التحكم. يسمح عنصر التحكم هذا للاستعلام الخاص بك بالقفز فوق عدد السجلات المحدد أو تخطيه قبل إرجاع النتائج. Skip
مفيد للاستعلامات التي تقوم بفرز النتائج بطريقة ذات معنى حيث يكون الهدف هو الحصول على السجلات في مكان ما في منتصف مجموعة النتائج. إذا كانت النتائج المطلوبة في نهاية مجموعة البيانات التي تم إرجاعها، فمن الأكثر كفاءة استخدام تكوين فرز مختلف واسترداد النتائج من أعلى مجموعة البيانات بدلاً من ذلك.
إشعار
عند استخدام skip
، يوصى بترتيب النتائج بواسطة عمود واحد على الأقل باستخدام asc
أو desc
. دون الفرز، تكون النتائج التي تم إرجاعها عشوائية وغير قابلة للتكرار. إذا تم limit
استخدام أو take
في الاستعلام، skip
يتم تجاهله.
توضح الأمثلة التالية كيفية تخطي أول 10 سجلات ينتج عنها استعلام، بدلاً من ذلك بدء مجموعة النتائج التي تم إرجاعها بالسجل الحادي عشر:
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
في واجهة برمجة تطبيقات REST، يكون عنصر التحكم جزءا $skip
من QueryRequestOptions
.
نتائج الترحيل
عندما يكون من الضروري تقسيم مجموعة نتائج إلى مجموعات أصغر من السجلات للمعالجة أو لأن مجموعة النتائج ستتجاوز القيمة القصوى المسموح بها وهي 1000 سجل تم إرجاعها، استخدم الترحيل. توفر واجهة برمجة تطبيقات QueryResponse
REST قيما تشير إلى أنه تم تقسيم مجموعة نتائج: resultTruncated
و$skipToken
. resultTruncated
هي قيمة منطقية تعلم المستهلك إذا كان هناك المزيد من السجلات التي لم يتم إرجاعها في الاستجابة. يمكن أيضا تحديد هذا الشرط عندما تكون الخاصية count
أقل من الخاصية totalRecords
. totalRecords
يحدد عدد السجلات التي تطابق الاستعلام.
resultTruncated
هو true
عندما تكون هناك موارد أقل متوفرة مما يطلبه الاستعلام أو عند تعطيل الترحيل أو عندما لا يكون الترحيل ممكنا بسبب:
- يحتوي الاستعلام على عامل تشغيل
limit
أوsample
/take
. - جميع أعمدة الإخراج إما
dynamic
أوnull
نوع.
عندما resultTruncated
يكون ، true
لم يتم تعيين الخاصية $skipToken
.
توضح الأمثلة التالية كيفية تخطي أول 3000 سجل وإرجاع first
1000 سجل بعد تخطي هذه السجلات باستخدام Azure CLI و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
هام
لن تتضمن الاستجابة $skipToken
ما يلي:
- يحتوي الاستعلام على عامل تشغيل
limit
أوsample
/take
. - جميع أعمدة الإخراج إما
dynamic
أوnull
نوع.
على سبيل المثال، انتقل إلى استعلام الصفحة التالية في مستندات REST API.
تنسيق النتائج
يتم توفير نتائج استعلام Resource Graph بتنسيقين، Table
و ObjectArray
. يتم تكوين التنسيق مع المعلمة resultFormat
كجزء من خيارات الطلب. Table
التنسيق هو القيمة الافتراضية ل resultFormat
.
يتم توفير النتائج من Azure CLI في JSON بشكل افتراضي. النتائج في Azure PowerShell هي عنصر PSResourceGraphResponse
، ولكن يمكن تحويلها بسرعة إلى JSON باستخدام ConvertTo-Json
cmdlet على الخاصية data
. بالنسبة إلى SDKs الأخرى، يمكن تكوين نتائج الاستعلام لإخراج ObjectArray
التنسيق.
تنسيق Table
يقوم التنسيق الافتراضي، Table
بإرجاع النتائج بتنسيق JSON مصمم لتمييز تصميم العمود وقيم الصف للخصائص التي تم إرجاعها بواسطة الاستعلام. يشبه هذا التنسيق إلى حد كبير البيانات كما هو محدد في جدول منظم أو جدول بيانات مع الأعمدة المحددة أولاً ثم كل صف يمثل البيانات التي تمت محاذاتها لتلك الأعمدة.
فيما يلي عينة من نتيجة استعلام مع 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
يقوم ObjectArray
التنسيق أيضا بإرجاع النتائج بتنسيق JSON. ومع ذلك، يتوافق هذا التصميم مع علاقة زوج المفتاح/القيمة الشائعة في JSON حيث تتم مطابقة بيانات العمود والصف في مجموعات الصفيف.
فيما يلي عينة من نتيجة استعلام مع ObjectArray
التنسيق:
{
"totalRecords": 47,
"count": 1,
"data": [
{
"name": "veryscaryvm2-nsg",
"type": "microsoft.network/networksecuritygroups",
"location": "eastus",
"subscriptionId": "11111111-1111-1111-1111-111111111111"
}
],
"facets": [],
"resultTruncated": "true"
}
مهلة الاستعلام
يفرض Azure Resource Graph مهلة استعلام 30 ثانية تتوافق مع Azure Resource Manager.
الحلول الممكنة:
- أعد محاولة الاستعلام باستخدام نطاق أصغر. على سبيل المثال، الاستعلام عن عدد أقل من الاشتراكات.
- يجب أن تحتوي الاستعلامات التي تستخدم
join
على مجموعات نتائج أصغر على الجانب الأيسر منjoin
.
الخطوات التالية
- تعرف على المزيد حول فهم لغة استعلام Azure Resource Graph.
- تعرف على المزيد عن كيفية استكشاف الموارد.