Udostępnij za pomocą


Filtrowanie danych przy użyciu przyspieszania zapytań usługi Azure Data Lake Storage

W tym artykule pokazano, jak używać przyspieszenia zapytań do pobierania podzestawu danych z konta przechowywania.

Przyspieszanie zapytań umożliwia aplikacjom i strukturom analitycznym znaczne zoptymalizowanie przetwarzania danych przez pobranie tylko danych, których potrzebują do wykonania danej operacji. Aby dowiedzieć się więcej, zobacz Przyspieszanie zapytań usługi Azure Data Lake Storage.

Wymagania wstępne

  • Aby uzyskać dostęp do usługi Azure Storage, potrzebujesz subskrypcji platformy Azure. Jeśli nie masz jeszcze subskrypcji, przed rozpoczęciem utwórz bezpłatne konto .

  • Konto magazynowe w wersji 2 ogólnego przeznaczenia. Zobacz Tworzenie konta magazynu.

  • Podwójne szyfrowanie nie jest obsługiwane.

  • Jeśli wysyłasz zapytanie do pliku JSON, każdy rozmiar rekordu w tym pliku powinien być mniejszy niż 1 MB.

  • Wybierz kartę, aby wyświetlić wszystkie wymagania wstępne specyficzne dla zestawu SDK.

    Nie dotyczy


Konfigurowanie środowiska

Krok 1. Instalowanie pakietów

Zainstaluj moduł Az w wersji 4.6.0 lub nowszej.

Install-Module -Name Az -Repository PSGallery -Force

Aby przeprowadzić aktualizację ze starszej wersji modułu Az, uruchom następujące polecenie:

Update-Module -Name Az

Krok 2: Dodaj instrukcje

Nie dotyczy

Pobieranie danych przy użyciu filtru

Za pomocą języka SQL można określić predykaty filtru wierszy i projekcje kolumn w żądaniu przyspieszania zapytań. Poniższy kod wysyła zapytanie do pliku CSV w magazynie i zwraca wszystkie wiersze danych, w których trzecia kolumna odpowiada wartości Hemingway, Ernest.

  • W zapytaniu SQL słowo kluczowe BlobStorage jest używane do oznaczania pliku, którego dotyczy zapytanie.

  • Odwołania do kolumn są podawane jako _N, gdzie pierwsza kolumna to _1. Jeśli plik źródłowy zawiera wiersz nagłówka, możesz odwołać się do kolumn według nazwy określonej w wierszu nagłówka.

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

Pobieranie określonych kolumn

Wyniki można ograniczyć do podzbioru kolumn. W ten sposób pobierasz tylko kolumny potrzebne do wykonania danego obliczenia. Zwiększa to wydajność aplikacji i zmniejsza koszty, ponieważ mniej danych jest przesyłanych za pośrednictwem sieci.

Uwaga

Maksymalna liczba kolumn, do których można ograniczyć zakres wyników, wynosi 49. Jeśli wyniki mają zawierać więcej niż 49 kolumn, użyj symbolu wieloznakowego (*) dla wyrażenia SELECT (na przykład: SELECT *).

Ten kod pobiera tylko kolumnę BibNum dla wszystkich książek w zestawie danych. Używa również informacji z wiersza nagłówka w pliku źródłowym do odwoływania się do kolumn w zapytaniu.

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

Poniższy kod łączy filtrowanie wierszy i projekcje kolumn w tym samym zapytaniu.

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

Następne kroki