azure
Support formation Microsoft Azure
azure
Support formation Microsoft Azure
Labs 203 | Azure Date Engineer

Lab 01 | Découvrir Azure Synapse Analytics

Gonzague Ducos

A retenir

Quatre espaces : Données, Développer, Surveiller, Gérer
Données : Espace de travail ou Liées
Gérer : les Pools Analytics SQL : Intégré (serverless, pas de stockage de données, seulement du SQL) ou dédié (stock une base SQL Server)
Gérer : les pools Apache Spark, en Scala ou Python.
Publier pour exécuter
Azure Synapse Analytics fournit une plateforme d'analyse de données unique et consolidée pour l'analyse de données de bout en bout. Dans cet exercice, vous allez explorer différentes façons d'ingérer et d'explorer des données. Cet exercice est conçu comme une vue d'ensemble de haut niveau des différentes fonctionnalités de base d'Azure Synapse Analytics. D'autres exercices sont disponibles pour explorer plus en détail des capacités spécifiques.
Cet exercice devrait durer environ 60 minutes.

Avant de commencer

Vous aurez besoin d'un dans lequel vous disposez d'un accès de niveau administratif.

Approvisionner un espace de travail Azure Synapse Analytics

Un espace de travail Azure Synapse Analytics fournit un point central pour la gestion des données et les environnements d'exécution de traitement des données. Vous pouvez provisionner un espace de travail à l'aide de l'interface interactive du portail Azure, ou vous pouvez déployer un espace de travail et des ressources à l'aide d'un script ou d'un modèle. Dans la plupart des scénarios de production, il est préférable d'automatiser le provisionnement à l'aide de scripts et de modèles afin d'intégrer le déploiement des ressources dans un processus DevOps (développement et opérations reproductibles).
Dans cet exercice, vous allez utiliser une combinaison d'un script PowerShell et d'un modèle ARM pour provisionner Azure Synapse Analytics.
Dans un navigateur web, connectez-vous au à l'adresse https://portal.azure.com.
Utilisez le bouton [>_] à droite de la barre de recherche en haut de la page pour créer un Cloud Shell dans le portail Azure, en sélectionnant un environnement PowerShell et en créant un stockage si vous y êtes invité. Cloud Shell fournit une interface de ligne de commande dans un volet situé au bas du portail Azure, comme illustré ici :
image.png
Remarque : Si vous avez déjà créé un Cloud Shell qui utilise un environnement Bash, utilisez le menu déroulant en haut à gauche du volet Cloud Shell pour le remplacer par PowerShell.
Notez que vous pouvez redimensionner la coque du nuage en faisant glisser la barre de séparation en haut du volet ou en utilisant les icônes —, et X en haut à droite du volet pour réduire, agrandir et fermer le volet. Pour plus d'informations sur l'utilisation d'Azure Cloud Shell, consultez la documentation Azure .
Dans le volet PowerShell, entrez les commandes suivantes pour cloner ce référentiel :
rm -r dp-203 -f
git clone https://github.com/MicrosoftLearning/dp-203-azure-data-engineer dp-203
Une fois le référentiel cloné, entrez les commandes suivantes pour accéder au dossier de cet exercice et exécutez le script setup.ps1 qu'il contient :
cd dp-203/Allfiles/labs/01
./setup.ps1
Si vous y êtes invité, choisissez l'abonnement que vous souhaitez utiliser (cela ne se produira que si vous avez accès à plusieurs abonnements Azure).
Lorsque vous y êtes invité, entrez un mot de passe approprié à définir pour votre pool SQL Azure Synapse. ​Remarque : N'oubliez pas ce mot de passe ! De plus, le mot de passe ne peut pas contenir tout ou partie du nom de connexion.
Attendez que le script soit terminé - cela prend généralement environ 20 minutes, mais dans certains cas, cela peut prendre plus de temps. Pendant que vous attendez, consultez la page dans la documentation Azure Synapse Analytics.

Découvrir Synapse Studio

Synapse Studio est un portail web dans lequel vous pouvez gérer et utiliser les ressources de votre espace de travail Azure Synapse Analytics.
Une fois l'exécution du script d'installation terminée, dans le portail Azure, accédez au groupe de ressources dp203-xxxxxxx qu'il a créé et notez que ce groupe de ressources contient :
votre espace de travail Synapse,
un compte de stockage pour votre lac de données,
un pool Apache Spark,
un pool Data Explorer
et un pool SQL dédié.
Sélectionnez votre espace de travail Synapse, puis dans sa page Vue d'ensemble, dans la carte Ouvrir Synapse Studio, sélectionnez Ouvrir pour ouvrir Synapse Studio dans un nouvel onglet du navigateur. Synapse Studio est une interface Web que vous pouvez utiliser pour travailler avec votre espace de travail Synapse Analytics.
Sur le côté gauche de Synapse Studio, utilisez l'icône ›› pour développer le menu, ce qui révèle les différentes pages de Synapse Studio que vous utiliserez pour gérer les ressources et effectuer des tâches d'analyse de données, comme illustré ici : ​
image.png
Consultez la page Données et notez qu'il existe deux onglets contenant des sources de données :
Un onglet Espace de travail contenant les bases de données définies dans l'espace de travail (y compris les bases de données SQL dédiées et les bases de données Data Explorer)
Un onglet Lié contenant des sources de données liées à l'espace de travail, y compris le stockage Azure Data Lake.
Consultez la page Développer, qui est actuellement vide. C'est ici que vous pouvez définir des scripts et d'autres ressources utilisées pour développer des solutions de traitement de données.
Consultez la page Intégrer, qui est également vide. Cette page vous permet de gérer les ressources d'ingestion et d'intégration de données. tels que des pipelines pour transférer et transformer des données entre des sources de données.
Consultez la page Surveiller. C'est ici que vous pouvez observer les tâches de traitement des données pendant qu'elles s'exécutent et afficher leur historique.
Consultez la page Gérer. C'est ici que vous gérez les pools, les runtimes et les autres ressources utilisées dans votre espace de travail Azure Synapse. Affichez chacun des onglets de la section Pools Analytics et notez que votre espace de travail comprend les pools suivants :
Pools SQL :
Intégré : pool SQL serverless que vous pouvez utiliser à la demande pour explorer ou traiter des données dans un lac de données à l'aide de commandes SQL.
sqlxxxxxxx : pool SQL dédié qui héberge une base de données d'entrepôt de données relationnelle.
Pools Apache Spark :
sparkxxxxxxx : que vous pouvez utiliser à la demande pour explorer ou traiter des données dans un lac de données à l'aide de langages de programmation tels que Scala ou Python.

Ingérer des données avec un pipeline

L'une des tâches clés que vous pouvez effectuer avec Azure Synapse Analytics consiste à définir des pipelines qui transfèrent (et, si nécessaire, transforment) des données provenant d'un large éventail de sources vers votre espace de travail à des fins d'analyse.

Utiliser la tâche Copier les données pour créer un pipeline

Dans Synapse Studio, sur la page d'accueil, sélectionnez Ingérer pour ouvrir l'outil Copier les données
Dans l'outil Copier les données, à l'étape Propriétés, assurez-vous que les options Tâche de copie intégrée et Exécuter une fois maintenant sont sélectionnées, puis cliquez sur > Suivant.
À l'étape Source, dans la sous-étape Jeu de données, sélectionnez les paramètres suivants :
Type de source : Tous
Connexion : créez une nouvelle connexion et, dans le volet Service lié qui s'affiche, sous l' onglet Protocole générique, sélectionnez HTTP. Poursuivez ensuite et créez une connexion à un fichier de données à l'aide des paramètres suivants :
Nom : Produits
Description : Liste de produits via HTTP
Se connecter via le runtime d'intégration : AutoResolveIntegrationRuntime
URL de base : https://raw.githubusercontent.com/MicrosoftLearning/dp-203-azure-data-engineer/master/Allfiles/labs/01/adventureworks/products.csv
Validation du certificat de serveur : Activer
Type d'authentification : Anonyme
Après avoir créé la connexion, dans la page Magasin de données source, assurez-vous que les paramètres suivants sont sélectionnés, puis sélectionnez Suivant > :
URL relative : laissez vide
Méthode de requête : GET
En-têtes supplémentaires : laissez vide
Copie binaire : non sélectionnée
Délai d'expiration de la demande : laisser vide
Nombre maximal de connexions simultanées : laissez vide
À l'étape Source, dans la sous-étape Configuration, sélectionnez Aperçu des données pour afficher un aperçu des données produit que votre pipeline va ingérer, puis fermez l'aperçu.
Après avoir prévisualisé les données, sur la page Paramètres de format de fichier, assurez-vous que les paramètres suivants sont sélectionnés, puis sélectionnez > suivant :
Format de fichier : DelimitedText
Délimiteur de colonne : Virgule (,)
Délimiteur de ligne : Saut de ligne (\n)
Première ligne comme en-tête : Sélectionné
Type de compression : Aucun
À l'étape Destination, dans la sous-étape Dataset, sélectionnez les paramètres suivants :
Type de destination : Azure Data Lake Storage Gen 2
Connexion : sélectionnez la connexion existante à votre magasin de lac de données (elle a été créée pour vous lors de la création de l'espace de travail).
Après avoir sélectionné la connexion, à l' étape Destination/Jeu de données, assurez-vous que les paramètres suivants sont sélectionnés, puis sélectionnez > suivant :
Chemin du dossier : files/product_data
Nom du Fichier : products.csv
Comportement de copie : Aucun
Nombre maximal de connexions simultanées : laissez vide
Taille du bloc (Mo) : Laissez vide
À l'étape Destination, dans la sous-étape Configuration, sur la page Paramètres de format de fichier, assurez-vous que les propriétés suivantes sont sélectionnées. Sélectionnez ensuite > suivant :
Format de fichier : DelimitedText
Délimiteur de colonne : Virgule (,)
Délimiteur de ligne : Saut de ligne (\n)
Ajouter un en-tête au fichier : Sélectionné
Type de compression : Aucun
Nombre maximal de lignes par fichier : laissez vide
Préfixe du nom de fichier : laissez vide
À l'étape Paramètres, entrez les paramètres suivants, puis cliquez sur Suivant > :
Nom de la tâche : Copier les produits
Description de la tâche Copier les données des produits
Tolérance aux pannes : laisser vide
Activer la journalisation : non sélectionné
Activer la mise en scène : non sélectionné
À l'étape Vérifier et terminer, dans la sous-étape Vérifier, lisez le résumé, puis cliquez sur > suivant.
À l'étape Déploiement, attendez que le pipeline soit déployé, puis cliquez sur Terminer.
Dans Synapse Studio, sélectionnez la page Surveiller, puis dans l’onglet Exécutions du pipeline, attendez que le pipeline Copier les produits se termine avec l'état Réussi (vous pouvez utiliser le bouton ↻ Actualiser sur la page Exécutions du pipeline pour actualiser l'état).
Affichez la page Intégrer et vérifiez qu'elle contient désormais un pipeline nommé Copier les produits.

Afficher les données ingérées

Sur la page Données, sélectionnez l'onglet Lié et développez la hiérarchie de conteneurs de datalake synapsexxxxxxx (principal) jusqu'à ce que vous voyiez le stockage de fichiers de fichiers pour votre espace de travail Synapse. Sélectionnez ensuite le stockage de fichiers pour vérifier qu'un dossier nommé product_data contenant un fichier nommé products.csv a été copié à cet emplacement, comme illustré ici : ​
image.png
Cliquez avec le bouton droit sur le fichier de données products.csv et sélectionnez Aperçu pour afficher les données ingérées. Fermez ensuite l'aperçu.

Utiliser un pool SQL serverless pour analyser les données

Maintenant que vous avez ingéré des données dans votre espace de travail, vous pouvez utiliser Synapse Analytics pour les interroger et les analyser. L'une des méthodes les plus courantes d'interrogation de données consiste à utiliser SQL, et dans Synapse Analytics, vous pouvez utiliser un pool SQL serverless pour exécuter du code SQL sur des données dans un lac de données.
Dans Synapse Studio, cliquez avec le bouton droit sur le fichier products.csv dans le stockage de fichiers de votre espace de travail Synapse, pointez sur Nouveau script SQL, puis sélectionnez Sélectionner les 100 premières lignes.
Dans le volet SQL Script 1 qui s'ouvre, passez en revue le code SQL qui a été généré, qui doit être similaire à ceci :

-- This is auto-generated code
SELECT
    TOP100*
FROM
    OPENROWSET(
        BULK'https://datalakexxxxxxx.dfs.core.windows.net/files/product_data/products.csv',
        FORMAT ='CSV',
        PARSER_VERSION='2.0'
)AS[result]
Ce code ouvre un ensemble de lignes à partir du fichier texte que vous avez importé et récupère les 100 premières lignes de données.
Dans la liste Se connecter à, assurez-vous que l'option Intégré est sélectionnée, car elle représente le pool SQL intégré qui a été créé avec votre espace de travail.
Dans la barre d'outils, utilisez le bouton ▷ Exécuter pour exécuter le code SQL et examinez les résultats, qui doivent ressembler à ceci :
C1
C2
C3
C4
ProductID
ProductName
Category
ListPrice
771
Mountain-100 Silver, 38
Mountain Bikes
3399.9900
772
Mountain-100 Silver, 42
Mountain Bikes
3399.9900
...
...
...
...
There are no rows in this table
Notez que les résultats se composent de quatre colonnes nommées C1, C2, C3 et C4 et que la première ligne des résultats contient les noms des champs de données. Pour résoudre ce problème, ajoutez un paramètre HEADER_ROW = TRUE à la fonction OPENROWSET, comme illustré ici (en remplaçant datalakexxxxxxx par le nom de votre compte de stockage Data Lake), puis réexécutez la requête :
-- This is auto-generated code
SELECT
    TOP100*
FROM
    OPENROWSET(
        BULK'https://datalakexxxxxxx.dfs.core.windows.net/files/product_data/products.csv',
        FORMAT ='CSV',
        PARSER_VERSION='2.0',
HEADER_ROW = TRUE
)AS[result]
Maintenant, les résultats ressemblent à ceci :
ProductID
ProductName
Category
ListPrice
771
Mountain-100 Silver, 38
Mountain Bikes
3399.9900
772
Mountain-100 Silver, 42
Mountain Bikes
3399.9900
...
...
...
...
There are no rows in this table
Modifiez la requête comme suit (en remplaçant datalakexxxxxxx par le nom de votre compte de stockage Data Lake) :
SELECT
    Category, COUNT(*) AS ProductCount
FROM
    OPENROWSET(
        BULK'https://datalakexxxxxxx.dfs.core.windows.net/files/product_data/products.csv',
        FORMAT ='CSV',
        PARSER_VERSION='2.0',
HEADER_ROW = TRUE
)AS[result]
GROUP BY Category;
Exécutez la requête modifiée, qui doit renvoyer un ensemble de résultats contenant le nombre de produits dans chaque catégorie, comme ceci :
Category
ProductCount
Bib Shorts
3
Bike Racks
1
...
...
There are no rows in this table
Dans le volet Propriétés de SQL Script 1, remplacez le Nom par Nombre de produits par categorie (pas d’accent !). Ensuite, dans la barre d'outils, sélectionnez Publier pour enregistrer le script.
Fermez le volet de script Nombre de produits par categorie.
Dans Synapse Studio, sélectionnez la page Développement et notez que votre script SQL Nombre de produits par categorie publié y a été enregistré.
Sélectionnez le script SQL Nombre de produits par categorie pour le rouvrir. Assurez-vous ensuite que le script est connecté au Pool SQL intégré et exécutez-le pour récupérer le nombre de produits.
Dans le volet Résultats, sélectionnez la vue Graphique, puis sélectionnez les paramètres suivants pour le graphique :
Type de graphique : Colonne
Colonne Catégorie : Catégorie
Colonnes de légende (série) : ProductCount
Position de la légende : bas - centre
Étiquette de légende (série) : Laisser vide
Valeur minimale de la légende (série) : Laisser vide
Légende (série) maximum : Laisser vide
Étiquette de catégorie : Laisser vide
Le graphique résultant doit ressembler à ceci :
image.png

Utiliser un pool Spark pour analyser les données

Bien que SQL soit un langage courant pour l'interrogation d'ensembles de données structurés, de nombreux analystes de données trouvent des langages comme Python utiles pour explorer et préparer les données à l'analyse. Dans Azure Synapse Analytics, vous pouvez exécuter du code Python (et d'autres) dans un pool Spark, qui utilise un moteur de traitement de données distribué basé sur Apache Spark.
Dans Synapse Studio, si l'onglet Fichiers que vous avez ouvert précédemment et contenant le fichier products.csv n'est plus ouvert, sur la page Données, parcourez le dossier product_data. Cliquez ensuite avec le bouton droit sur products.csv, pointez sur Nouveau bloc-notes, puis sélectionnez Charger dans DataFrame.
Dans le volet Notebook 1 qui s'ouvre, dans la liste Attacher à, sélectionnez le pool Sparkxxxxxxx et assurez-vous que la langue est définie sur PySpark (Python).
Examinez le code de la première (et unique) cellule du bloc-notes, qui doit ressembler à ceci :
%%pyspark
df = spark.read.load('abfss://files@datalakexxxxxxx.dfs.core.windows.net/product_data/products.csv', format='csv'
## If header exists uncomment line below
##, header=True
)
display(df.limit(10))
Utilisez l' icône ▷ à gauche de la cellule de code pour l'exécuter et attendez les résultats. La première fois que vous exécutez une cellule dans un bloc-notes, le pool Spark est démarré, de sorte que le retour des résultats peut prendre environ une minute.
Finalement, les résultats devraient apparaître sous la cellule, et ils devraient être similaires à ceci :
c0
c1
c2
c3
ProductID
ProductName
Category
ListPrice
771
Mountain-100 Silver, 38
Mountain Bikes
3399.9900
772
Mountain-100 Silver, 42
Mountain Bikes
3399.9900
...
...
...
...
There are no rows in this table
Décommentez la ligne ,header=True (car le fichier products.csv a les en-têtes de colonne dans la première ligne), de sorte que votre code ressemble à ceci :
%%pyspark
df = spark.read.load('abfss://files@datalakexxxxxxx.dfs.core.windows.net/product_data/products.csv', format='csv'
## If header exists uncomment line below
, header=True
)
display(df.limit(10))
Réexécutez la cellule et vérifiez que les résultats ressemblent à ceci :
ProductID
ProductName
Category
ListPrice
771
Mountain-100 Silver, 38
Mountain Bikes
3399.9900
772
Mountain-100 Silver, 42
Mountain Bikes
3399.9900
...
...
...
...
There are no rows in this table
Notez que l'exécution de la cellule prend moins de temps, car le pool Spark est déjà démarré.
Sous les résultats, utilisez l'icône + Code pour ajouter une nouvelle cellule de code au bloc-notes.
Dans la nouvelle cellule de code vide, ajoutez le code suivant :
df_counts = df.groupby(df.Category).count()
display(df_counts)
Exécutez la nouvelle cellule de code en cliquant sur son icône ▷ et examinez les résultats, qui doivent ressembler à ceci :
Category
count
Headsets
3
Wheels
14
...
...
There are no rows in this table
Dans la sortie des résultats de la cellule, sélectionnez la vue Graphique. Le graphique résultant doit ressembler à ceci :
image.png
S'il n'est pas déjà visible, affichez la page Propriétés en sélectionnant le bouton Propriétés (qui ressemble à 🗏 *) à l'extrémité droite de la barre d'outils. Ensuite, dans le volet Propriétés, remplacez le nom du bloc-notes par Explorer les produits et utilisez le bouton Publier de la barre d'outils pour l'enregistrer.
Fermez le volet du bloc-notes et arrêtez la session Spark lorsque vous y êtes invité. Affichez ensuite la page Développement pour vérifier que le bloc-notes a été enregistré.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.