Delen via


Gegevens filteren met behulp van Azure Data Lake Storage-queryversnelling

In dit artikel leest u hoe u queryversnelling gebruikt om een subset met gegevens op te halen uit uw opslagaccount.

Met queryversnelling kunnen toepassingen en analyseframeworks de gegevensverwerking aanzienlijk optimaliseren door alleen de gegevens op te halen die ze nodig hebben om een bepaalde bewerking uit te voeren. Zie Azure Data Lake Storage-queryversnelling voor meer informatie.

Vereisten


Uw omgeving instellen

Stap 1: Pakketten installeren

Installeer de Az-moduleversie 4.6.0 of hoger.

Install-Module -Name Az -Repository PSGallery -Force

Voer de volgende opdracht uit om bij te werken vanuit een oudere versie van Az:

Update-Module -Name Az

Stap 2: Instructies toevoegen

Niet van toepassing

Gegevens ophalen met behulp van een filter

U kunt SQL gebruiken om de rijfilterpredicaten en kolomprojecties op te geven in een queryversnellingsaanvraag. Met de volgende code wordt een CSV-bestand in de opslag opgevraagd en worden alle rijen met gegevens geretourneerd waarbij de derde kolom overeenkomt met de waarde Hemingway, Ernest.

  • In de SQL-query wordt het trefwoord BlobStorage gebruikt om het bestand aan te geven dat wordt opgevraagd.

  • Kolomverwijzingen worden opgegeven als _N waar de eerste kolom is _1. Als het bronbestand een veldnamenrij bevat, kunt u verwijzen naar kolommen met de naam die is opgegeven in de veldnamenrij.

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

Specifieke kolommen ophalen

U kunt uw resultaten instellen op een subset van kolommen. Op die manier haalt u alleen de kolommen op die nodig zijn om een bepaalde berekening uit te voeren. Dit verbetert de prestaties van toepassingen en vermindert de kosten omdat er minder gegevens via het netwerk worden overgedragen.

Notitie

Het maximum aantal kolommen waarop u het bereik van uw resultaten kunt bepalen is 49. Als u wilt dat uw resultaten meer dan 49 kolommen bevatten, gebruikt u een jokerteken (*) voor de SELECT-expressie (bijvoorbeeld: SELECT *).

Met deze code wordt alleen de BibNum kolom opgehaald voor alle boeken in de gegevensset. Ook wordt de informatie uit de veldnamenrij in het bronbestand gebruikt om te verwijzen naar kolommen in de query.

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

De volgende code combineert rijfilters en kolomprojecties in dezelfde query.

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

Volgende stappen