Dela via


Filtrera data med hjälp av Azure Data Lake Storage-frågeacceleration

Den här artikeln visar hur du använder frågeacceleration för att hämta en delmängd data från ditt lagringskonto.

Med frågeacceleration kan program och analysramverk optimera databearbetningen dramatiskt genom att endast hämta de data som krävs för att utföra en viss åtgärd. Mer information finns i Azure Data Lake Storage Query Acceleration.

Förutsättningar

  • Du behöver en Azure-prenumeration för att få åtkomst till Azure Storage. Om du inte redan har en prenumeration skapar du ett kostnadsfritt konto innan du börjar.

  • Ett allmänt v2-lagringskonto . se Skapa ett lagringskonto.

  • Dubbel kryptering stöds inte.

  • Om du kör frågor mot en JSON-fil bör varje poststorlek i den här filen vara mindre än 1 MB.

  • Välj en flik för att visa eventuella SDK-specifika krav.

    Inte tillämpligt


Konfigurera din miljö

Steg 1: Installera paket

Installera Az-modulen version 4.6.0 eller senare.

Install-Module -Name Az -Repository PSGallery -Force

Om du vill uppdatera från en äldre version av Az kör du följande kommando:

Update-Module -Name Az

Steg 2: Lägg till instruktioner

Inte tillämpligt

Hämta data med hjälp av ett filter

Du kan använda SQL för att ange radfilterpredikat och kolumnprojektioner i en begäran om frågeacceleration. Följande kod frågar en CSV-fil i lagringen och returnerar alla rader med data där den tredje kolumnen matchar värdet Hemingway, Ernest.

  • I SQL-frågan används nyckelordet BlobStorage för att ange filen som efterfrågas.

  • Kolumnreferenser anges som _N där den första kolumnen är _1. Om källfilen innehåller en rubrikrad kan du referera till kolumner med det namn som anges i rubrikraden.

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

Hämta specifika kolumner

Du kan begränsa resultatet till en delmängd kolumner. På så sätt hämtar du bara de kolumner som behövs för att utföra en viss beräkning. Detta förbättrar programmets prestanda och minskar kostnaden eftersom mindre data överförs via nätverket.

Kommentar

Det maximala antalet kolumner som du kan begränsa dina resultat till är 49. Om du behöver dina resultat för att innehålla fler än 49 kolumner använder du ett jokertecken (*) för SELECT-uttrycket (till exempel: SELECT *).

Den här koden hämtar endast BibNum kolumnen för alla böcker i datauppsättningen. Den använder också informationen från rubrikraden i källfilen för att referera till kolumner i frågan.

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

Följande kod kombinerar radfiltrering och kolumnprojektioner i samma fråga.

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

Nästa steg