Freigeben über


Filtern von Daten mithilfe der Azure Data Lake Storage-Abfragebeschleunigung

In diesem Artikel wird erläutert, wie Sie die Abfragebeschleunigung verwenden, um eine Teilmenge von Daten aus Ihrem Speicherkonto abzurufen.

Mit der Abfragebeschleunigung können Anwendungen und Analyseframeworks die Datenverarbeitung erheblich optimieren, indem nur die Daten abgerufen werden, die sie zum Ausführen eines bestimmten Vorgangs benötigen. Weitere Informationen finden Sie unter Azure Data Lake Storage Query Acceleration.

Voraussetzungen

  • Sie benötigen ein Azure-Abonnement, um auf Azure Storage zuzugreifen. Wenn Sie noch kein Abonnement haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

  • Ein allgemeines v2-Speicherkonto . siehe Erstellen eines Speicherkontos.

  • Doppelte Verschlüsselung wird nicht unterstützt.

  • Wenn Sie eine JSON-Datei abfragen, sollte jede Datensatzgröße in dieser Datei kleiner als 1 MB sein.

  • Wählen Sie eine Registerkarte aus, um alle SDK-spezifischen Voraussetzungen anzuzeigen.

    Nicht anwendbar


Richten Sie Ihre Umgebung ein

Schritt 1: Installieren von Paketen

Installieren Sie die Az-Modulversion 4.6.0 oder höher.

Install-Module -Name Az -Repository PSGallery -Force

Um von einer älteren Version von Az zu aktualisieren, führen Sie den folgenden Befehl aus:

Update-Module -Name Az

Schritt 2: Hinzufügen von Aussagen

Nicht anwendbar

Abrufen von Daten mithilfe eines Filters

Sie können SQL verwenden, um die Zeilenfilter-Prädikate und Spaltenprojektionen in einer Abfragebeschleunigungsanforderung anzugeben. Der folgende Code fragt eine CSV-Datei im Speicher ab und gibt alle Datenzeilen zurück, in denen die dritte Spalte mit dem Wert Hemingway, Ernestübereinstimmt.

  • In der SQL-Abfrage wird das Schlüsselwort BlobStorage verwendet, um die datei anzuzeigen, die abgefragt wird.

  • Spaltenverweise werden als _N angegeben, wobei die erste Spalte _1 ist. Wenn die Quelldatei eine Kopfzeile enthält, können Sie anhand des Namens, der in der Kopfzeile angegeben ist, auf Spalten verweisen.

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

Abrufen bestimmter Spalten

Sie können die Ergebnisse auf eine Teilmenge von Spalten beschränken. Auf diese Weise rufen Sie nur die Spalten ab, die zum Ausführen einer bestimmten Berechnung erforderlich sind. Dies verbessert die Anwendungsleistung und verringert die Kosten, da weniger Daten über das Netzwerk übertragen werden.

Hinweis

Die maximale Anzahl von Spalten, auf die Sie ihre Ergebnisse beschränken können, beträgt 49. Wenn Die Ergebnisse mehr als 49 Spalten enthalten müssen, verwenden Sie für den SELECT-Ausdruck ein Wildcardzeichen (*z. B.: SELECT *).

Dieser Code ruft nur die BibNum Spalte für alle Bücher im Dataset ab. Außerdem werden die Informationen aus der Kopfzeile in der Quelldatei verwendet, um auf Spalten in der Abfrage zu verweisen.

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

Der folgende Code kombiniert Zeilenfilterung und Spaltenprojektionen in derselben Abfrage.

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ächste Schritte