العمل مع مجموعات بيانات موارد 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 أو top.

المعلمة الأولى لها قيمة قصوى مسموح بها تبلغ 1000.

تقييد حجم نتيجة تصدير CSV

عند استخدام وظيفة تصدير القيمة المفصولة بفواصل (CSV) في Azure Resource Graph Explorer، تقتصر مجموعة النتائج على 55000 سجل. هذا حد النظام الأساسي الذي لا يمكن تجاوزه عن طريق تقديم تذكرة دعم Azure.

لتنزيل نتائج CSV من مدخل Microsoft Azure، استعرض للوصول إلى Azure Resource Graph Explorer وقم بتشغيل استعلام. على شريط الأدوات، انقر فوق تنزيل بتنسيق 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 سجل تم إرجاعها، استخدم الترحيل. يوفر الاستعلام REST APIQueryResponse قيمًا للإشارة إلى أنه تم تقسيم مجموعة النتائج: resultTruncated و$skipToken. resultTruncated هي قيمة منطقية تعلم المستهلك إذا كان هناك المزيد من السجلات التي لم يتم إرجاعها في الاستجابة. يمكن أيضًا تحديد هذا الشرط عندما تكون خاصية العد أقل من خاصية totalRecords. يحدد totalRecords عدد السجلات التي تطابق الاستعلام.

تكون resultTruncatedصحيحة عندما يكون هناك موارد أقل متوفرة مما يطلبه الاستعلام أو عند تعطيل الترحيل أو عندما لا يكون الترحيل ممكنًا بسبب:

  • يحتوي الاستعلام على عامل تشغيل limit أوsample/take.
  • جميع أعمدة الإخراج تكون من نوع إما dynamic أو null.

عندما تكون resultTruncatedصحيحة، لا يتم تعيين الخاصية $skipToken.

توضح الأمثلة التالية كيفية تخطي أول 3000 سجل وإرجاع أول 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.

تنسيق النتائج

يتم توفير نتائج استعلام Resource Graph بتنسيقين، الجدول و ObjectArray. يتم تكوين التنسيق باستخدام معلمة resultFormat كجزء من خيارات الطلب. تنسيق الجدول هو القيمة الافتراضية لـ resultFormat.

يتم توفير النتائج من Azure CLI في JSON بشكل افتراضي. النتائج في Azure PowerShell هي عنصر PSResourceGraphResponse، ولكن يمكن تحويلها بسرعة إلى JSON باستخدام ConvertTo-Json cmdlet على الخاصية Data. بالنسبة إلى SDKs الأخرى، يمكن تكوين نتائج الاستعلام لإخراج تنسيق ObjectArray.

تنسيق 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"
}

الخطوات التالية