Compartilhar via


Testar o código do Azure Data Lake Analytics

O Azure Data Lake fornece a linguagem U-SQL . O U-SQL combina SQL declarativo com C# imperativo para processar dados em qualquer escala. Neste documento, você aprenderá a criar casos de teste para U-SQL e código UDO (operador definido pelo usuário) em C# estendido.

Importante

O Azure Data Lake Analytics se aposentou em 29 de fevereiro de 2024. Saiba mais com este comunicado.

Para análise de dados, sua organização pode usar o Azure Synapse Analytics ou o Microsoft Fabric.

Testar scripts U-SQL

O script U-SQL é compilado e otimizado para que o código executável seja executado no Azure ou em seu computador local. O processo de compilação e otimização trata todo o script U-SQL como um todo. Você não consegue realizar um teste de unidade tradicional para cada declaração. No entanto, usando o SDK de teste do U-SQL e o SDK de execução local, você pode fazer testes no nível de script.

Criar casos de teste para script U-SQL

As Ferramentas do Azure Data Lake para Visual Studio permitem criar casos de teste de script U-SQL.

  1. Clique com o botão direito do mouse em um script U-SQL no Gerenciador de Soluções e selecione Criar Teste de Unidade.

  2. Crie um novo projeto de teste ou insira o caso de teste em um projeto de teste existente.

    Ferramentas do Data Lake para Visual Studio – criar uma configuração de projeto de teste do U-SQL

Gerenciar a fonte de dados de teste

Ao testar scripts U-SQL, você precisa testar arquivos de entrada. Para gerenciar os dados de teste, no Gerenciador de Soluções, clique com o botão direito do mouse no projeto U-SQL e selecione Propriedades. Você pode inserir uma fonte na Fonte de Dados de Teste.

Ferramentas do Data Lake para Visual Studio – configurar a fonte de dados de teste do projeto

Quando você chama a Initialize() interface no SDK de teste do U-SQL, uma pasta raiz de dados local temporária é criada no diretório de trabalho do projeto de teste. Todos os arquivos e pastas na pasta de fonte de dados de teste são copiados para a pasta raiz de dados local temporária antes de executar os casos de teste de script U-SQL. Você pode adicionar mais pastas de fonte de dados de teste dividindo o caminho da pasta de dados de teste com um ponto-e-vírgula.

Gerenciar o ambiente de banco de dados para teste

Se os scripts U-SQL usarem ou consultarem com objetos de banco de dados U-SQL, você precisará inicializar o ambiente do banco de dados antes de executar casos de teste U-SQL. Essa abordagem pode ser necessária ao chamar procedimentos armazenados. A Initialize() interface no SDK de teste do U-SQL ajuda você a implantar todos os bancos de dados referenciados pelo projeto U-SQL para a pasta raiz de dados local temporária no diretório de trabalho do projeto de teste.

Para obter mais informações sobre como gerenciar referências de projeto de banco de dados U-SQL para um projeto U-SQL, consulte Referência a um projeto de banco de dados U-SQL.

Verificar os resultados do teste

A Run() interface retorna um resultado de execução de trabalho. 0 significa sucesso, e 1 significa falha. Você também pode usar funções de declaração C# para verificar as saídas.

Executar casos de teste no Visual Studio

Um projeto de teste de script U-SQL é criado com base em uma estrutura de teste de unidade em C#. Depois de compilar o projeto, selecione Teste>Windows>Gerenciador de Testes. Você pode executar casos de teste no Gerenciador de Testes. Como alternativa, clique com o botão direito do mouse no arquivo .cs no teste de unidade e selecione Executar Testes.

Testar UDOs do C#

Criar casos de teste para UDOs do C#

Você pode usar uma estrutura de teste de unidade C# para testar os UDOs (operadores definidos pelo usuário) do C#. Ao testar UDOs, você precisa preparar objetos IRowset correspondentes como entradas.

Há duas maneiras de criar um objeto IRowset :

  • Carregue dados de um arquivo para criar o IRowset:

    //Schema: "a:int, b:int"
    USqlColumn<int> col1 = new USqlColumn<int>("a");
    USqlColumn<int> col2 = new USqlColumn<int>("b");
    List<IColumn> columns = new List<IColumn> { col1, col2 };
    USqlSchema schema = new USqlSchema(columns);
    
    //Generate one row with default values
    IUpdatableRow output = new USqlRow(schema, null).AsUpdatable();
    
    //Get data from file
    IRowset rowset = UnitTestHelper.GetRowsetFromFile(@"processor.txt", schema, output.AsReadOnly(), discardAdditionalColumns: true, rowDelimiter: null, columnSeparator: '\t');
    
  • Use dados de uma coleção de dados para criar o IRowset:

    //Schema: "a:int, b:int"
    USqlSchema schema = new USqlSchema(
        new USqlColumn<int>("a"),
        new USqlColumn<int>("b")
    );
    
    IUpdatableRow output = new USqlRow(schema, null).AsUpdatable();
    
    //Generate Rowset with specified values
    List<object[]> values = new List<object[]>{
        new object[2] { 2, 3 },
        new object[2] { 10, 20 }
    };
    
    IEnumerable<IRow> rows = UnitTestHelper.CreateRowsFromValues(schema, values);
    IRowset rowset = UnitTestHelper.GetRowsetFromCollection(rows, output.AsReadOnly());
    

Verificar os resultados do teste

Depois de chamar funções UDO, você pode verificar os resultados através do esquema e da verificação do valor do Rowset usando funções assertivas do C#. Você pode adicionar um projeto de teste de unidade UDO C# do U-SQL à sua solução. Para fazer isso, selecione Arquivo > Novo > Projeto no Visual Studio.

Executar casos de teste no Visual Studio

Depois de compilar o projeto, selecione Teste>Windows>Explorador de Testes. Você pode executar casos de teste no Gerenciador de Testes. Como alternativa, clique com o botão direito do mouse no arquivo .cs no teste de unidade e selecione Executar Testes.

Executar casos de teste nas Azure Pipelines

Os projetos de teste de script U-SQL e os projetos de teste de UDO do C# herdam projetos de teste de unidade em C#. A tarefa de teste do Visual Studio no Azure Pipelines pode executar esses casos de teste.

Executar casos de teste do U-SQL no Azure Pipelines

Para um teste U-SQL, certifique-se de carregar CPPSDK em seu computador de compilação e depois passar CPPSDK para USqlScriptTestRunner(cppSdkFolderFullPath: @"").

O que é CPPSDK?

O CPPSDK é um pacote que inclui o Microsoft Visual C++ 14 e o Windows SDK 10.0.10240.0. Esse pacote inclui o ambiente necessário para o runtime do U-SQL. Você pode obter esse pacote na pasta de instalação do Azure Data Lake Tools para Visual Studio:

  • Para o Visual Studio 2015, ele está em C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake Tools for Visual Studio 2015\X.X.XXXX.X\CppSDK
  • Para o Visual Studio 2017, encontra-se em C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
  • Para o Visual Studio 2019, ele está em C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK

preparar o CPPSDK no agente de compilação do Azure Pipelines

A maneira mais comum de preparar a dependência do CPPSDK no Azure Pipelines é a seguinte:

  1. Feche a pasta que inclui as bibliotecas do CPPSDK.

  2. Faça check-in do arquivo .zip em seu sistema de controle do código-fonte. O arquivo .zip garante que você registre todas as bibliotecas na pasta CPPSDK para que os arquivos não sejam ignorados devido a um arquivo .gitignore.

  3. Descompacte o arquivo .zip no pipeline de compilação.

  4. Aponte USqlScriptTestRunner para essa pasta descompactada no computador de compilação.

Executar casos de teste de UDO do C# no Azure Pipelines

Para um teste de UDO em C#, certifique-se de referenciar os conjuntos de assemblies a seguir, que são necessários para UDOs.

  • Microsoft.Analytics.Interfaces
  • Microsoft.Analytics.Types
  • Microsoft.Analytics.UnitTest

Se você referenciá-los por meio do pacote NuGet Microsoft.Azure.DataLake.USQL.Interfaces, adicione uma tarefa de Restauração do NuGet no pipeline de build.

Próximas etapas