Didacticiel : Chargement des données de New York Taxicab dans Azure SQL Data WarehouseTutorial: Load New York Taxicab data to Azure SQL Data Warehouse

Ce tutoriel utilise PolyBase pour charger les données de New York Taxicab d’un objet blob Azure public vers Azure SQL Data Warehouse.This tutorial uses PolyBase to load New York Taxicab data from a public Azure blob to Azure SQL Data Warehouse. Ce didacticiel utilise le portail Azure et SQL Server Management Studio (SSMS) pour :The tutorial uses the Azure portal and SQL Server Management Studio (SSMS) to:

  • Créer un entrepôt de données dans le portail AzureCreate a data warehouse in the Azure portal
  • Configurer une règle de pare-feu au niveau du serveur dans le portail AzureSet up a server-level firewall rule in the Azure portal
  • Se connecter à l’entrepôt de données avec SSMSConnect to the data warehouse with SSMS
  • Créer un utilisateur désigné pour le chargement des donnéesCreate a user designated for loading data
  • Créer des tables externes pour les données dans le Stockage Blob AzureCreate external tables for data in Azure blob storage
  • Utiliser l’instruction T-SQL CTAS pour charger les données dans votre entrepôt de donnéesUse the CTAS T-SQL statement to load data into your data warehouse
  • Afficher la progression des données à mesure du chargementView the progress of data as it is loading
  • Créer des statistiques sur les données nouvellement chargéesCreate statistics on the newly loaded data

Si vous ne disposez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don't have an Azure subscription, create a free account before you begin.

Avant de commencerBefore you begin

Avant de commencer ce didacticiel, téléchargez et installez la dernière version de SQL Server Management Studio (SSMS).Before you begin this tutorial, download and install the newest version of SQL Server Management Studio (SSMS).

Se connecter au portail Azure.Log in to the Azure portal

Connectez-vous au portail Azure.Log in to the Azure portal.

Créer un entrepôt SQL Data Warehouse videCreate a blank SQL Data Warehouse

Un entrepôt Azure SQL Data Warehouse est créé avec un ensemble défini de ressources de calcul.An Azure SQL Data Warehouse is created with a defined set of compute resources. La base de données est créée dans un groupe de ressources Azure et dans un serveur logique Azure SQL.The database is created within an Azure resource group and in an Azure SQL logical server.

Suivez ces étapes pour créer un entrepôt SQL Data Warehouse vide.Follow these steps to create a blank SQL Data Warehouse.

  1. Cliquez sur Créer une ressource en haut à gauche du portail Azure.Click Create a resource in the upper left-hand corner of the Azure portal.

  2. Sélectionnez Bases de données dans la page Nouveau et sélectionnez SQL Data Warehouse sous Sélection dans la page Nouveau.Select Databases from the New page, and select SQL Data Warehouse under Featured on the New page.

    créer un entrepôt de données

  3. Remplissez le formulaire SQL Data Warehouse avec les informations suivantes :Fill out the SQL Data Warehouse form with the following information:

    ParamètreSetting Valeur suggéréeSuggested value DESCRIPTIONDescription
    Nom de la base de donnéesDatabase name mySampleDataWarehousemySampleDataWarehouse Pour les noms de base de données valides, consultez Database Identifiers (Identificateurs de base de données).For valid database names, see Database Identifiers.
    AbonnementSubscription Votre abonnementYour subscription Pour plus d’informations sur vos abonnements, consultez Abonnements.For details about your subscriptions, see Subscriptions.
    Groupe de ressourcesResource group myResourceGroupmyResourceGroup Pour les noms de groupe de ressources valides, consultez Naming conventions (Conventions d’affectation de nom).For valid resource group names, see Naming rules and restrictions.
    Sélectionner une sourceSelect source Base de données videBlank database Indique de créer une base de données vide.Specifies to create a blank database. Notez qu’un entrepôt de données est un type de base de données.Note, a data warehouse is one type of database.

    créer un entrepôt de données

  4. Cliquez sur Serveur pour créer et configurer un serveur pour votre nouvelle base de données.Click Server to create and configure a new server for your new database. Remplissez le formulaire de nouveau serveur avec les informations suivantes :Fill out the New server form with the following information:

    ParamètreSetting Valeur suggéréeSuggested value DESCRIPTIONDescription
    Nom du serveurServer name Nom globalement uniqueAny globally unique name Pour les noms de serveur valides, consultez Naming conventions (Conventions d’affectation de nom).For valid server names, see Naming rules and restrictions.
    Connexion d’administrateur du serveurServer admin login Nom valideAny valid name Pour les noms de connexion valides, consultez Database Identifiers (Identificateurs de base de données).For valid login names, see Database Identifiers.
    Mot de passePassword Mot de passe valideAny valid password Votre mot de passe doit comporter au moins 8 caractères et contenir des caractères appartenant à trois des catégories suivantes : majuscules, minuscules, chiffres et caractères non alphanumériques.Your password must have at least eight characters and must contain characters from three of the following categories: upper case characters, lower case characters, numbers, and non-alphanumeric characters.
    LieuLocation Emplacement valideAny valid location Pour plus d’informations sur les régions, consultez Régions Azure.For information about regions, see Azure Regions.

    créer un serveur de base de données

  5. Cliquez sur Sélectionner.Click Select.

  6. Cliquez sur Niveau de performance pour spécifier si l’entrepôt de données est de type Gen1 ou Gen2, et indiquer le nombre d’unités d’entrepôt de données.Click Performance level to specify whether the data warehouse is Gen1 or Gen2, and the number of data warehouse units.

  7. Pour ce tutoriel, sélectionnez Gen2 de SQL Data Warehouse.For this tutorial, select Gen2 of SQL Data Warehouse. Par défaut, le curseur est défini sur DW1000c.The slider is set to DW1000c by default. Déplacez-le vers le haut et le bas pour voir son fonctionnement.Try moving it up and down to see how it works.

    configurer les performances

  8. Cliquez sur Appliquer.Click Apply.

  9. Dans la page SQL Data Warehouse, sélectionnez un classement pour la base de données vide.In the SQL Data Warehouse page, select a collation for the blank database. Pour ce didacticiel, utilisez la valeur par défaut.For this tutorial, use the default value. Pour en savoir plus sur les classements, voir ClassementsFor more information about collations, see Collations

  10. Maintenant que vous avez rempli le formulaire SQL Database, cliquez sur Créer pour provisionner la base de données.Now that you have completed the SQL Database form, click Create to provision the database. Le provisionnement prend quelques minutes.Provisioning takes a few minutes.

    cliquer sur créer

  11. Dans la barre d’outils, cliquez sur Notifications pour surveiller le processus de déploiement.On the toolbar, click Notifications to monitor the deployment process.

    notification

Créer une règle de pare-feu au niveau du serveurCreate a server-level firewall rule

Le service SQL Data Warehouse crée un pare-feu au niveau du serveur qui empêche les applications et outils externes de se connecter au serveur ou à toute base de données sur le serveur.The SQL Data Warehouse service creates a firewall at the server-level that prevents external applications and tools from connecting to the server or any databases on the server. Pour activer la connectivité, vous pouvez ajouter des règles de pare-feu qui activent la connectivité pour des adresses IP spécifiques.To enable connectivity, you can add firewall rules that enable connectivity for specific IP addresses. Suivez ces étapes pour créer une règle de pare-feu au niveau du serveur pour l’adresse IP de votre client.Follow these steps to create a server-level firewall rule for your client's IP address.

Notes

SQL Data Warehouse communique sur le port 1433.SQL Data Warehouse communicates over port 1433. Si vous essayez de vous connecter à partir d’un réseau d’entreprise, le trafic sortant sur le port 1433 peut être bloqué par le pare-feu de votre réseau.If you are trying to connect from within a corporate network, outbound traffic over port 1433 might not be allowed by your network's firewall. Dans ce cas, vous ne pouvez pas vous connecter à votre serveur Azure SQL Database, sauf si votre service informatique ouvre le port 1433.If so, you cannot connect to your Azure SQL Database server unless your IT department opens port 1433.

  1. Une fois le déploiement terminé, cliquez sur Bases de données SQL dans le menu de gauche, puis cliquez sur mySampleDatabase sur la page Bases de données SQL.After the deployment completes, click SQL databases from the left-hand menu and then click mySampleDatabase on the SQL databases page. La page de présentation de votre base de données s’ouvre, elle affiche le nom de serveur complet (tel que mynewserver-20180430.database.windows.net) et fournit des options pour poursuivre la configuration.The overview page for your database opens, showing you the fully qualified server name (such as mynewserver-20180430.database.windows.net) and provides options for further configuration.

  2. Copiez le nom complet du serveur pour vous connecter à votre serveur et à ses bases de données dans les guides de démarrage rapide suivants.Copy this fully qualified server name for use to connect to your server and its databases in subsequent quick starts. Ensuite, cliquez sur le nom du serveur pour ouvrir les paramètres du serveur.Then click on the server name to open server settings.

    rechercher le nom du serveur

  3. Cliquez sur le nom du serveur pour ouvrir les paramètres du serveur.Click the server name to open server settings.

    paramètres du serveur

  4. Cliquez sur Afficher les paramètres de pare-feu.Click Show firewall settings. La page Paramètres de pare-feu du serveur SQL Database s’ouvre.The Firewall settings page for the SQL Database server opens.

    règle de pare-feu de serveur

  5. Dans la barre d’outils, cliquez sur Ajouter une adresse IP cliente afin d’ajouter votre adresse IP actuelle à une nouvelle règle de pare-feu.Click Add client IP on the toolbar to add your current IP address to a new firewall rule. Une règle de pare-feu peut ouvrir le port 1433 pour une seule adresse IP ou une plage d’adresses IP.A firewall rule can open port 1433 for a single IP address or a range of IP addresses.

  6. Cliquez sur Enregistrer.Click Save. Une règle de pare-feu au niveau du serveur est créée pour votre adresse IP actuelle et ouvre le port 1433 sur le serveur logique.A server-level firewall rule is created for your current IP address opening port 1433 on the logical server.

  7. Cliquez sur OK, puis fermez la page Paramètres de pare-feu.Click OK and then close the Firewall settings page.

Vous pouvez maintenant vous connecter au serveur SQL et à ses entrepôts de données à l’aide de cette adresse IP.You can now connect to the SQL server and its data warehouses using this IP address. La connexion fonctionne à partir de SQL Server Management Studio ou d’un autre outil de votre choix.The connection works from SQL Server Management Studio or another tool of your choice. Quand vous vous connectez, utilisez le compte ServerAdmin que vous avez créé précédemment.When you connect, use the ServerAdmin account you created previously.

Important

Par défaut, l’accès via le pare-feu SQL Database est activé pour tous les services Azure.By default, access through the SQL Database firewall is enabled for all Azure services. Cliquez sur OFF dans cette page, puis sur Enregistrer pour désactiver le pare-feu pour tous les services Azure.Click OFF on this page and then click Save to disable the firewall for all Azure services.

Obtenir le nom complet du serveurGet the fully qualified server name

Obtenez le nom complet de votre serveur SQL dans le portail Azure.Get the fully qualified server name for your SQL server in the Azure portal. Vous utilisez le nom complet du serveur par la suite pour vous connecter au serveur.Later you will use the fully qualified name when connecting to the server.

  1. Connectez-vous au portail Azure.Log in to the Azure portal.

  2. Sélectionnez Entrepôts de données SQL Data Warehouse dans le menu de gauche, puis cliquez sur votre base de données dans la page Entrepôts de données SQL Data Warehouse.Select SQL Data warehouses from the left-hand menu, and click your database on the SQL data warehouses page.

  3. Dans le volet Essentials de la page du portail Azure pour votre base de données, recherchez et copiez le nom du serveur.In the Essentials pane in the Azure portal page for your database, locate and then copy the Server name. Dans cet exemple, le nom complet est mynewserver-20180430.database.windows.net.In this example, the fully qualified name is mynewserver-20180430.database.windows.net.

    informations de connexion

Se connecter au serveur comme administrateur du serveurConnect to the server as server admin

Cette section utilise SQL Server Management Studio (SSMS) pour établir une connexion à votre serveur Azure SQL.This section uses SQL Server Management Studio (SSMS) to establish a connection to your Azure SQL server.

  1. Ouvrez SQL Server Management Studio.Open SQL Server Management Studio.

  2. Dans la fenêtre Se connecter au serveur, entrez les valeurs suivantes :In the Connect to Server dialog box, enter the following information:

    ParamètreSetting       Valeur suggéréeSuggested value DescriptionDescription
    Type de serveurServer type Moteur de base de donnéesDatabase engine Cette valeur est obligatoireThis value is required
    Nom du serveurServer name Nom complet du serveurThe fully qualified server name Le nom doit ressembler à : mynewserver-20180430.database.windows.net.The name should be something like this: mynewserver-20180430.database.windows.net.
    AuthentificationAuthentication l’authentification SQL ServerSQL Server Authentication L’authentification SQL est le seul type d’authentification que nous avons configuré dans ce didacticiel.SQL Authentication is the only authentication type that we have configured in this tutorial.
    ConnexionLogin Compte d’administrateur de serveurThe server admin account Il s’agit du compte que vous avez spécifié lorsque vous avez créé le serveur.This is the account that you specified when you created the server.
    Mot de passePassword Mot de passe de votre compte d’administrateur de serveurThe password for your server admin account Il s’agit du mot de passe que vous avez spécifié lorsque vous avez créé le serveur.This is the password that you specified when you created the server.

    connect to server

  3. Cliquez sur Connecter.Click Connect. La fenêtre Explorateur d’objets s’ouvre dans SSMS.The Object Explorer window opens in SSMS.

  4. Dans l’Explorateur d’objets, développez Bases de données.In Object Explorer, expand Databases. Ensuite, développez Bases de données système et master pour afficher les objets de la base de données master.Then expand System databases and master to view the objects in the master database. Développez mySampleDatabase pour afficher les objets dans votre nouvelle base de données.Expand mySampleDatabase to view the objects in your new database.

    objets de base de données

Créer un utilisateur pour le chargement des donnéesCreate a user for loading data

Le compte d’administrateur de serveur est destiné à effectuer des opérations de gestion et ne convient pas pour l’exécution de requêtes sur les données utilisateur.The server admin account is meant to perform management operations, and is not suited for running queries on user data. Le chargement des données est une opération utilisant beaucoup de mémoire.Loading data is a memory-intensive operation. Les valeurs maximales de mémoire sont définies en fonction de la génération de SQL Data Warehouse que vous provisionnez, des unités de l’entrepôt de données et des classes de ressources.Memory maximums are defined according to which Generation of SQL Data Warehouse you've provisioned, data warehouse units, and resource class.

Il est préférable de créer une connexion et un utilisateur dédiés au chargement des données.It's best to create a login and user that is dedicated for loading data. Ensuite, ajoutez l’utilisateur de chargement à une classe de ressource qui permet une allocation de mémoire maximale appropriée.Then add the loading user to a resource class that enables an appropriate maximum memory allocation.

Étant donné que vous êtes actuellement connecté comme administrateur du serveur, vous pouvez créer des connexions et des utilisateurs.Since you are currently connected as the server admin, you can create logins and users. Suivez ces étapes pour créer une connexion et un utilisateur appelé LoaderRC20.Use these steps to create a login and user called LoaderRC20. Ensuite, attribuez l’utilisateur à la classe de ressource staticrc20.Then assign the user to the staticrc20 resource class.

  1. Dans SSMS, cliquez avec le bouton droit sur master pour afficher un menu déroulant et choisissez Nouvelle requête.In SSMS, right-click master to show a drop-down menu, and choose New Query. Une nouvelle fenêtre de requête s’ouvre.A new query window opens.

    Nouvelle requête dans master

  2. Dans la fenêtre de requête, entrez ces commandes T-SQL pour créer une connexion et un utilisateur nommé LoaderRC20, en remplaçant votre mot de passe par « a123STRONGpassword! ».In the query window, enter these T-SQL commands to create a login and user named LoaderRC20, substituting your own password for 'a123STRONGpassword!'.

    CREATE LOGIN LoaderRC20 WITH PASSWORD = 'a123STRONGpassword!';
    CREATE USER LoaderRC20 FOR LOGIN LoaderRC20;
    
  3. Cliquez sur Exécuter.Click Execute.

  4. Cliquez avec le bouton droit sur mySampleDataWarehouse et choisissez Nouvelle requête.Right-click mySampleDataWarehouse, and choose New Query. Une nouvelle fenêtre de requête s’ouvre.A new query Window opens.

    Nouvelle requête sur l’exemple d’entrepôt de données

  5. Entrez les commandes T-SQL suivantes pour créer un utilisateur de base de données nommé LoaderRC20 pour la connexion LoaderRC20.Enter the following T-SQL commands to create a database user named LoaderRC20 for the LoaderRC20 login. La deuxième ligne accorde au nouvel utilisateur des autorisations de contrôle sur le nouvel entrepôt de données.The second line grants the new user CONTROL permissions on the new data warehouse. Ces autorisations reviennent à désigner l’utilisateur comme propriétaire de la base de données.These permissions are similar to making the user the owner of the database. La troisième ligne ajoute le nouvel utilisateur comme membre de la classe de ressource staticrc20.The third line adds the new user as a member of the staticrc20 resource class.

    CREATE USER LoaderRC20 FOR LOGIN LoaderRC20;
    GRANT CONTROL ON DATABASE::[mySampleDataWarehouse] to LoaderRC20;
    EXEC sp_addrolemember 'staticrc20', 'LoaderRC20';
    
  6. Cliquez sur Exécuter.Click Execute.

Se connecter au serveur comme utilisateur de chargementConnect to the server as the loading user

La première étape du chargement des données consiste à se connecter sous LoaderRC20.The first step toward loading data is to login as LoaderRC20.

  1. Dans l’Explorateur d’objets, cliquez sur le menu déroulant Se connecter et sélectionnez Moteur de base de données.In Object Explorer, click the Connect drop down menu and select Database Engine. La boîte de dialogue Se connecter au serveur s’affiche.The Connect to Server dialog box appears.

    Se connecter avec le nouvelle connexion

  2. Entrez le nom complet du serveur, puis LoaderRC20 comme connexion.Enter the fully qualified server name, and enter LoaderRC20 as the Login. Entrez votre mot de passe pour LoaderRC20.Enter your password for LoaderRC20.

  3. Cliquez sur Connecter.Click Connect.

  4. Quand votre connexion est prête, vous voyez deux connexions de serveur dans l’Explorateur d’objets.When your connection is ready, you will see two server connections in Object Explorer. Une connexion sous ServerAdmin et une connexion sous MedRCLogin.One connection as ServerAdmin and one connection as MedRCLogin.

    La connexion a abouti

Créer des tables externes pour les exemples de donnéesCreate external tables for the sample data

Vous êtes prêt à commencer le processus de chargement des données dans votre nouvel entrepôt de données.You are ready to begin the process of loading data into your new data warehouse. Ce tutoriel vous montre comment utiliser des tables externes pour charger les données de New York Taxicab à partir d’un objet blob de stockage Azure.This tutorial shows you how to use external tables to load New York City taxi cab data from an Azure storage blob. Pour vous y référer ultérieurement, pour savoir comment charger vos données vers le stockage d’objets blob Azure ou pour les charger directement à partir de votre source dans SQL Data Warehouse, consultez la présentation du chargement.For future reference, to learn how to get your data to Azure blob storage or to load it directly from your source into SQL Data Warehouse, see the loading overview.

Exécutez les scripts SQL suivants en spécifiant les informations des données que vous voulez charger.Run the following SQL scripts specify information about the data you wish to load. Ces informations sont notamment l’emplacement des données, le format du contenu des données et la définition de table pour les données.This information includes where the data is located, the format of the contents of the data, and the table definition for the data.

  1. Dans la section précédente, vous vous êtes connecté à votre entrepôt de données sous LoaderRC20.In the previous section, you logged into your data warehouse as LoaderRC20. Dans SSMS, cliquez avec le bouton droit sur votre connexion LoaderRC20 et sélectionnez Nouvelle requête.In SSMS, right-click your LoaderRC20 connection and select New Query. Une nouvelle fenêtre de requête s’affiche.A new query window appears.

    Fenêtre de nouvelle requête de chargement

  2. Comparez votre fenêtre de requête à l’image précédente.Compare your query window to the previous image. Vérifiez que votre fenêtre de nouvelle requête s’exécute sous LoaderRC20 et qu’elle exécute des requêtes sur votre base de données MySampleDataWarehouse.Verify your new query window is running as LoaderRC20 and performing queries on your MySampleDataWarehouse database. Utilisez cette fenêtre de requête pour effectuer toutes les étapes de chargement.Use this query window to perform all of the loading steps.

  3. Créez une clé principale pour la base de données MySampleDataWarehouse.Create a master key for the MySampleDataWarehouse database. Vous ne devez créer qu’une clé principale par base de données.You only need to create a master key once per database.

    CREATE MASTER KEY;
    
  4. Exécutez l’instruction CREATE EXTERNAL DATA SOURCE suivante pour définir l’emplacement de l’objet blob Azure.Run the following CREATE EXTERNAL DATA SOURCE statement to define the location of the Azure blob. Il s’agit de l’emplacement des données externes de taxi cab.This is the location of the external taxi cab data. Pour exécuter une commande que vous avez ajoutée à la fenêtre de requête, mettez en surbrillance les commandes que vous voulez exécuter, puis cliquez sur Exécuter.To run a command that you have appended to the query window, highlight the commands you wish to run and click Execute.

    CREATE EXTERNAL DATA SOURCE NYTPublic
    WITH
    (
        TYPE = Hadoop,
        LOCATION = 'wasbs://2013@nytaxiblob.blob.core.windows.net/'
    );
    
  5. Exécutez l’instruction T-SQL CREATE EXTERNAL FILE FORMAT suivante pour spécifier les caractéristiques de mise en forme et les options pour le fichier de données externe.Run the following CREATE EXTERNAL FILE FORMAT T-SQL statement to specify formatting characteristics and options for the external data file. Cette instruction spécifie que les données externes sont stockées sous forme de texte et que les valeurs sont séparées par une barre verticale (« | »).This statement specifies the external data is stored as text and the values are separated by the pipe ('|') character. Le fichier externe est compressé avec Gzip.The external file is compressed with Gzip.

    CREATE EXTERNAL FILE FORMAT uncompressedcsv
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS ( 
            FIELD_TERMINATOR = ',',
            STRING_DELIMITER = '',
            DATE_FORMAT = '',
            USE_TYPE_DEFAULT = False
        )
    );
    CREATE EXTERNAL FILE FORMAT compressedcsv
    WITH ( 
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS ( FIELD_TERMINATOR = '|',
            STRING_DELIMITER = '',
        DATE_FORMAT = '',
            USE_TYPE_DEFAULT = False
        ),
        DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'
    );
    
  6. Exécutez l’instruction CREATE SCHEMA suivante pour créer un schéma pour le format de votre fichier externe.Run the following CREATE SCHEMA statement to create a schema for your external file format. Le schéma fournit un moyen d’organiser les tables externes que vous allez créer.The schema provides a way to organize the external tables you are about to create.

    CREATE SCHEMA ext;
    
  7. Créez les tables externes.Create the external tables. Les définitions de table sont stockées dans SQL Data Warehouse, mais les tables référencent les données stockées dans le Stockage Blob Azure.The table definitions are stored in SQL Data Warehouse, but the tables reference data that is stored in Azure blob storage. Exécutez les commandes T-SQL suivantes pour créer plusieurs tables externes pointant toutes vers l’objet blob Azure que nous avons défini précédemment dans notre source de données externe.Run the following T-SQL commands to create several external tables that all point to the Azure blob we defined previously in our external data source.

    CREATE EXTERNAL TABLE [ext].[Date] 
    (
        [DateID] int NOT NULL,
        [Date] datetime NULL,
        [DateBKey] char(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DayOfMonth] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DaySuffix] varchar(4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DayName] varchar(9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DayOfWeek] char(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DayOfWeekInMonth] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DayOfWeekInYear] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DayOfQuarter] varchar(3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DayOfYear] varchar(3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [WeekOfMonth] varchar(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [WeekOfQuarter] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [WeekOfYear] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [Month] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [MonthName] varchar(9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [MonthOfQuarter] varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [Quarter] char(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [QuarterName] varchar(9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [Year] char(4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [YearName] char(7) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [MonthYear] char(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [MMYYYY] char(6) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [FirstDayOfMonth] date NULL,
        [LastDayOfMonth] date NULL,
        [FirstDayOfQuarter] date NULL,
        [LastDayOfQuarter] date NULL,
        [FirstDayOfYear] date NULL,
        [LastDayOfYear] date NULL,
        [IsHolidayUSA] bit NULL,
        [IsWeekday] bit NULL,
        [HolidayUSA] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
    )
    WITH
    (
        LOCATION = 'Date',
        DATA_SOURCE = NYTPublic,
        FILE_FORMAT = uncompressedcsv,
        REJECT_TYPE = value,
        REJECT_VALUE = 0
    ); 
    CREATE EXTERNAL TABLE [ext].[Geography]
    (
        [GeographyID] int NOT NULL,
        [ZipCodeBKey] varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
        [County] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [City] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [State] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [Country] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [ZipCode] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
    )
    WITH
    (
        LOCATION = 'Geography',
        DATA_SOURCE = NYTPublic,
        FILE_FORMAT = uncompressedcsv,
        REJECT_TYPE = value,
        REJECT_VALUE = 0 
    );      
    CREATE EXTERNAL TABLE [ext].[HackneyLicense]
    (
        [HackneyLicenseID] int NOT NULL,
        [HackneyLicenseBKey] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
        [HackneyLicenseCode] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
    )
    WITH
    (
        LOCATION = 'HackneyLicense',
        DATA_SOURCE = NYTPublic,
        FILE_FORMAT = uncompressedcsv,
        REJECT_TYPE = value,
        REJECT_VALUE = 0
    );
    CREATE EXTERNAL TABLE [ext].[Medallion]
    (
        [MedallionID] int NOT NULL,
        [MedallionBKey] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
        [MedallionCode] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
    )
    WITH
    (
        LOCATION = 'Medallion',
        DATA_SOURCE = NYTPublic,
        FILE_FORMAT = uncompressedcsv,
        REJECT_TYPE = value,
        REJECT_VALUE = 0
    )
    ;  
    CREATE EXTERNAL TABLE [ext].[Time]
    (
        [TimeID] int NOT NULL,
        [TimeBKey] varchar(8) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
        [HourNumber] tinyint NOT NULL,
        [MinuteNumber] tinyint NOT NULL,
        [SecondNumber] tinyint NOT NULL,
        [TimeInSecond] int NOT NULL,
        [HourlyBucket] varchar(15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
        [DayTimeBucketGroupKey] int NOT NULL,
        [DayTimeBucket] varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
    )
    WITH
    (
        LOCATION = 'Time',
        DATA_SOURCE = NYTPublic,
        FILE_FORMAT = uncompressedcsv,
        REJECT_TYPE = value,
        REJECT_VALUE = 0
    );
    CREATE EXTERNAL TABLE [ext].[Trip]
    (
        [DateID] int NOT NULL,
        [MedallionID] int NOT NULL,
        [HackneyLicenseID] int NOT NULL,
        [PickupTimeID] int NOT NULL,
        [DropoffTimeID] int NOT NULL,
        [PickupGeographyID] int NULL,
        [DropoffGeographyID] int NULL,
        [PickupLatitude] float NULL,
        [PickupLongitude] float NULL,
        [PickupLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [DropoffLatitude] float NULL,
        [DropoffLongitude] float NULL,
        [DropoffLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [PassengerCount] int NULL,
        [TripDurationSeconds] int NULL,
        [TripDistanceMiles] float NULL,
        [PaymentType] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [FareAmount] money NULL,
        [SurchargeAmount] money NULL,
        [TaxAmount] money NULL,
        [TipAmount] money NULL,
        [TollsAmount] money NULL,
        [TotalAmount] money NULL
    )
    WITH
    (
        LOCATION = 'Trip2013',
        DATA_SOURCE = NYTPublic,
        FILE_FORMAT = compressedcsv,
        REJECT_TYPE = value,
        REJECT_VALUE = 0
    );
    CREATE EXTERNAL TABLE [ext].[Weather]
    (
        [DateID] int NOT NULL,
        [GeographyID] int NOT NULL,
        [PrecipitationInches] float NOT NULL,
        [AvgTemperatureFahrenheit] float NOT NULL
    )
    WITH
    (
        LOCATION = 'Weather',
        DATA_SOURCE = NYTPublic,
        FILE_FORMAT = uncompressedcsv,
        REJECT_TYPE = value,
        REJECT_VALUE = 0
    )
    ;
    
  8. Dans l’Explorateur d’objets, développez mySampleDataWarehouse pour afficher la liste des tables externes que vous venez de créer.In Object Explorer, expand mySampleDataWarehouse to see the list of external tables you just created.

    Afficher les tables externes

Charger les données dans votre entrepôt de donnéesLoad the data into your data warehouse

Cette section utilise les tables externes que vous venez de définir pour charger les exemples de données d’Azure Storage Blob dans SQL Data Warehouse.This section uses the external tables you just defined to load the sample data from Azure Storage Blob to SQL Data Warehouse.

Notes

Ce didacticiel charge directement les données dans la table finale.This tutorial loads the data directly into the final table. Dans un environnement de production, vous utilisez généralement l’instruction CREATE TABLE AS SELECT pour procéder au chargement dans une table de mise en lots.In a production environment, you will usually use CREATE TABLE AS SELECT to load into a staging table. Lorsque les données se trouvent dans la table de mise en lots, vous pouvez effectuer toutes les transformations nécessaires.While data is in the staging table you can perform any necessary transformations. Pour ajouter les données de la table de mise en lots à une table de production, vous pouvez utiliser l’instruction INSERT...SELECT.To append the data in the staging table to a production table, you can use the INSERT...SELECT statement. Pour plus d’informations, voir Insertion de données dans une table de production.For more information, see Inserting data into a production table.

Le script utilise l’instruction T-SQL CREATE TABLE AS SELECT (CTAS) pour charger les données d’Azure Storage Blob dans de nouvelles tables de votre entrepôt de données.The script uses the CREATE TABLE AS SELECT (CTAS) T-SQL statement to load the data from Azure Storage Blob into new tables in your data warehouse. CTAS crée une table en fonction des résultats d’une instruction select.CTAS creates a new table based on the results of a select statement. La nouvelle table propose les mêmes colonnes et les mêmes types de données que les résultats de l’instruction select.The new table has the same columns and data types as the results of the select statement. Quand l’instruction select effectue une sélection dans une table externe, SQL Data Warehouse importe les données dans une table relationnelle de l’entrepôt de données.When the select statement selects from an external table, SQL Data Warehouse imports the data into a relational table in the data warehouse.

  1. Exécutez le script suivant pour charger les données dans de nouvelles tables de votre entrepôt de données.Run the following script to load the data into new tables in your data warehouse.

    CREATE TABLE [dbo].[Date]
    WITH
    ( 
        DISTRIBUTION = ROUND_ROBIN,
        CLUSTERED COLUMNSTORE INDEX
    )
    AS SELECT * FROM [ext].[Date]
    OPTION (LABEL = 'CTAS : Load [dbo].[Date]')
    ;
    CREATE TABLE [dbo].[Geography]
    WITH
    ( 
        DISTRIBUTION = ROUND_ROBIN,
        CLUSTERED COLUMNSTORE INDEX
    )
    AS
    SELECT * FROM [ext].[Geography]
    OPTION (LABEL = 'CTAS : Load [dbo].[Geography]')
    ;
    CREATE TABLE [dbo].[HackneyLicense]
    WITH
    ( 
        DISTRIBUTION = ROUND_ROBIN,
        CLUSTERED COLUMNSTORE INDEX
    )
    AS SELECT * FROM [ext].[HackneyLicense]
    OPTION (LABEL = 'CTAS : Load [dbo].[HackneyLicense]')
    ;
    CREATE TABLE [dbo].[Medallion]
    WITH
    (
        DISTRIBUTION = ROUND_ROBIN,
        CLUSTERED COLUMNSTORE INDEX
    )
    AS SELECT * FROM [ext].[Medallion]
    OPTION (LABEL = 'CTAS : Load [dbo].[Medallion]')
    ;
    CREATE TABLE [dbo].[Time]
    WITH
    (
        DISTRIBUTION = ROUND_ROBIN,
        CLUSTERED COLUMNSTORE INDEX
    )
    AS SELECT * FROM [ext].[Time]
    OPTION (LABEL = 'CTAS : Load [dbo].[Time]')
    ;
    CREATE TABLE [dbo].[Weather]
    WITH
    ( 
        DISTRIBUTION = ROUND_ROBIN,
        CLUSTERED COLUMNSTORE INDEX
    )
    AS SELECT * FROM [ext].[Weather]
    OPTION (LABEL = 'CTAS : Load [dbo].[Weather]')
    ;
    CREATE TABLE [dbo].[Trip]
    WITH
    (
        DISTRIBUTION = ROUND_ROBIN,
        CLUSTERED COLUMNSTORE INDEX
    )
    AS SELECT * FROM [ext].[Trip]
    OPTION (LABEL = 'CTAS : Load [dbo].[Trip]')
    ;
    
  2. Affichez vos données à mesure qu’elles sont chargées.View your data as it loads. Vous chargez plusieurs gigaoctets de données et les compressez au sein d’index de cluster columnstore hautes performances.You’re loading several GBs of data and compressing it into highly performant clustered columnstore indexes. Exécutez la requête suivante qui fait appel à des vues de gestion dynamique pour afficher l’état de la charge.Run the following query that uses a dynamic management views (DMVs) to show the status of the load. Une fois la requête démarrée, prenez un café et quelque chose à grignoter pendant que SQL Data Warehouse fait le gros du travail.After starting the query, grab a coffee and a snack while SQL Data Warehouse does some heavy lifting.

    SELECT
        r.command,
        s.request_id,
        r.status,
        count(distinct input_name) as nbr_files,
        sum(s.bytes_processed)/1024/1024/1024.0 as gb_processed
    FROM 
        sys.dm_pdw_exec_requests r
        INNER JOIN sys.dm_pdw_dms_external_work s
        ON r.request_id = s.request_id
    WHERE
        r.[label] = 'CTAS : Load [dbo].[Date]' OR
        r.[label] = 'CTAS : Load [dbo].[Geography]' OR
        r.[label] = 'CTAS : Load [dbo].[HackneyLicense]' OR
        r.[label] = 'CTAS : Load [dbo].[Medallion]' OR
        r.[label] = 'CTAS : Load [dbo].[Time]' OR
        r.[label] = 'CTAS : Load [dbo].[Weather]' OR
        r.[label] = 'CTAS : Load [dbo].[Trip]'
    GROUP BY
        r.command,
        s.request_id,
        r.status
    ORDER BY
        nbr_files desc, 
        gb_processed desc;
    
  3. Affichez toutes les requêtes du système.View all system queries.

    SELECT * FROM sys.dm_pdw_exec_requests;
    
  4. Vous pouvez constater que vos données sont efficacement chargées dans votre entrepôt de données.Enjoy seeing your data nicely loaded into your data warehouse.

    Afficher les tables chargées

S’authentifier à l’aide d’identités managées à charger (facultatif)Authenticate using managed identities to load (optional)

Charger avec PolyBase et s'authentifier via des identités managées est le mécanisme le plus sécurisé et vous permet de tirer parti des points de terminaison de service de réseau virtuel avec Stockage Azure.Loading using PolyBase and authenticating through managed identities is the most secure mechanism and enables you to leverage VNet Service Endpoints with Azure storage.

PrérequisPrerequisites

  1. Installez Azure PowerShell en vous aidant de ce guide.Install Azure PowerShell using this guide.
  2. Si vous disposez d’un compte de stockage d’objets blob ou v1 universel, vous devez commencer par le mettre à niveau avec un compte v2 universel en vous aidant de ce guide.If you have a general-purpose v1 or blob storage account, you must first upgrade to general-purpose v2 using this guide.
  3. Vous devez avoir activé Autoriser les services Microsoft approuvés à accéder à ce compte de stockage sous le menu de paramètres Pare-feux et réseaux virtuels du compte Stockage Azure.You must have Allow trusted Microsoft services to access this storage account turned on under Azure Storage account Firewalls and Virtual networks settings menu. Pour plus d’informations, consultez ce guide.Refer to this guide for more information.

ÉtapesSteps

  1. Dans PowerShell, inscrivez votre serveur SQL Database auprès d’Azure Active Directory (AAD) :In PowerShell, register your SQL Database server with Azure Active Directory (AAD):

    Connect-AzAccount
    Select-AzSubscription -SubscriptionId your-subscriptionId
    Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-database-servername -AssignIdentity
    
    1. Créez un compte de stockage v2 universel en vous aidant de ce guide.Create a general-purpose v2 Storage Account using this guide.

    Notes

    • Si vous disposez d’un compte de stockage d’objets blob ou v1 universel, vous devez d’abord le mettre à niveau avec v2 en vous aidant de ce guide.If you have a general-purpose v1 or blob storage account, you must first upgrade to v2 using this guide.
  2. Sous votre compte de stockage, accédez à Contrôle d’accès (IAM) , puis cliquez sur Ajouter une attribution de rôle.Under your storage account, navigate to Access Control (IAM), and click Add role assignment. Attribuez le rôle RBAC Contributeur aux données Blob de stockage à votre serveur SQL Database.Assign Storage Blob Data Contributor RBAC role to your SQL Database server.

    Notes

    Seuls les membres dotés du privilège Propriétaire peuvent effectuer cette étape.Only members with Owner privilege can perform this step. Pour découvrir les divers rôles intégrés pour les ressources Azure, consultez ce guide.For various built-in roles for Azure resources, refer to this guide.

  3. Connectivité PolyBase au compte Stockage Azure :Polybase connectivity to the Azure Storage account:

    1. Créez vos informations d’identification incluses dans l’étendue de la base de données avec IDENTITY = 'Managed Service Identity'  :Create your database scoped credential with IDENTITY = 'Managed Service Identity':

      CREATE DATABASE SCOPED CREDENTIAL msi_cred WITH IDENTITY = 'Managed Service Identity';
      

      Notes

      • Il est inutile de spécifier SECRET avec la clé d’accès Stockage Azure, car ce mécanisme utilise l’identité managée en arrière-plan.There is no need to specify SECRET with Azure Storage access key because this mechanism uses Managed Identity under the covers.
      • Le nom d’IDENTITY doit être 'Managed Service Identity' pour que la connectivité PolyBase entre le compte Stockage Azure.IDENTITY name should be 'Managed Service Identity' for PolyBase connectivity to work with Azure Storage account.
    2. Créer la source de données externe en spécifiant les informations d'identification incluses dans l'étendue de la base de données avec Managed Service Identity.Create the External Data Source specifying the Database Scoped Credential with the Managed Service Identity.

    3. Exécutez des requêtes comme vous le faites habituellement en utilisant des tables externes.Query as normal using external tables.

Consultez la documentation suivante pour configurer des points de terminaison de service de réseau virtuel pour SQL Data Warehouse.Refer to the following documentation if you'd like to set up virtual network service endpoints for SQL Data Warehouse.

Supprimer des ressourcesClean up resources

Vous êtes facturé en fonction des ressources de calcul et des données que vous avez chargées dans votre entrepôt de données.You are being charged for compute resources and data that you loaded into your data warehouse. Les deux sont facturés séparément.These are billed separately.

  • Si vous voulez conserver les données dans le stockage, vous pouvez suspendre le calcul quand vous n’utilisez pas l’entrepôt de données.If you want to keep the data in storage, you can pause compute when you aren't using the data warehouse. Quand vous suspendez le calcul, vous êtes facturé uniquement pour le stockage des données et vous pouvez reprendre le calcul dès que vous voulez utiliser les données.By pausing compute you will only be charge for data storage and you can resume the compute whenever you are ready to work with the data.
  • Si vous voulez éviter des frais futurs, vous pouvez supprimer l’entrepôt de données.If you want to remove future charges, you can delete the data warehouse.

Suivez ces étapes pour nettoyer les ressources selon vos besoins.Follow these steps to clean up resources as you desire.

  1. Connectez-vous au portail Azure, cliquez sur votre entrepôt de données.Log in to the Azure portal, click on your data warehouse.

    Supprimer des ressources

  2. Pour suspendre le calcul, cliquez sur le bouton Suspendre.To pause compute, click the Pause button. Quand l’entrepôt de données est suspendu, un bouton Démarrer s’affiche.When the data warehouse is paused, you will see a Start button. Pour reprendre le calcul, cliquez sur Démarrer.To resume compute, click Start.

  3. Pour supprimer l’entrepôt de données afin de ne pas être facturé pour le calcul ou le stockage, cliquez sur Supprimer.To remove the data warehouse so you won't be charged for compute or storage, click Delete.

  4. Pour supprimer le serveur SQL que vous avez créé, cliquez sur mynewserver-20180430.database.windows.net dans l’image précédente, puis sur Supprimer.To remove the SQL server you created, click mynewserver-20180430.database.windows.net in the previous image, and then click Delete. N’oubliez pas que la suppression du serveur supprime toutes les bases de données attribuées au serveur.Be careful with this as deleting the server will delete all databases assigned to the server.

  5. Pour supprimer le groupe de ressources, cliquez sur myResourceGroup, puis sur Supprimer le groupe de ressources.To remove the resource group, click myResourceGroup, and then click Delete resource group.

Étapes suivantesNext steps

Dans ce didacticiel, vous avez appris à créer un entrepôt de données et un utilisateur pour le chargement des données.In this tutorial, you learned how to create a data warehouse and create a user for loading data. Vous avez créé des tables externes pour définir la structure des données stockées dans Azure Storage Blob, puis avez utilisé l’instruction PolyBase CREATE TABLE AS SELECT pour charger des données dans votre entrepôt de données.You created external tables to define the structure for data stored in Azure Storage Blob, and then used the PolyBase CREATE TABLE AS SELECT statement to load data into your data warehouse.

Voici les étapes que vous avez effectuées :You did these things:

  • Créer un entrepôt de données dans le portail AzureCreated a data warehouse in the Azure portal
  • Configurer une règle de pare-feu au niveau du serveur dans le portail AzureSet up a server-level firewall rule in the Azure portal
  • Se connecter à l’entrepôt de données avec SSMSConnected to the data warehouse with SSMS
  • Créer un utilisateur désigné pour le chargement des donnéesCreated a user designated for loading data
  • Créer des tables externes pour les données dans Azure Storage BlobCreated external tables for data in Azure Storage Blob
  • Utiliser l’instruction T-SQL CTAS pour charger les données dans votre entrepôt de donnéesUsed the CTAS T-SQL statement to load data into your data warehouse
  • Afficher la progression des données à mesure du chargementViewed the progress of data as it is loading
  • Créer des statistiques sur les données nouvellement chargéesCreated statistics on the newly loaded data

Passez à la vue d’ensemble du développement pour savoir comment migrer une base de données existante vers SQL Data Warehouse.Advance to the development overview to learn how to migrate an existing database to SQL Data Warehouse.