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

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