Partager via


Filtrer les données à l’aide de l’accélération des requêtes Azure Data Lake Storage

Cet article explique comment utiliser l’accélération des requêtes pour récupérer un sous-ensemble de données à partir de votre compte de stockage.

L’accélération des requêtes permet aux applications et aux infrastructures d’analytique d’optimiser considérablement le traitement des données en récupérant uniquement les données dont elles ont besoin pour effectuer une opération donnée. Pour plus d’informations, consultez Accélération des requêtes Azure Data Lake Storage.

Conditions préalables

  • Pour accéder à Stockage Azure, vous avez besoin d’un abonnement Azure. Si vous n’avez pas d’abonnement, vous pouvez créer un compte gratuit avant de commencer.

  • Un compte de stockage v2 universel . consultez Créer un compte de stockage.

  • Le double chiffrement n’est pas pris en charge.

  • Si vous interrogez un fichier JSON, chaque taille d’enregistrement de ce fichier doit être inférieure à 1 Mo.

  • Choisissez un onglet pour afficher les prérequis spécifiques au Kit de développement logiciel (SDK).

    Sans objet


Configurer votre environnement

Étape 1 : Installer des packages

Installez le module Az version 4.6.0 ou ultérieure.

Install-Module -Name Az -Repository PSGallery -Force

Pour effectuer une mise à jour à partir d’une version antérieure d’Az, exécutez la commande suivante :

Update-Module -Name Az

Étape 2 : Ajouter des déclarations

Sans objet

Récupérer des données à l’aide d’un filtre

Vous pouvez utiliser SQL pour spécifier les prédicats de filtre de lignes et les projections de colonnes dans une requête d’accélération de requête. Le code suivant interroge un fichier CSV dans le stockage et retourne toutes les lignes de données où la troisième colonne correspond à la valeur Hemingway, Ernest.

  • Dans la requête SQL, le mot clé BlobStorage est utilisé pour indiquer le fichier interrogé.

  • Les références de colonne sont spécifiées comme _N où la première colonne est _1. Si le fichier source contient une ligne d’en-tête, vous pouvez faire référence aux colonnes par le nom spécifié dans la ligne d’en-tête.

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

Récupérer des colonnes spécifiques

Vous pouvez étendre vos résultats à un sous-ensemble de colonnes. De cette façon, vous récupérez uniquement les colonnes nécessaires pour effectuer un calcul donné. Cela améliore les performances des applications et réduit les coûts, car moins de données sont transférées sur le réseau.

Remarque

Le nombre maximal de colonnes que vous pouvez étendre à vos résultats est de 49. Si vous avez besoin que vos résultats contiennent plus de 49 colonnes, utilisez un caractère générique (*) pour l’expression SELECT (par exemple : SELECT *).

Ce code récupère uniquement la BibNum colonne de tous les livres du jeu de données. Il utilise également les informations de la ligne d’en-tête dans le fichier source pour référencer des colonnes dans la requête.

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

Le code suivant combine le filtrage de lignes et les projections de colonnes dans la même requête.

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

Étapes suivantes