Partilhar 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 estendido de operador definido pelo usuário (UDO) C#.

Importante

O Azure Data Lake Analytics foi desativado em 29 de fevereiro de 2024. Saiba mais com este anúncio.

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 no computador local. O processo de compilação e otimização trata todo o script U-SQL como um todo. Não é possível fazer um teste de unidade tradicional para cada afirmação. No entanto, usando o SDK de teste 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

O Azure Data Lake Tools for Visual Studio permite 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.

    Data Lake Tools for Visual Studio -- crie uma configuração de projeto de teste U-SQL

Gerenciar a fonte de dados de teste

Ao testar scripts U-SQL, você precisa de arquivos de entrada de teste. 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 em Test Data Source.

Ferramentas Data Lake para Visual Studio -- configurar fonte de dados de teste de projeto

Quando você chama a interface Initialize() no SDK de teste 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 da 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 seus scripts U-SQL usam ou consultam com objetos de banco de dados U-SQL, você precisa inicializar o ambiente de banco de dados antes de executar casos de teste U-SQL. Essa abordagem pode ser necessária ao chamar procedimentos armazenados. A interface Initialize() no SDK de teste U-SQL ajuda você a implantar todos os bancos de dados referenciados pelo projeto U-SQL na 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 Referenciar um projeto de banco de dados U-SQL.

Verificar os resultados dos testes

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

Executar casos de teste no Visual Studio

Um projeto de teste de script u-SQL é construído sobre uma estrutura de teste de unidade C#. Depois de criar o projeto, selecione Test>Windows>Test Explorer. Você pode executar casos de teste do Gerenciador de Testes. Como alternativa, clique com o botão direito do mouse no arquivo .cs no teste de unidade e selecione Executar testes.

Os UDOs de teste em C#

Criar casos de teste para UDOs em C#

Você pode usar uma estrutura de teste de unidade C# para testar seus operadores definidos pelo usuário (UDOs) em 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 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 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 dos testes

Depois de chamar as funções UDO, você pode verificar os resultados por meio da verificação do esquema e do valor do conjunto de linhas usando as funções de afirmação C#. Você pode adicionar um Projeto de Teste de Unidade U-SQL C# UDO à sua solução. Para fazer isso, selecione Arquivo > Novo > Projeto no Visual Studio.

Executar casos de teste no Visual Studio

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

Execute testes no Azure Pipelines

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

Executar casos de teste U-SQL no Azure Pipelines

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

O que é CPPSDK?

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

  • Para o Visual Studio 2015, ele está sob 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, ele está sob C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
  • Para o Visual Studio 2019, encontra-se 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 CPPSDK no Azure Pipelines é a seguinte:

  1. Compacte a pasta que inclui as bibliotecas CPPSDK.

  2. Realize o check-in do arquivo .zip no seu sistema de controlo de código-fonte. O ficheiro .zip garante que se faça o carregamento de todas as bibliotecas na pasta CPPSDK, para que os ficheiros não sejam ignorados por causa de um ficheiro .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 UDO em C# no Azure Pipelines

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

  • Microsoft.Analytics.Interfaces
  • Microsoft.Analytics.Tipos
  • Microsoft.Analytics.UnitTest

Se você fizer referência a eles por meio do pacote NuGet Microsoft.Azure.DataLake.USQL.Interfaces, certifique-se de adicionar uma tarefa de Restauração do NuGet em seu pipeline de compilação.

Próximos passos