Bagikan melalui


Memfilter data menggunakan akselerasi kueri Azure Data Lake Storage

Artikel ini memperlihatkan kepada Anda cara menggunakan akselerasi kueri untuk mengambil subset data dari akun penyimpanan Anda.

Akselerasi kueri memungkinkan aplikasi dan kerangka analitik mengoptimalkan pemrosesan data secara dramatis dengan hanya mengambil data yang mereka perlukan untuk melakukan operasi tertentu. Untuk mempelajari selengkapnya, lihat Akselerasi Kueri Azure Data Lake Storage.

Prasyarat


Menyiapkan lingkungan Anda

Langkah 1: Instal paket

Instal modul Az versi 4.6.0 atau yang lebih tinggi.

Install-Module -Name Az -Repository PSGallery -Force

Untuk memperbarui dari az versi lama, jalankan perintah berikut:

Update-Module -Name Az

Langkah 2: Tambahkan pernyataan

Tidak berlaku

Mengambil data dengan menggunakan filter

Anda dapat menggunakan SQL untuk menentukan predikat filter baris dan proyeksi kolom dalam permintaan akselerasi kueri. Kode berikut ini meminta file CSV dalam penyimpanan dan mengembalikan semua baris data yang kolom ketiganya cocok dengan nilai Hemingway, Ernest.

  • Dalam kueri SQL, kata kunci BlobStorage digunakan untuk menunjukkan file yang sedang dikueri.

  • Referensi kolom ditentukan sebagai _N dengan kolom pertamanya _1. Jika file sumber berisi baris header, maka Anda bisa merujuk ke kolom dengan nama yang ditentukan di baris header.

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.csv"
Get-QueryCsv $ctx $container $blob "SELECT * FROM BlobStorage WHERE _3 = 'Hemingway, Ernest, 1899-1961'" $false

Mengambil kolom tertentu

Anda bisa mencakup hasil Anda ke subset kolom. Dengan begitu Anda hanya mengambil kolom yang diperlukan untuk melakukan kalkulasi tertentu. Ini meningkatkan kinerja aplikasi dan mengurangi biaya karena lebih sedikit data yang ditransfer melalui jaringan.

Catatan

Jumlah maksimum kolom yang dapat Anda cakup hasilnya adalah 49. Jika Anda memerlukan hasil Anda untuk berisi lebih dari 49 kolom, maka gunakan karakter kartubebas (*) untuk ekspresi SELECT (Misalnya: SELECT *).

Kode ini hanya mengambil kolom BibNum untuk semua buku dalam kumpulan data. Ini juga menggunakan informasi dari baris header dalam file sumber untuk merujuk kolom dalam kueri.

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

Kode berikut menggabungkan pemfilteran baris dan proyeksi kolom ke dalam kueri yang sama.

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')"

Langkah berikutnya