Megosztás a következőn keresztül:


Adatok szűrése az Azure Data Lake Storage lekérdezésgyorsításával

Ez a cikk bemutatja, hogyan lehet lekérdezésgyorsítással lekérni egy adathalmazt a tárfiókból.

A lekérdezések gyorsítása lehetővé teszi, hogy az alkalmazások és az elemzési keretrendszerek jelentősen optimalizálják az adatfeldolgozást úgy, hogy csak azokat az adatokat kérik le, amelyekre egy adott művelet végrehajtásához szükségük van. További információkért tekintse meg az Azure Data Lake Storage lekérdezésgyorsítását.

Előfeltételek

  • Az Azure Storage eléréséhez Azure-előfizetésre lesz szüksége. Ha még nem rendelkezik előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .

  • Általános célú v2-tárfiók . lásd: Tárfiók létrehozása.

  • A kettős titkosítás nem támogatott.

  • JSON-fájl lekérdezése esetén a fájl minden rekordméretének 1 MB-nál kisebbnek kell lennie.

  • Válasszon egy lapot az SDK-specifikus előfeltételek megtekintéséhez.

    Nem alkalmazható


Saját környezet beállítása

1. lépés: Csomagok telepítése

Telepítse az Az modul 4.6.0-s vagy újabb verzióját.

Install-Module -Name Az -Repository PSGallery -Force

Az Az régebbi verziójáról való frissítéshez futtassa a következő parancsot:

Update-Module -Name Az

2. lépés: Utasítások hozzáadása

Nem alkalmazható

Adatok lekérése szűrővel

Az SQL használatával megadhatja a sorszűrő predikátumait és oszlopvetületeit egy lekérdezésgyorsítási kérelemben. Az alábbi kód lekérdez egy CSV-fájlt a tárolóban, és visszaadja az összes adatsort, ahol a harmadik oszlop megegyezik az értékkel Hemingway, Ernest.

  • Az SQL-lekérdezésben a kulcsszó BlobStorage a lekérdezett fájl jelölésére szolgál.

  • Az oszlophivatkozások az első oszlop _1helyeként _N vannak megadva. Ha a forrásfájl fejlécsort tartalmaz, akkor a fejlécsorban megadott név alapján hivatkozhat az oszlopokra.

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

Adott oszlopok lekérése

Az eredményeket az oszlopok egy részhalmazára is hatókörbe helyezheti. Így csak azokat az oszlopokat kéri le, amelyek egy adott számítás elvégzéséhez szükségesek. Ez javítja az alkalmazás teljesítményét, és csökkenti a költségeket, mivel kevesebb adat kerül át a hálózaton keresztül.

Feljegyzés

Az eredmények hatókörének maximális száma 49. Ha az eredményeknek 49-nél több oszlopot kell tartalmazniuk, használjon helyettesítő karaktert (*) a Standard kiadás LECT kifejezéshez (például: SELECT *).

Ez a kód csak az BibNum adathalmaz összes könyvének oszlopát kéri le. A forrásfájl fejlécsorának adatait is felhasználja a lekérdezés oszlopainak hivatkozására.

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

Az alábbi kód egyesíti a sorszűréseket és az oszlopvetületeket ugyanabba a lekérdezésbe.

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

Következő lépések