Condividi tramite


Testare il codice di Azure Data Lake Analytics

Azure Data Lake offre il linguaggio U-SQL . U-SQL combina SQL dichiarativo con C# imperativo per elaborare i dati su qualsiasi scala. Questo documento illustra come creare test case per il codice UDO (User Defined Operator) di U-SQL e C# esteso.

Importante

Azure Data Lake Analytics è stato ritirato il 29 febbraio 2024. Scopri di più su con questo annuncio.

Per l'analisi dei dati, l'organizzazione può usare azure Synapse Analytics o Microsoft Fabric.

Testare gli script U-SQL

Lo script U-SQL viene compilato e ottimizzato per l'esecuzione del codice eseguibile in Azure o nel computer locale. Il processo di compilazione e ottimizzazione considera l'intero script U-SQL nel suo complesso. Non è possibile eseguire un test di unità tradizionale per ogni dichiarazione. Tuttavia, usando l'SDK di test U-SQL e l'SDK di esecuzione locale, è possibile eseguire test a livello di script.

Creare test case per lo script U-SQL

Azure Data Lake Tools per Visual Studio consente di creare test case di script U-SQL.

  1. Fare clic con il pulsante destro del mouse su uno script U-SQL in Esplora soluzioni e quindi selezionare Crea unit test.

  2. Creare un nuovo progetto di test o inserire il test case in un progetto di test esistente.

    Strumenti Data Lake per Visual Studio: creare una configurazione del progetto di test U-SQL

Gestisci il data source di test

Quando si testano script U-SQL, sono necessari file di input di test. Per gestire i dati di test, in Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto U-SQL e selezionare Proprietà. È possibile immettere un'origine in origine dati di test.

Strumenti Data Lake per Visual Studio: configurare l'origine dati di test del progetto

Quando si chiama l'interfaccia Initialize() nell'SDK di test U-SQL, viene creata una cartella radice dei dati locale temporanea nella directory di lavoro del progetto di test. Tutti i file e le cartelle nella cartella dell'origine dati di test vengono copiati nella cartella radice dei dati locale temporanea prima di eseguire i casi di test dello script U-SQL. È possibile aggiungere altre cartelle dell'origine dati di test suddividendo il percorso della cartella dei dati di test con un punto e virgola.

Gestire l'ambiente di database per i test

Se gli script U-SQL usano o eseguono query con oggetti di database U-SQL, è necessario inizializzare l'ambiente di database prima di eseguire test case U-SQL. Questo approccio può essere necessario quando si chiamano le procedure memorizzate. L'interfaccia Initialize() nell'SDK di test U-SQL consente di distribuire tutti i database a cui fa riferimento il progetto U-SQL nella cartella radice dei dati locale temporanea nella directory di lavoro del progetto di test.

Per altre informazioni su come gestire i riferimenti al progetto di database U-SQL per un progetto U-SQL, vedere Fare riferimento a un progetto di database U-SQL.

Verificare i risultati dei test

L'interfaccia Run() restituisce un risultato di esecuzione del processo. 0 significa esito positivo e 1 indica un errore. È anche possibile usare le funzioni assert C# per verificare gli output.

Eseguire casi di test in Visual Studio

Un progetto di test di script U-SQL si basa su un framework di unit test C#. Dopo aver compilato il progetto, selezionare Test>Test Explorer di Windows>. È possibile eseguire i casi di test da Esplora test . In alternativa, fare clic con il pulsante destro del mouse sul file di .cs nello unit test e selezionare Esegui test.

Testare gli UDO C#

Creare casi di test per gli UDO C#

È possibile utilizzare un framework di test unitario in C# per verificare gli operatori definiti dall'utente in C#. Quando si testano gli UDO, è necessario preparare gli oggetti IRowset corrispondenti come input.

Esistono due modi per creare un oggetto IRowset:

  • Caricare dati da un file per creare 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');
    
  • Usare i dati di una raccolta dati per creare 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());
    

Verificare i risultati dei test

Dopo aver chiamato le funzioni UDO, è possibile verificare i risultati tramite la verifica dello schema e del valore del set di righe usando le funzioni assert C#. È possibile aggiungere un progetto U-SQL C# UDO unit test alla soluzione. A tale scopo, selezionare in Visual Studio File > Nuovo > Progetto.

Eseguire casi di test in Visual Studio

Dopo aver compilato il progetto, selezionare Test>Test Explorer di Windows>. È possibile eseguire casi di test da Esplora test. In alternativa, fare clic con il pulsante destro del mouse sul file di .cs nello unit test e selezionare Esegui test.

Eseguire casi di test in Azure Pipelines

Sia i progetti di test di script U-SQL che i progetti di test UDO C# ereditano entrambi progetti di unit test C#. L'attività di test di Visual Studio in Azure Pipelines può eseguire questi test case.

Eseguire i casi di test U-SQL in Azure Pipelines

Per un test U-SQL, assicurarsi di caricare CPPSDK nel computer di compilazione e quindi passare il percorso CPPSDK a USqlScriptTestRunner(cppSdkFolderFullPath: @"").

Che cos'è CPPSDK?

CPPSDK è un pacchetto che include Microsoft Visual C++ 14 e Windows SDK 10.0.10240.0. Questo pacchetto include l'ambiente necessario per il runtime U-SQL. È possibile ottenere questo pacchetto nella cartella di installazione di Azure Data Lake Tools per Visual Studio:

  • Per Visual Studio 2015, è in 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
  • Per Visual Studio 2017, si trova sotto il menù C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
  • Per Visual Studio 2019, si trova in C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK

Preparare CPPSDK nell'agente di compilazione di Azure Pipelines

Il modo più comune per preparare la dipendenza CPPSDK in Azure Pipelines è il seguente:

  1. Zippa la cartella che include le librerie CPPSDK.

  2. Archiviare il file .zip nel sistema di controllo del codice sorgente. Il file .zip garantisce di archiviare tutte le librerie nella cartella CPPSDK in modo che i file non siano ignorati a causa di un file .gitignore.

  3. Decomprimere il file .zip nella pipeline di compilazione.

  4. Indirizza USqlScriptTestRunner a questa cartella decompressa nel computer di compilazione.

Eseguire i casi di test UDO C# in Azure Pipelines

Per un test UDO C#, assicurarsi di fare riferimento agli assembly seguenti, necessari per gli UDO.

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

Quando si fa riferimento tramite il pacchetto NuGet Microsoft.Azure.DataLake.USQL.Interfaces, assicuratevi di aggiungere un task di Restore NuGet nella pipeline di compilazione.

Passaggi successivi