Caricare dati con PolyBase in SQL Data WarehouseLoad data with PolyBase in SQL Data Warehouse

Questa esercitazione illustra come caricare dati in SQL Data Warehouse mediante AzCopy e PolyBase.This tutorial shows how to load data into SQL Data Warehouse using AzCopy and PolyBase. Al termine, si sarà in grado di:When finished, you will know how to:

  • Usare AzCopy per copiare dati nell'archivio BLOB di AzureUse AzCopy to copy data to Azure blob storage
  • Creare oggetti di database per definire i datiCreate database objects to define the data
  • Eseguire una query T-SQL per caricare i datiRun a T-SQL query to load the data

PrerequisitiPrerequisites

Per eseguire questa esercitazione, sono necessari:To step through this tutorial, you need

  • Un database di SQL Data Warehouse.A SQL Data Warehouse database.
  • Un account di archiviazione di Azure di tipo Archiviazione con ridondanza locale Standard (Standard-LRS), Archiviazione con ridondanza geografica Standard (Standard-GRS) o Archiviazione con ridondanza geografica e accesso in lettura Standard (Standard-RAGRS).An Azure storage account of type Standard Locally Redundant Storage (Standard-LRS), Standard Geo-Redundant Storage (Standard-GRS), or Standard Read-Access Geo-Redundant Storage (Standard-RAGRS).
  • Utilità da riga di comando di AzCopy.AzCopy Command-Line Utility. Scaricare e installare la versione più recente di AzCopy, installata insieme agli Strumenti di archiviazione di Microsoft Azure.Download and install the latest version of AzCopy which is installed with the Microsoft Azure Storage Tools.

    Strumenti di archiviazione di Azure

Passaggio 1: Aggiungere dati di esempio all'archivio BLOB di AzureStep 1: Add sample data to Azure blob storage

Per caricare dati, è necessario inserire dati di esempio in un archivio BLOB di Azure.In order to load data, we need to put some sample data into an Azure blob storage. In questo passaggio un BLOB di Archiviazione di Azure viene popolato con dati di esempio.In this step we populate an Azure Storage blob with sample data. In seguito verrà usato PolyBase per caricare i dati esempio nel database di SQL Data Warehouse.Later, we will use PolyBase to load this sample data into your SQL Data Warehouse database.

A.A. Preparare un file di testo di esempioPrepare a sample text file

Per preparare un file di testo di esempio:To prepare a sample text file:

  1. Aprire il Blocco note e copiare le righe di dati seguenti in un nuovo file.Open Notepad and copy the following lines of data into a new file. Salvare il file nella directory temporanea locale come %temp%\DimDate2.txt.Save this to your local temp directory as %temp%\DimDate2.txt.
20150301,1,3
20150501,2,4
20151001,4,2
20150201,1,3
20151201,4,2
20150801,3,1
20150601,2,4
20151101,4,2
20150401,2,4
20150701,3,1
20150901,3,1
20150101,1,3

B.B. Individuare l'endpoint di servizio BLOBFind your blob service endpoint

Per individuare l'endpoint di servizio BLOB:To find your blob service endpoint:

  1. Nel portale di Azure selezionare Esplora > Account di archiviazione.From the Azure Portal select Browse > Storage Accounts.
  2. Fare clic sull'account di archiviazione da usare.Click the storage account you want to use.
  3. Nel pannello Account di archiviazione fare clic su BLOB.In the Storage account blade, click Blobs

    Selezione dei BLOB

  4. Salvare l'URL dell'endpoint di servizio BLOB per un momento successivo.Save your blob service endpoint URL for later.

    Endpoint di servizio BLOB

C.C. Individuare la chiave di archiviazione di AzureFind your Azure storage key

Per individuare la chiave di archiviazione di Azure:To find your Azure storage key:

  1. Nel portale di Azure selezionare Esplora > Account di archiviazione.From the Azure Portal, select Browse > Storage Accounts.
  2. Fare clic sull'account di archiviazione da usare.Click on the storage account you want to use.
  3. Selezionare Tutte le impostazioni > Chiavi di accesso.Select All settings > Access keys.
  4. Fare clic sulla casella Copia per copiare una delle chiavi di accesso negli Appunti.Click the copy box to copy one of your access keys to the clipboard.

    Copia della chiave di archiviazione di Azure

D.D. Copiare il file di esempio nell'archivio BLOB di AzureCopy the sample file to Azure blob storage

Per copiare i dati nell'archivio BLOB di Azure:To copy your data to Azure blob storage:

  1. Aprire un prompt dei comandi e cambiare le directory, specificando la directory di installazione di AzCopy.Open a command prompt, and change directories to the AzCopy installation directory. Questo comando imposta la directory di installazione predefinita in un client Windows a 64 bit.This command changes to the default installation directory on a 64-bit Windows client.

    cd /d "%ProgramFiles(x86)%\Microsoft SDKs\Azure\AzCopy"
    
  2. Eseguire il comando seguente per caricare il file.Run the following command to upload the file. Specificare l'URL dell'endpoint di servizio BLOB per e la chiave dell'account di archiviazione di Azure per <azure_storage_account_key>.Specify your blob service endpoint URL for and your Azure storage account key for <azure_storage_account_key>.

    .\AzCopy.exe /Source:C:\Temp\ /Dest:<blob service endpoint URL> /datacontainer/datedimension/ /DestKey:<azure_storage_account_key> /Pattern:DimDate2.txt
    

Vedere anche Introduzione all'utilità della riga di comando AzCopy.See also Getting Started with the AzCopy Command-Line Utility.

E.E. Esplorare il contenitore di archiviazione BLOBExplore your blob storage container

Per visualizzare il file caricato nell'archivio BLOB:To see the file you uploaded to blob storage:

  1. Tornare al pannello del servizio BLOB.Go back to your Blob service blade.
  2. In Contenitori fare doppio clic su datacontainer.Under Containers, double-click datacontainer.
  3. Per esplorare il percorso dei dati, fare clic sulla cartella datedimension, in cui è disponibile il file caricato DimDate2.txt.To explore the path to your data, click the folder datedimension and you will see your uploaded file DimDate2.txt.
  4. Per visualizzare le proprietà, fare clic su DimDate2.txt.To view properties, click DimDate2.txt.
  5. Si noti che nel pannello delle proprietà BLOB è possibile scaricare o eliminare il file.Note that in the Blob properties blade, you can download or delete the file.

    Visualizzazione del BLOB di archiviazione di Azure

Passaggio 2: Creare una tabella esterna per i dati di esempioStep 2: Create an external table for the sample data

In questa sezione viene creata una tabella esterna che definisce i dati di esempio.In this section we create an external table that defines the sample data.

PolyBase usa le tabelle esterne per accedere ai dati nell'archivio BLOB di Azure.PolyBase uses external tables to access data in Azure blob storage. Poiché i dati non vengono archiviati in SQL Data Warehouse, PolyBase gestisce l'autenticazione per i dati esterni usando credenziali con ambito database.Since the data is not stored within SQL Data Warehouse, PolyBase handles authentication to the external data by using a database-scoped credential.

L'esempio in questo passaggio usa queste istruzioni Transact-SQL per creare una tabella esterna.The example in this step uses these Transact-SQL statements to create an external table.

Eseguire questa query nel database di SQL Data Warehouse.Run this query against your SQL Data Warehouse database. Verrà creata una tabella esterna denominata DimDate2External nello schema dbo che fa riferimento ai dati di esempio DimDate2.txt nell'archivio BLOB di Azure.It will create an external table named DimDate2External in the dbo schema that points to the DimDate2.txt sample data in the Azure blob storage.

-- A: Create a master key.
-- Only necessary if one does not already exist.
-- Required to encrypt the credential secret in the next step.

CREATE MASTER KEY;


-- B: Create a database scoped credential
-- IDENTITY: Provide any string, it is not used for authentication to Azure storage.
-- SECRET: Provide your Azure storage account key.


CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
    IDENTITY = 'user',
    SECRET = '<azure_storage_account_key>'
;


-- C: Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure blob storage.
-- LOCATION: Provide Azure storage account name and blob container name.
-- CREDENTIAL: Provide the credential created in the previous step.

CREATE EXTERNAL DATA SOURCE AzureStorage
WITH (
    TYPE = HADOOP,
    LOCATION = 'wasbs://<blob_container_name>@<azure_storage_account_name>.blob.core.windows.net',
    CREDENTIAL = AzureStorageCredential
);


-- D: Create an external file format
-- FORMAT_TYPE: Type of file format in Azure storage (supported: DELIMITEDTEXT, RCFILE, ORC, PARQUET).
-- FORMAT_OPTIONS: Specify field terminator, string delimiter, date format etc. for delimited text files.
-- Specify DATA_COMPRESSION method if data is compressed.

CREATE EXTERNAL FILE FORMAT TextFile
WITH (
    FORMAT_TYPE = DelimitedText,
    FORMAT_OPTIONS (FIELD_TERMINATOR = ',')
);


-- E: Create the external table
-- Specify column names and data types. This needs to match the data in the sample file.
-- LOCATION: Specify path to file or directory that contains the data (relative to the blob container).
-- To point to all files under the blob container, use LOCATION='.'

CREATE EXTERNAL TABLE dbo.DimDate2External (
    DateId INT NOT NULL,
    CalendarQuarter TINYINT NOT NULL,
    FiscalQuarter TINYINT NOT NULL
)
WITH (
    LOCATION='/datedimension/',
    DATA_SOURCE=AzureStorage,
    FILE_FORMAT=TextFile
);


-- Run a query on the external table

SELECT count(*) FROM dbo.DimDate2External;

In Esplora oggetti di SQL Server in Visual Studio è possibile visualizzare il formato di file esterno, l'origine dati esterna e la tabella DimDate2External.In SQL Server Object Explorer in Visual Studio, you can see the external file format, external data source, and the DimDate2External table.

Visualizzazione della tabella esterna

Passaggio 3: Caricare i dati in SQL Data WarehouseStep 3: Load data into SQL Data Warehouse

Dopo la creazione della tabella esterna, è possibile caricare i dati in una nuova tabella o inserirli in una tabella esistente.Once the external table is created, you can either load the data into a new table or insert it into an existing table.

  • Per caricare i dati in una nuova tabella, eseguire l'istruzione CREATE TABLE AS SELECT (Transact-SQL).To load the data into a new table, run the CREATE TABLE AS SELECT (Transact-SQL) statement. La nuova tabella includerà le colonne indicate nella query.The new table will have the columns named in the query. I tipi di dati della colonna corrisponderanno ai tipi di dati nella definizione della tabella esterna.The data types of the columns will match the data types in the external table definition.
  • Per caricare i dati in una tabella esistente, usare l'istruzione INSERT...SELECT (Transact-SQL).To load the data into an existing table, use the INSERT...SELECT (Transact-SQL) statement.
-- Load the data from Azure blob storage to SQL Data Warehouse

CREATE TABLE dbo.DimDate2
WITH
(   
    CLUSTERED COLUMNSTORE INDEX,
    DISTRIBUTION = ROUND_ROBIN
)
AS
SELECT * FROM [dbo].[DimDate2External];

Passaggio 4: Creare statistiche sui dati appena caricatiStep 4: Create statistics on your newly loaded data

SQL Data Warehouse non crea automaticamente o aggiorna automaticamente le statistiche.SQL Data Warehouse does not auto-create or auto-update statistics. Per ottenere prestazioni elevate per le query, è quindi importante creare statistiche su ogni colonna di ogni tabella dopo il primo carico.Therefore, to achieve high query performance, it's important to create statistics on each column of each table after the first load. È anche importante aggiornare le statistiche dopo modifiche sostanziali dei dati.It's also important to update statistics after substantial changes in the data.

Questo esempio crea statistiche relative a singole colonne nella nuova tabella DimDate2.This example creates single-column statistics on the new DimDate2 table.

CREATE STATISTICS [DateId] on [DimDate2] ([DateId]);
CREATE STATISTICS [CalendarQuarter] on [DimDate2] ([CalendarQuarter]);
CREATE STATISTICS [FiscalQuarter] on [DimDate2] ([FiscalQuarter]);

Per altre informazioni, vedere Statistiche.To learn more, see Statistics.

Passaggi successiviNext steps

Per altre informazioni utili durante lo sviluppo di una soluzione che usa PolyBase, vedere la guida su PolyBase.See the PolyBase guide for further information you should know as you develop a solution that uses PolyBase.