مشاركة عبر


تصفية البيانات باستخدام تسريع استعلام Azure Data Lake Storage

توضح لك هذه المقالة كيفية استخدام تسريع الاستعلام لاسترداد مجموعة فرعية من البيانات من حساب التخزين الخاص بك.

يتيح تسريع الاستعلام للتطبيقات وأطر عمل التحليلات تحسين معالجة البيانات بشكل كبير عن طريق استرداد البيانات التي يحتاجونها فقط لتنفيذ عملية معينة. لمعرفة المزيد، راجع تسريع استعلام Azure Data Lake Storage.

المتطلبات الأساسية

  • للوصول إلى Azure Storage، يلزم الحصول على أحد اشتراكات Azure. إذا لم يكن لديك اشتراك بالفعل، فأنشئ حسابًا مجانيًا قبل أن تبدأ.

  • حساب تخزين v2 للأغراض العامة . راجع إنشاء حساب تخزين.

  • التشفير المزدوج غير مدعوم.

  • إذا كنت تستعلم عن ملف JSON، فيجب أن يكون حجم كل سجل في هذا الملف أصغر من 1 ميغابايت.

  • اختر علامة تبويب لعرض أي متطلبات أساسية خاصة بحزمة تطوير البرامج (SDK).

    غير قابل للتطبيق


إعداد بيئتك

الخطوة 1: تثبيت الحزم

قم بتثبيت الإصدار 4.6.0 من الوحدة النمطية Az أو أعلى.

Install-Module -Name Az -Repository PSGallery -Force

للتحديث من إصدار أقدم من Az، قم بتشغيل الأمر التالي:

Update-Module -Name Az

الخطوة 2: إضافة عبارات

غير قابل للتطبيق

استرداد البيانات باستخدام عامل تصفية

يمكنك استخدام SQL لتحديد مسندات تصفية الصفوف وإسقاطات الأعمدة في طلب تسريع الاستعلام. تستعلم التعليمات البرمجية التالية عن ملف CSV في التخزين وترجع جميع صفوف البيانات حيث يطابق العمود الثالث القيمة Hemingway, Ernest.

  • في استعلام SQL، يتم استخدام الكلمة BlobStorage الأساسية للإشارة إلى الملف الذي يتم الاستعلام عنه.

  • يتم تحديد مراجع الأعمدة كمكان _N وجود _1العمود الأول. إذا كان الملف المصدر يحتوي على صف رأس، فيمكنك الرجوع إلى الأعمدة بالاسم المحدد في صف الرأس.

Function Get-QueryCsv($ctx, $container, $blob, $query, $hasheaders) {
    $tempfile = New-TemporaryFile
    $informat = New-AzStorageBlobQueryConfig -AsCsv -HasHeader:$hasheaders -RecordSeparator "`n" -ColumnSeparator "," -QuotationCharacter """" -EscapeCharacter "\"
    Get-AzStorageBlobQueryResult -Context $ctx -Container $container -Blob $blob -InputTextConfiguration $informat -OutputTextConfiguration (New-AzStorageBlobQueryConfig -AsCsv -HasHeader -RecordSeparator "`n" -ColumnSeparator "," -QuotationCharacter """" -EscapeCharacter "\") -ResultFile $tempfile.FullName -QueryString $query -Force
    Get-Content $tempfile.FullName
}

$container = "data"
$blob = "csv/csv-general/seattle-library.csv"
Get-QueryCsv $ctx $container $blob "SELECT * FROM BlobStorage WHERE _3 = 'Hemingway, Ernest, 1899-1961'" $false

استرداد أعمدة محددة

يمكنك تحديد نطاق نتائجك إلى مجموعة فرعية من الأعمدة. بهذه الطريقة يمكنك استرداد الأعمدة المطلوبة فقط لإجراء عملية حسابية معينة. يؤدي ذلك إلى تحسين أداء التطبيق وتقليل التكلفة لأنه يتم نقل بيانات أقل عبر الشبكة.

إشعار

الحد الأقصى لعدد الأعمدة التي يمكنك تحديد نطاق نتائجك إليها هو 49. إذا كنت تريد أن تحتوي نتائجك على أكثر من 49 عمودا، فاستخدم حرف بدل (*) للتعبير SELECT (على سبيل المثال: SELECT *).

يسترد هذا الرمز العمود BibNum فقط لجميع الكتب في مجموعة البيانات. كما أنه يستخدم المعلومات من صف الرأس في الملف المصدر للإشارة إلى الأعمدة في الاستعلام.

Function Get-QueryCsv($ctx, $container, $blob, $query, $hasheaders) {
    $tempfile = New-TemporaryFile
    $informat = New-AzStorageBlobQueryConfig -AsCsv -HasHeader:$hasheaders
    Get-AzStorageBlobQueryResult -Context $ctx -Container $container -Blob $blob -InputTextConfiguration $informat -OutputTextConfiguration (New-AzStorageBlobQueryConfig -AsCsv -HasHeader) -ResultFile $tempfile.FullName -QueryString $query -Force
    Get-Content $tempfile.FullName
}

$container = "data"
$blob = "csv/csv-general/seattle-library-with-headers.csv"
Get-QueryCsv $ctx $container $blob "SELECT BibNum FROM BlobStorage" $true

تجمع التعليمات البرمجية التالية بين تصفية الصفوف وإسقاطات الأعمدة في نفس الاستعلام.

Get-QueryCsv $ctx $container $blob $query $true

Function Get-QueryCsv($ctx, $container, $blob, $query, $hasheaders) {
    $tempfile = New-TemporaryFile
    $informat = New-AzStorageBlobQueryConfig -AsCsv -HasHeader:$hasheaders
    Get-AzStorageBlobQueryResult -Context $ctx -Container $container -Blob $blob -InputTextConfiguration $informat -OutputTextConfiguration (New-AzStorageBlobQueryConfig -AsCsv -HasHeader) -ResultFile $tempfile.FullName -QueryString $query -Force
    Get-Content $tempfile.FullName
}

$container = "data"
$query = "SELECT BibNum, Title, Author, ISBN, Publisher, ItemType
            FROM BlobStorage
            WHERE ItemType IN
                ('acdvd', 'cadvd', 'cadvdnf', 'calndvd', 'ccdvd', 'ccdvdnf', 'jcdvd', 'nadvd', 'nadvdnf', 'nalndvd', 'ncdvd', 'ncdvdnf')"

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