Tutorial: carregar dados dos táxis de Nova York para o SQL Data Warehouse do AzureTutorial: Load New York Taxicab data to Azure SQL Data Warehouse

Este tutorial usa o polybase para carregar dados de dos táxis de Nova York de um blob global do Azure para o Azure SQL Data Warehouse.This tutorial uses PolyBase to load New York Taxicab data from a global Azure blob to Azure SQL Data Warehouse. Este tutorial usa o Portal do Azure e o SSMS (SQL Server Management Studio) para:The tutorial uses the Azure portal and SQL Server Management Studio (SSMS) to:

  • Criar um data warehouse no Portal do AzureCreate a data warehouse in the Azure portal
  • Configurar uma regra de firewall de nível de servidor no Portal do AzureSet up a server-level firewall rule in the Azure portal
  • Conectar-se ao data warehouse com o SSMSConnect to the data warehouse with SSMS
  • Criar um usuário designado para carregar dadosCreate a user designated for loading data
  • Criar tabelas externas para dados no armazenamento de blobs do AzureCreate external tables for data in Azure blob storage
  • Usar a instrução CTAS T-SQL para carregar dados para seu data warehouseUse the CTAS T-SQL statement to load data into your data warehouse
  • Exibir o andamento dos dados enquanto estão sendo carregadosView the progress of data as it is loading
  • Criar estatísticas sobre os dados recém-carregadosCreate statistics on the newly loaded data

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Antes de começarBefore you begin

Antes de iniciar este tutorial, baixe e instale a versão mais recente do SSMS (SQL Server Management Studio).Before you begin this tutorial, download and install the newest version of SQL Server Management Studio (SSMS).

Faça logon no Portal do AzureLog in to the Azure portal

Faça logon no Portal do Azure.Log in to the Azure portal.

Criar um SQL Data Warehouse em brancoCreate a blank SQL Data Warehouse

Uma SQL Data Warehouse do Azure é criada com um conjunto definido de [recursos de computação] memória-Concurrency-limits.md).An Azure SQL Data Warehouse is created with a defined set of [compute resources]memory-concurrency-limits.md). O banco de dados é criado dentro de um grupo de recursos do Azure e em um servidor lógico SQL do Azure.The database is created within an Azure resource group and in an Azure SQL logical server.

Siga estas etapas para criar um SQL Data Warehouse em branco.Follow these steps to create a blank SQL Data Warehouse.

  1. Clique em Criar um recurso no canto superior esquerdo do Portal do Azure.Click Create a resource in the upper left-hand corner of the Azure portal.

  2. Selecione Bancos de dados na página Novo e selecione SQL Data Warehouse em Em destaque na página Novo.Select Databases from the New page, and select SQL Data Warehouse under Featured on the New page.

    criar data warehouse

  3. Preencha o formulário do SQL Data Warehouse com as seguintes informações:Fill out the SQL Data Warehouse form with the following information:

    ConfiguraçãoSetting Valor sugeridoSuggested value DESCRIÇÃODescription
    Nome do banco de dadosDatabase name meuDataWarehouseDeExemplomySampleDataWarehouse Para ver os nomes do banco de dados válidos, consulte Identificadores do Banco de Dados.For valid database names, see Database Identifiers.
    AssinaturaSubscription Sua assinaturaYour subscription Para obter detalhes sobre suas assinaturas, consulte Assinaturas.For details about your subscriptions, see Subscriptions.
    Grupo de recursosResource group myResourceGroupmyResourceGroup Para ver os nomes do grupo de recursos válidos, consulte Regras e restrições de nomenclatura.For valid resource group names, see Naming rules and restrictions.
    Selecionar fonteSelect source Banco de dados em brancoBlank database Especifique para criar um banco de dados em branco.Specifies to create a blank database. Observe que um data warehouse é um tipo de banco de dados.Note, a data warehouse is one type of database.

    criar data warehouse

  4. Clique em Servidor para criar e configurar um novo servidor para o novo banco de dados.Click Server to create and configure a new server for your new database. Preencha o formulário Novo servidor com as seguintes informações:Fill out the New server form with the following information:

    ConfiguraçãoSetting Valor sugeridoSuggested value DESCRIÇÃODescription
    Nome do servidorServer name Qualquer nome exclusivo globalmenteAny globally unique name Para ver os nomes do servidor válidos, consulte Regras e restrições de nomenclatura.For valid server names, see Naming rules and restrictions.
    Logon de administrador do servidorServer admin login Qualquer nome válidoAny valid name Para ver os nomes de logon válidos, consulte Identificadores do Banco de Dados.For valid login names, see Database Identifiers.
    SenhaPassword Qualquer senha válidaAny valid password Sua senha deve ter, pelo menos, oito caracteres e deve conter caracteres de três das seguintes categorias: caracteres com letras maiúsculas, letras minúsculas, números e caracteres não alfanuméricos.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.
    LocalidadeLocation Qualquer local válidoAny valid location Para obter mais informações sobre as regiões, consulte Regiões do Azure.For information about regions, see Azure Regions.

    criar servidor de banco de dados

  5. Clique em Selecionar.Click Select.

  6. Clique em Nível de desempenho para especificar se o data warehouse é Gen1 ou Gen2 e o número de unidades do data warehouse.Click Performance level to specify whether the data warehouse is Gen1 or Gen2, and the number of data warehouse units.

  7. Para este tutorial, selecione Gen2 de SQL data warehouse.For this tutorial, select Gen2 of SQL Data Warehouse. O controle deslizante é definido como DW1000c por padrão.The slider is set to DW1000c by default. Experimente movê-lo para cima e para baixo para ver como ele funciona.Try moving it up and down to see how it works.

    configurar o desempenho

  8. Clique em Aplicar.Click Apply.

  9. Na página do SQL Data Warehouse, selecione uma ordenação para o banco de dados em branco.In the SQL Data Warehouse page, select a collation for the blank database. Neste tutorial, use o valor padrão.For this tutorial, use the default value. Para obter mais informações sobre ordenações, confira OrdenaçõesFor more information about collations, see Collations

  10. Agora que você concluiu o formulário do Banco de Dados SQL, clique em Criar para provisionar o banco de dados.Now that you have completed the SQL Database form, click Create to provision the database. O provisionamento demora alguns minutos.Provisioning takes a few minutes.

    clique em criar

  11. Na barra de ferramentas, clique em Notificações para monitorar o processo de implantação.On the toolbar, click Notifications to monitor the deployment process.

    notificação

Criar uma regra de firewall no nível de servidorCreate a server-level firewall rule

O serviço do SQL Data Warehouse cria um firewall no nível do servidor que impede que os aplicativos e ferramentas externos conectem-se ao servidor ou a bancos de dados no servidor.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. Para habilitar a conectividade, é possível adicionar regras de firewall que habilitem a conectividade para endereços IP específicos.To enable connectivity, you can add firewall rules that enable connectivity for specific IP addresses. Siga estas etapas para criar uma regra de firewall de nível de servidor para o endereço IP do seu cliente.Follow these steps to create a server-level firewall rule for your client's IP address.

Observação

O SQL Data Warehouse comunica-se pela porta 1433.SQL Data Warehouse communicates over port 1433. Se você estiver tentando conectar-se de dentro de uma rede corporativa, o tráfego de saída pela porta 1433 talvez não seja permitido pelo firewall de sua rede.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. Se isto acontecer, você não poderá conectar o servidor do Banco de Dados SQL do Azure, a menos que o departamento de TI abra a porta 1433.If so, you cannot connect to your Azure SQL Database server unless your IT department opens port 1433.

  1. Depois da implantação ser concluída, clique em Bancos de dados SQL no menu à esquerda, depois, clique em mySampleDatabase na página Bancos de dados SQL.After the deployment completes, click SQL databases from the left-hand menu and then click mySampleDatabase on the SQL databases page. A página de visão geral de seu banco de dados é aberta, mostrando o nome do servidor totalmente qualificado (como meunovoservidor-20180430.database.windows.net) e fornece opções para configurações adicionais.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. Copie esse nome do servidor totalmente qualificado para se conectar ao servidor e a seus bancos de dados nos próximos guias de início rápido.Copy this fully qualified server name for use to connect to your server and its databases in subsequent quick starts. Em seguida, clique no nome do servidor para abrir as configurações do servidor.Then click on the server name to open server settings.

    localizar o nome do servidor

  3. Clique no nome do servidor para abrir as configurações do servidor.Click the server name to open server settings.

    configurações do servidor

  4. Clique em Mostrar configurações de firewall.Click Show firewall settings. A página Configurações do firewall do servidor do Banco de Dados SQL é aberta.The Firewall settings page for the SQL Database server opens.

    regra de firewall do servidor

  5. Clique em Adicionar IP do cliente na barra de ferramentas para adicionar seu endereço IP atual a uma nova regra de firewall.Click Add client IP on the toolbar to add your current IP address to a new firewall rule. Uma regra de firewall pode abrir a porta 1433 para um único endereço IP ou um intervalo de endereços IP.A firewall rule can open port 1433 for a single IP address or a range of IP addresses.

  6. Clique em Salvar.Click Save. Uma regra de firewall no nível do servidor é criada para a porta de abertura 1433 de seu endereço IP atual no servidor lógico.A server-level firewall rule is created for your current IP address opening port 1433 on the logical server.

  7. Clique em OK, em seguida, feche a página Configurações do Firewall.Click OK and then close the Firewall settings page.

Agora é possível conectar-se ao SQL Server e a seus data warehouses usando este endereço IP.You can now connect to the SQL server and its data warehouses using this IP address. A conexão funciona no SQL Server Management Studio ou em outra ferramenta de sua escolha.The connection works from SQL Server Management Studio or another tool of your choice. Quando você se conectar, use a conta ServerAdmin criada anteriormente.When you connect, use the ServerAdmin account you created previously.

Importante

Por padrão, o acesso através do firewall do Banco de Dados SQL está habilitado para todos os serviços do Azure.By default, access through the SQL Database firewall is enabled for all Azure services. Clique em DESLIGAR nesta página e, em seguida, clique em Salvar para desabilitar o firewall para todos os serviços do Azure.Click OFF on this page and then click Save to disable the firewall for all Azure services.

Obter o nome do servidor totalmente qualificadoGet the fully qualified server name

Obtenha o nome do servidor totalmente qualificado para seu SQL Server no Portal do Azure.Get the fully qualified server name for your SQL server in the Azure portal. Posteriormente, você usará o nome totalmente qualificado ao se conectar ao servidor.Later you will use the fully qualified name when connecting to the server.

  1. Faça logon no Portal do Azure.Log in to the Azure portal.

  2. Selecione SQL Data Warehouse no menu à esquerda e clique em seu banco de dados na página SQL Data Warehouse.Select SQL Data warehouses from the left-hand menu, and click your database on the SQL data warehouses page.

  3. No painel Essentials, na página do Portal do Azure de seu banco de dados, localize e copie o Nome do servidor.In the Essentials pane in the Azure portal page for your database, locate and then copy the Server name. Neste exemplo, o nome totalmente qualificado é meunovoservidor-20180430.database.windows.net.In this example, the fully qualified name is mynewserver-20180430.database.windows.net.

    informações da conexão

Conectar-se ao servidor como administrador do servidorConnect to the server as server admin

Esta seção usa o SSMS (SQL Server Management Studio) para estabelecer uma conexão com o SQL Server do Azure.This section uses SQL Server Management Studio (SSMS) to establish a connection to your Azure SQL server.

  1. Abra o SQL Server Management Studio.Open SQL Server Management Studio.

  2. Na caixa de diálogo Conectar ao Servidor, insira as informações a seguir:In the Connect to Server dialog box, enter the following information:

    ConfiguraçãoSetting       Valor sugeridoSuggested value DESCRIÇÃODescription
    Tipo de servidorServer type Mecanismo de banco de dadosDatabase engine Esse valor é obrigatórioThis value is required
    Nome do servidorServer name O nome do servidor totalmente qualificadoThe fully qualified server name O nome deve ser semelhante a este: mynewserver-20180430.database.windows.net.The name should be something like this: mynewserver-20180430.database.windows.net.
    AutenticaçãoAuthentication Autenticação do SQL ServerSQL Server Authentication A Autenticação do SQL é o único tipo de autenticação que configuramos neste tutorial.SQL Authentication is the only authentication type that we have configured in this tutorial.
    LogonLogin A conta do administrador do servidorThe server admin account Esta é a conta que você especificou quando criou o servidor.This is the account that you specified when you created the server.
    SenhaPassword A senha para sua conta do administrador do servidorThe password for your server admin account Esta é a senha que você especificou quando criou o servidor.This is the password that you specified when you created the server.

    conectar-se ao servidor

  3. Clique em Conectar.Click Connect. A janela Pesquisador de Objetos abre no SSMS.The Object Explorer window opens in SSMS.

  4. No Pesquisador de Objetos, expanda Bancos de dados.In Object Explorer, expand Databases. Em seguida, expanda Bancos de dados do sistema e mestre para exibir os objetos no banco de dados mestre.Then expand System databases and master to view the objects in the master database. Expanda mySampleDatabase para exibir os objetos no novo banco de dados.Expand mySampleDatabase to view the objects in your new database.

    objetos de banco de dados

Criar um usuário para carregar dadosCreate a user for loading data

A conta do administrador do servidor é destinada a executar operações de gerenciamento, e não é adequada para executar consultas nos dados do usuário.The server admin account is meant to perform management operations, and is not suited for running queries on user data. O carregamento de dados é uma operação com uso intensivo de memória.Loading data is a memory-intensive operation. Os máximos de memória são definidos de acordo com a Geração do SQL Data Warehouse que tiver provisionado, as unidades de data warehouse e classe de recurso.Memory maximums are defined according to which Generation of SQL Data Warehouse you've provisioned, data warehouse units, and resource class.

É melhor criar um logon e um usuário dedicados para carregar dados.It's best to create a login and user that is dedicated for loading data. Em seguida, adicione o usuário carregado a uma classe de recurso que permita uma alocação máxima de memória adequada.Then add the loading user to a resource class that enables an appropriate maximum memory allocation.

Como você está, no momento, conectado como o administrador do servidor, é possível criar logons e usuários.Since you are currently connected as the server admin, you can create logins and users. Use estas etapas para criar um logon e um usuário chamado LoaderRC20.Use these steps to create a login and user called LoaderRC20. Em seguida, atribua o usuário à classe de recurso staticrc20.Then assign the user to the staticrc20 resource class.

  1. No SSMS, clique com o botão direito do mouse em mestre para mostrar um menu suspenso e escolha Nova consulta.In SSMS, right-click master to show a drop-down menu, and choose New Query. Uma nova janela de consulta é aberta.A new query window opens.

    Nova consulta no mestre

  2. Na janela de consulta, insira esses comandos T-SQL para criar um logon e um usuário chamado LoaderRC20, substituindo sua própria senha para '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. Clique em Executar.Click Execute.

  4. Clique com o botão direito do mouse em mySampleDataWarehouse e escolha Nova consulta.Right-click mySampleDataWarehouse, and choose New Query. Uma nova janela de consulta é aberta.A new query Window opens.

    Nova consulta no data warehouse de exemplo

  5. Insira os comandos T-SQL a seguir para criar um usuário de banco de dados chamado LoaderRC20 para o logon LoaderRC20.Enter the following T-SQL commands to create a database user named LoaderRC20 for the LoaderRC20 login. A segunda linha concede ao novo usuário permissões de CONTROLE sobre o novo data warehouse.The second line grants the new user CONTROL permissions on the new data warehouse. Essas permissões são semelhantes para tornar o usuário o proprietário do banco de dados.These permissions are similar to making the user the owner of the database. A terceira linha adiciona o novo usuário como um membro da classe de recurso 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. Clique em Executar.Click Execute.

Conectar-se ao servidor como o usuário carregadoConnect to the server as the loading user

A primeira etapa para carregar os dados é fazer logon como LoaderRC20.The first step toward loading data is to login as LoaderRC20.

  1. No Pesquisador de Objetos, clique no menu suspenso Conectar e selecione Mecanismo de Banco de Dados.In Object Explorer, click the Connect drop down menu and select Database Engine. A caixa de diálogo Conectar-se ao Servidor é exibida.The Connect to Server dialog box appears.

    Conectar-se com o novo logon

  2. Insira o nome do servidor totalmente qualificado, e vez insira LoaderRC20 como o Logon.Enter the fully qualified server name, and enter LoaderRC20 as the Login. Insira sua senha para LoaderRC20.Enter your password for LoaderRC20.

  3. Clique em Conectar.Click Connect.

  4. Quando sua conexão estiver pronta, você verá duas conexões de servidor no Pesquisador de Objetos.When your connection is ready, you will see two server connections in Object Explorer. Uma conexão como ServerAdmin e outra como MedRCLogin.One connection as ServerAdmin and one connection as MedRCLogin.

    A conexão é bem-sucedida

Criar tabelas externas para os dados de exemploCreate external tables for the sample data

Você está pronto para iniciar o processo de carregamento de dados em seu novo data warehouse.You are ready to begin the process of loading data into your new data warehouse. Este tutorial mostra como usar tabelas externas para carregar dados dos táxis de Nova York de um Azure Storage Blob.This tutorial shows you how to use external tables to load New York City taxi cab data from an Azure storage blob. Para uma referência futura, para saber como obter os dados para o armazenamento de blobs do Azure ou carregá-los diretamente do seu código-fonte no SQL Data Warehouse, consulte a visão geral do carregamento.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.

Execute os seguintes scripts SQL especificam informações sobre os dados que deseja carregar.Run the following SQL scripts specify information about the data you wish to load. Essas informações incluem o local em que os dados estão localizados, o formato do conteúdo dos dados e a definição da tabela para os dados.This information includes where the data is located, the format of the contents of the data, and the table definition for the data.

  1. Na seção anterior, você fez logon em seu data warehouse como LoaderRC20.In the previous section, you logged into your data warehouse as LoaderRC20. No SSMS, clique com o botão direito do mouse em sua conexão LoaderRC20 e selecione Nova consulta.In SSMS, right-click your LoaderRC20 connection and select New Query. Uma nova janela de consulta é exibida.A new query window appears.

    Nova janela de consulta de carregamento

  2. Compare a janela de consulta com a imagem anterior.Compare your query window to the previous image. Verifique se a nova janela de consulta está em execução como LoaderRC20 e está executando consultas no banco de dados MySampleDataWarehouse.Verify your new query window is running as LoaderRC20 and performing queries on your MySampleDataWarehouse database. Use essa janela de consulta para executar todas as etapas de carregamento.Use this query window to perform all of the loading steps.

  3. Crie uma chave mestra para o banco de dados MySampleDataWarehouse.Create a master key for the MySampleDataWarehouse database. Você só precisa criar uma chave mestra uma vez por banco de dados.You only need to create a master key once per database.

    CREATE MASTER KEY;
    
  4. Execute a seguinte instrução CREATE EXTERNAL DATA SOURCE para definir o local do blob do Azure.Run the following CREATE EXTERNAL DATA SOURCE statement to define the location of the Azure blob. Esse é o local dos dados de táxis externos.This is the location of the external taxi cab data. Para executar um comando que você acrescentou à janela de consulta, realce os comandos que deseja executar e clique em Executar.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. Execute a seguinte instrução T-SQL CREATE EXTERNAL FILE FORMAT para especificar opções e características de formatação para o arquivo de dados externo.Run the following CREATE EXTERNAL FILE FORMAT T-SQL statement to specify formatting characteristics and options for the external data file. Essa instrução especifica que os dados externos são armazenados como texto, e os valores são separados pelo caractere barra vertical ('|').This statement specifies the external data is stored as text and the values are separated by the pipe ('|') character. O arquivo externo é compactado com 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. Execute a seguinte instrução CREATE SCHEMA para criar um esquema para o formato de arquivo externo.Run the following CREATE SCHEMA statement to create a schema for your external file format. O esquema fornece uma maneira de organizar as tabelas externas que você está prestes a criar.The schema provides a way to organize the external tables you are about to create.

    CREATE SCHEMA ext;
    
  7. Crie as tabelas externas.Create the external tables. As definições de tabela são armazenadas no SQL Data Warehouse, mas os dados de referência de tabela são armazenados no armazenamento de blobs do Azure.The table definitions are stored in SQL Data Warehouse, but the tables reference data that is stored in Azure blob storage. Execute os seguintes comandos T-SQL para criar várias tabelas externas que apontam para o blob do Azure definido anteriormente na nossa fonte de dados externa.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. No Pesquisador de Objetos, expanda mySampleDataWarehouse para ver a lista de tabelas externas que você acabou de criar.In Object Explorer, expand mySampleDataWarehouse to see the list of external tables you just created.

    Exibir tabelas externas

Carregar os dados em seu data warehouseLoad the data into your data warehouse

Esta seção usa as tabelas externas que você acabou de definir para carregar os dados de exemplo do Azure Storage Blob para o 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.

Observação

Este tutorial carrega os dados diretamente na tabela final.This tutorial loads the data directly into the final table. Em um ambiente de produção, você normalmente usará CREATE TABLE AS SELECT para carregar em uma tabela de preparo.In a production environment, you will usually use CREATE TABLE AS SELECT to load into a staging table. Enquanto os dados estão na tabela de preparo, você pode executar todas as transformações necessárias.While data is in the staging table you can perform any necessary transformations. Para acrescentar os dados na tabela de preparo a uma tabela de produção, você pode usar a instrução INSERT...SELECT.To append the data in the staging table to a production table, you can use the INSERT...SELECT statement. Para saber mais, confira Inserindo dados em uma tabela de produção.For more information, see Inserting data into a production table.

O script usa a instrução T-SQL CTAS (CREATE TABLE AS SELECT) para carregar os dados do Azure Storage Blob para novas tabelas no data warehouse.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. A CTAS cria uma nova tabela com base nos resultados de uma instrução select.CTAS creates a new table based on the results of a select statement. A nova tabela tem as mesmas colunas e tipos de dados que os resultados da instrução select.The new table has the same columns and data types as the results of the select statement. Quando a instrução select seleciona de uma tabela externa, o SQL Data Warehouse importa os dados para uma tabela relacional no data warehouse.When the select statement selects from an external table, SQL Data Warehouse imports the data into a relational table in the data warehouse.

  1. Execute o seguinte script para carregar os dados para novas tabelas no data warehouse.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. Exiba os dados enquanto eles são carregados.View your data as it loads. Você está carregando vários GBs de dados e compactando-os em índices columnstore de cluster de alto desempenho.You’re loading several GBs of data and compressing it into highly performant clustered columnstore indexes. Execute a consulta a seguir que usa DMVs (exibições de gerenciamento dinâmico) para mostrar o status do carregamento.Run the following query that uses a dynamic management views (DMVs) to show the status of the load. Após iniciar a consulta, pegue um café e alguns biscoitos enquanto o SQL Data Warehouse faz o trabalho pesado.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. Exiba todas as consultas do sistema.View all system queries.

    SELECT * FROM sys.dm_pdw_exec_requests;
    
  4. Veja os dados carregados sem problemas no seu data warehouse.Enjoy seeing your data nicely loaded into your data warehouse.

    Exibir tabelas carregadas

Autenticar usando identidades gerenciadas para carregar (opcional)Authenticate using managed identities to load (optional)

O carregamento usando o polybase e a autenticação por meio de identidades gerenciadas é o mecanismo mais seguro e permite que você aproveite os pontos de extremidade do serviço de VNet com o armazenamento do 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é-requisitosPrerequisites

  1. Instalar o Azure PowerShell usando este guia.Install Azure PowerShell using this guide.
  2. Se você tiver uma conta de armazenamento de blobs ou de uso geral v1, será necessário primeiro atualizar para uso geral v2 usando este guia.If you have a general-purpose v1 or blob storage account, you must first upgrade to general-purpose v2 using this guide.
  3. É necessário ativar Permitir que os serviços confiáveis da Microsoft acessem essa conta de armazenamento no menu de configurações Firewalls e redes virtuais da conta do Armazenamento do 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. Confira este guia para saber mais.Refer to this guide for more information.

EtapasSteps

  1. No PowerShell, registre seu servidor do Banco de Dados SQL com o AAD (Azure Active Directory):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. Crie uma Conta de armazenamento de uso geral v2 usando este guia.Create a general-purpose v2 Storage Account using this guide.

    Observação

    • Se você tiver uma conta de armazenamento de blobs ou de uso geral v1, será necessário primeiro atualizar para v2 usando este guia.If you have a general-purpose v1 or blob storage account, you must first upgrade to v2 using this guide.
  2. Em sua conta de armazenamento, navegue até Controle de acesso (IAM) e clique em Adicionar atribuição de função.Under your storage account, navigate to Access Control (IAM), and click Add role assignment. Atribuir função de RBAC de colaborador de dados de blob de armazenamento ao servidor do banco de dados SQL.Assign Storage Blob Data Contributor RBAC role to your SQL Database server.

    Observação

    Somente membros com o privilégio Proprietário podem executar essa etapa.Only members with Owner privilege can perform this step. Para várias funções internas de recursos do Azure, confira este guia.For various built-in roles for Azure resources, refer to this guide.

  3. Conectividade do Polybase com a conta de Armazenamento do Azure:Polybase connectivity to the Azure Storage account:

    1. Crie a credencial no escopo do banco de dados com Identity = ' identidade de serviço gerenciada ' :Create your database scoped credential with IDENTITY = 'Managed Service Identity':

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

      Observação

      • Não é necessário especificar SECRET com a chave de acesso de Armazenamento do Azure, porque esse mecanismo usa Identidade gerenciada nos bastidores.There is no need to specify SECRET with Azure Storage access key because this mechanism uses Managed Identity under the covers.
      • O nome da identidade deve ser ' identidade de serviço gerenciada ' para que a conectividade do polybase funcione com a conta de armazenamento do Azure.IDENTITY name should be 'Managed Service Identity' for PolyBase connectivity to work with Azure Storage account.
    2. Crie a fonte de dados externa especificando a credencial no escopo do banco de dado com o Identidade de Serviço Gerenciada.Create the External Data Source specifying the Database Scoped Credential with the Managed Service Identity.

    3. Consulte normalmente usando tabelas externas.Query as normal using external tables.

Consulte a documentação a seguir se desejar configurar pontos de extremidade de serviço de rede virtual para SQL data warehouse.Refer to the following documentation if you'd like to set up virtual network service endpoints for SQL Data Warehouse.

Limpar recursosClean up resources

Você está sendo cobrado por recursos de computação e por dados que você carregou em seu data warehouse.You are being charged for compute resources and data that you loaded into your data warehouse. Eles são cobrados separadamente.These are billed separately.

  • Se desejar manter os dados no armazenamento, será possível pausar a computação quando você não estiver usando o data warehouse.If you want to keep the data in storage, you can pause compute when you aren't using the data warehouse. Ao pausar a computação, você será cobrado apenas pelo armazenamento de dados e poderá retomar a computação quando estiver pronto para trabalhar com os dados.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.
  • Se desejar remover encargos futuros, será possível excluir o data warehouse.If you want to remove future charges, you can delete the data warehouse.

Siga estas etapas para limpar os recursos conforme desejado.Follow these steps to clean up resources as you desire.

  1. Faça logon no Portal do Azure e clique no seu data warehouse.Log in to the Azure portal, click on your data warehouse.

    Limpar recursos

  2. Para pausar a computação, clique no botão Pausar.To pause compute, click the Pause button. Quando o data warehouse for pausado, você verá um botão Iniciar.When the data warehouse is paused, you will see a Start button. Para retomar a computação, clique Iniciar.To resume compute, click Start.

  3. Para remover o data warehouse para você não ser cobrado pela computação ou pelo armazenamento, clique em Excluir.To remove the data warehouse so you won't be charged for compute or storage, click Delete.

  4. Para remover o SQL Server criado, clique em meunovoservidor-20180430.database.windows.net na imagem anterior e, em seguida, clique em Excluir.To remove the SQL server you created, click mynewserver-20180430.database.windows.net in the previous image, and then click Delete. Tenha cuidado com isso, uma vez que a exclusão do servidor excluirá todos os bancos de dados atribuídos a ele.Be careful with this as deleting the server will delete all databases assigned to the server.

  5. Para remover o grupo de recursos, clique em meuGrupoDeRecursos e, em seguida, clique em Excluir grupo de recursos.To remove the resource group, click myResourceGroup, and then click Delete resource group.

Próximas etapasNext steps

Neste tutorial, você aprendeu como criar um data warehouse e um usuário para carregar dados.In this tutorial, you learned how to create a data warehouse and create a user for loading data. Você criou tabelas externas para definir a estrutura dos dados armazenados no Azure Storage Blob e depois usou a instrução CREATE TABLE AS SELECT do PolyBase para carregar dados em seu data warehouse.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.

Você fez essas coisas:You did these things:

  • Criou um data warehouse no Portal do AzureCreated a data warehouse in the Azure portal
  • Configurar uma regra de firewall de nível de servidor no Portal do AzureSet up a server-level firewall rule in the Azure portal
  • Conectou-se ao data warehouse com o SSMSConnected to the data warehouse with SSMS
  • Criou um usuário designado para carregar dadosCreated a user designated for loading data
  • Criou tabelas externas para dados no Azure Storage BlobCreated external tables for data in Azure Storage Blob
  • Usou a instrução T-SQL CTAS para carregar dados em seu data warehouseUsed the CTAS T-SQL statement to load data into your data warehouse
  • Exibiu o andamento dos dados enquanto eles estão sendo carregadosViewed the progress of data as it is loading
  • Criou estatísticas sobre os dados recém-carregadosCreated statistics on the newly loaded data

Avance para a visão geral de desenvolvimento para saber como migrar um banco de dados existente para SQL Data Warehouse.Advance to the development overview to learn how to migrate an existing database to SQL Data Warehouse.