共用方式為


使用 Azure Data Lake Storage 查詢加速篩選資料

本文說明如何使用查詢加速從您的儲存體帳戶擷取資料子集。

查詢加速可讓應用程式和分析架構只抓取執行指定作業所需的資料,將資料處理大幅最佳化。 若要深入了解,請參閱Azure Data Lake Storage 查詢加速

必要條件


設定您的環境

步驟 1:安裝套件

安裝 Az AD 模組 4.6.0 版或更新版本。

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
    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

擷取特定資料行

您可以將結果的範圍限定為資料行的子集。 如此一來,您就只會擷取執行指定計算所需的資料行。 這可改善應用程式效能並降低成本,因為透過網路傳輸的資料較少。

注意

您可以將結果範圍的最大資料行數目設為 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')"

下一步