Management .NET SDK v1.x: impostare ed eseguire processi di analisi tramite l'API di Analisi di flusso di Azure per .NETManagement .NET SDK v1.x: Set up and run analytics jobs using the Azure Stream Analytics API for .NET

Informazioni su come impostare ed eseguire processi di analisi tramite l'API di Analisi di flusso per .NET usando Management .NET SDK.Learn how to set up and run analytics jobs using the Stream Analytics API for .NET using the Management .NET SDK. Impostare un progetto, creare origini di input e output, trasformazioni e avviare e arrestare i processi.Set up a project, create input and output sources, transformations, and start and stop jobs. Per i processi di analisi, è possibile trasmettere i dati di flusso dall'archiviazione BLOB o da un hub eventi.For your analytics jobs, you can stream data from Blob storage or from an event hub.

Vedere la documentazione di riferimento sulla gestione per l'API di Analisi di flusso per .NET.See the management reference documentation for the Stream Analytics API for .NET.

Analisi dei flussi di Azure è un servizio completamente gestito che consente l'elaborazione di eventi complessi con bassa latenza, elevata disponibilità e scalabilità per lo streaming di dati nel cloud.Azure Stream Analytics is a fully managed service providing low-latency, highly available, scalable, complex event processing over streaming data in the cloud. Analisi di flusso consente ai clienti di configurare processi di flusso per analizzare i flussi di dati e di condurre operazioni di analisi pressoché in tempo reale.Stream Analytics enables customers to set up streaming jobs to analyze data streams, and allows them to drive near real-time analytics.

Nota

Il codice di esempio in questo articolo usa ancora la versione legacy (1. x) di .NET SDK per la gestione di Analisi di flusso di Azure.Sample code in this article still uses legacy (1.x) version of Azure Stream Analytics Management .NET SDK. Per il codice di esempio che usa la versione aggiornata di SDK, vedere Usare Management .NET SDK per Analisi di flusso.For sample code using the up-to-date SDK version, please see Use the Management .NET SDK for Stream Analytics.

PrerequisitiPrerequisites

Per eseguire le procedure descritte nell'articolo è necessario:Before you begin this article, you must have the following:

  • Installare Visual Studio 2017 o 2015.Install Visual Studio 2017 or 2015.
  • Scaricare e installare Azure .NET SDK.Download and install Azure .NET SDK.
  • Creare un gruppo di risorse di Azure nella sottoscrizione.Create an Azure Resource Group in your subscription. Di seguito è riportato un esempio di script di Azure PowerShell:The following is a sample Azure PowerShell script. Per informazioni su Azure PowerShell , vedere Installare e configurare Azure PowerShell;For Azure PowerShell information, see Install and configure Azure PowerShell;

      # Log in to your Azure account
      Add-AzureAccount
    
      # Select the Azure subscription you want to use to create the resource group
      Select-AzureSubscription -SubscriptionName <subscription name>
    
          # If Stream Analytics has not been registered to the subscription, remove the remark symbol (#) to run the Register-AzureRMProvider cmdlet to register the provider namespace
          #Register-AzureRMProvider -Force -ProviderNamespace 'Microsoft.StreamAnalytics'
    
      # Create an Azure resource group
      New-AzureResourceGroup -Name <YOUR RESOURCE GROUP NAME> -Location <LOCATION>
    
  • Configurare un'origine di input e una destinazione di output da usare.Set up an input source and output target to use. Per altre istruzioni, vedere Aggiungere input per impostare un esempio di input e Aggiungere output per impostare un esempio di output.For further instructions see Add Inputs to set up a sample input and Add Outputs to set up a sample output.

Configurare un progettoSet up a project

Per creare un processo di analisi usando l'API di Analisi di flusso per .NET, configurare prima il progetto.To create an analytics job use the Stream Analytics API for .NET, first set up your project.

  1. Creare un'applicazione console .NET di Visual Studio C#.Create a Visual Studio C# .NET console application.
  2. Nella Console di Gestione pacchetti, eseguire i comandi seguenti per installare i pacchetti NuGet.In the Package Manager Console, run the following commands to install the NuGet packages. Il primo è .NET SDK di gestione di Analisi di flusso di Azure.The first one is the Azure Stream Analytics Management .NET SDK. Il secondo è il client Azure Active Directory che verrà usato per l'autenticazione.The second one is the Azure Active Directory client that will be used for authentication.

     Install-Package Microsoft.Azure.Management.StreamAnalytics -Version 1.8.3
     Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.28.4
    
  3. Aggiungere la sezione appSettings seguente al file App.config:Add the following appSettings section to the App.config file:

     <appSettings>
       <!--CSM Prod related values-->
       <add key="ActiveDirectoryEndpoint" value="https://login.microsoftonline.com/" />
       <add key="ResourceManagerEndpoint" value="https://management.azure.com/" />
       <add key="WindowsManagementUri" value="https://management.core.windows.net/" />
       <add key="AsaClientId" value="1950a258-227b-4e31-a9cf-717495945fc2" />
       <add key="RedirectUri" value="urn:ietf:wg:oauth:2.0:oob" />
       <add key="SubscriptionId" value="YOUR AZURE SUBSCRIPTION" />
       <add key="ActiveDirectoryTenantId" value="YOU TENANT ID" />
     </appSettings>
    

    Sostituire i valori per SubscriptionId e ActiveDirectoryTenantId con gli ID della sottoscrizione di Azure e del tenant.Replace values for SubscriptionId and ActiveDirectoryTenantId with your Azure subscription and tenant IDs. È possibile ottenere questi valori eseguendo il cmdlet Azure PowerShell seguente:You can get these values by running the following Azure PowerShell cmdlet:

     Get-AzureAccount
    
  4. Aggiungere il riferimento seguente nel file con estensione csproj:Add the following reference in your .csproj file:

     <Reference Include="System.Configuration" />
    
  5. Aggiungere le istruzioni using seguenti al file di origine (Program.cs) nel progetto.Add the following using statements to the source file (Program.cs) in the project:

     using System;
     using System.Configuration;
     using System.Threading.Tasks;
    
     using Microsoft.Azure;
     using Microsoft.Azure.Management.StreamAnalytics;
     using Microsoft.Azure.Management.StreamAnalytics.Models;
     using Microsoft.IdentityModel.Clients.ActiveDirectory;
    
  6. Aggiungere un metodo helper di autenticazione:Add an authentication helper method:

    private static async Task<string> GetAuthorizationHeader()
    {
        var context = new AuthenticationContext(
            ConfigurationManager.AppSettings["ActiveDirectoryEndpoint"] +
            ConfigurationManager.AppSettings["ActiveDirectoryTenantId"]);
    
         AuthenticationResult result = await context.AcquireTokenASync(
            resource: ConfigurationManager.AppSettings["WindowsManagementUri"],
            clientId: ConfigurationManager.AppSettings["AsaClientId"],
            redirectUri: new Uri(ConfigurationManager.AppSettings["RedirectUri"]),
            promptBehavior: PromptBehavior.Always);
    
         if (result != null)
             return result.AccessToken;
    
        throw new InvalidOperationException("Failed to acquire token");
    }
    

Creare un client di gestione di Analisi di flusso.Create a Stream Analytics management client

Un oggetto StreamAnalyticsManagementClient consente di gestire il processo e i componenti di processo, ad esempio l'input, l'output e la trasformazione.A StreamAnalyticsManagementClient object allows you to manage the job and the job components, such as input, output, and transformation.

Aggiungere il codice seguente all'inizio del metodo Main .Add the following code to the beginning of the Main method:

string resourceGroupName = "<YOUR AZURE RESOURCE GROUP NAME>";
string streamAnalyticsJobName = "<YOUR STREAM ANALYTICS JOB NAME>";
string streamAnalyticsInputName = "<YOUR JOB INPUT NAME>";
string streamAnalyticsOutputName = "<YOUR JOB OUTPUT NAME>";
string streamAnalyticsTransformationName = "<YOUR JOB TRANSFORMATION NAME>";

// Get authentication token
TokenCloudCredentials aadTokenCredentials = new TokenCloudCredentials(
    ConfigurationManager.AppSettings["SubscriptionId"],
    GetAuthorizationHeader().Result);

// Create Stream Analytics management client
StreamAnalyticsManagementClient client = new StreamAnalyticsManagementClient(aadTokenCredentials);

Il valore della variabile resourceGroupName deve essere lo stesso del nome del gruppo di risorse creato o selezionato nei passaggi preliminari.The resourceGroupName variable's value should be the same as the name of the resource group you created or picked in the prerequisite steps.

Per automatizzare l'aspetto di presentazione delle credenziali della creazione del processo, fare riferimento a Autenticazione di un'entità servizio con Gestione risorse di Azure.To automate the credential presentation aspect of job creation, refer to Authenticating a service principal with Azure Resource Manager.

Nelle sezioni rimanenti di questo articolo si presuppone che il codice sia all'inizio del metodo Main .The remaining sections of this article assume that this code is at the beginning of the Main method.

Creare un processo di Analisi di flusso.Create a Stream Analytics job

Il codice seguente crea un processo di Analisi di flusso nel gruppo di risorse che è stato definito.The following code creates a Stream Analytics job under the resource group that you have defined. Verranno aggiunti un input, un output e la trasformazione al processo in un secondo momento.You will add an input, output, and transformation to the job later.

// Create a Stream Analytics job
JobCreateOrUpdateParameters jobCreateParameters = new JobCreateOrUpdateParameters()
{
    Job = new Job()
    {
        Name = streamAnalyticsJobName,
        Location = "<LOCATION>",
        Properties = new JobProperties()
        {
            EventsOutOfOrderPolicy = EventsOutOfOrderPolicy.Adjust,
            Sku = new Sku()
            {
                Name = "Standard"
            }
        }
    }
};

JobCreateOrUpdateResponse jobCreateResponse = client.StreamingJobs.CreateOrUpdate(resourceGroupName, jobCreateParameters);

Creare un'origine di input di Analisi di flusso.Create a Stream Analytics input source

Il codice seguente crea un'origine di input di Analisi di flusso con il tipo di origine di input BLOB e la serializzazione CSV.The following code creates a Stream Analytics input source with the blob input source type and CSV serialization. Per creare un'origine di input di hub eventi, usare EventHubStreamInputDataSource anziché BlobStreamInputDataSource.To create an event hub input source, use EventHubStreamInputDataSource instead of BlobStreamInputDataSource. Analogamente, è possibile personalizzare il tipo di serializzazione dell'origine di input.Similarly, you can customize the serialization type of the input source.

// Create a Stream Analytics input source
InputCreateOrUpdateParameters jobInputCreateParameters = new InputCreateOrUpdateParameters()
{
    Input = new Input()
    {
        Name = streamAnalyticsInputName,
        Properties = new StreamInputProperties()
        {
            Serialization = new CsvSerialization
            {
                Properties = new CsvSerializationProperties
                {
                    Encoding = "UTF8",
                    FieldDelimiter = ","
                }
            },
            DataSource = new BlobStreamInputDataSource
            {
                Properties = new BlobStreamInputDataSourceProperties
                {
                    StorageAccounts = new StorageAccount[]
                    {
                        new StorageAccount()
                        {
                            AccountName = "<YOUR STORAGE ACCOUNT NAME>",
                            AccountKey = "<YOUR STORAGE ACCOUNT KEY>"
                        }
                    },
                    Container = "samples",
                    PathPattern = ""
                }
            }
        }
    }
};

InputCreateOrUpdateResponse inputCreateResponse =
    client.Inputs.CreateOrUpdate(resourceGroupName, streamAnalyticsJobName, jobInputCreateParameters);

Le origini di input, dall'archiviazione BLOB o un hub eventi, sono legate a un processo specifico.Input sources, whether from Blob storage or an event hub, are tied to a specific job. Per usare la stessa origine di input per processi diversi, è necessario chiamare nuovamente il metodo e specificare un nome diverso.To use the same input source for different jobs, you must call the method again and specify a different job name.

Testare un'origine di input di Analisi di flussoTest a Stream Analytics input source

Il metodo TestConnection verifica se il processo di Analisi di flusso è in grado di connettersi all'origine di input, nonché altri aspetti specifici del tipo di origine di input.The TestConnection method tests whether the Stream Analytics job is able to connect to the input source as well as other aspects specific to the input source type. Ad esempio, nell'origine di input BLOB creata in precedenza, il metodo verifica che il nome dell'account di archiviazione e la coppia di chiavi possano essere usati per connettersi all'account di archiviazione, nonché verificare che il contenitore specificato esista.For example, in the blob input source you created in an earlier step, the method will check that the Storage account name and key pair can be used to connect to the Storage account as well as check that the specified container exists.

// Test input source connection
DataSourceTestConnectionResponse inputTestResponse =
    client.Inputs.TestConnection(resourceGroupName, streamAnalyticsJobName, streamAnalyticsInputName);

Creare una destinazione di output di Analisi di flussoCreate a Stream Analytics output target

La creazione di una destinazione di output è molto simile alla creazione di un'origine di input di Analisi di flusso.Creating an output target is very similar to creating a Stream Analytics input source. Analogamente alle origini di input, le destinazioni di output sono legate a un processo specifico.Like input sources, output targets are tied to a specific job. Per usare la stessa destinazione di output per processi diversi, è necessario chiamare nuovamente il metodo e specificare un nome diverso.To use the same output target for different jobs, you must call the method again and specify a different job name.

Il codice seguente crea una destinazione di output (database SQL di Azure).The following code creates an output target (Azure SQL database). È possibile personalizzare il tipo di dati della destinazione di output e/o il tipo di serializzazione.You can customize the output target's data type and/or serialization type.

// Create a Stream Analytics output target
OutputCreateOrUpdateParameters jobOutputCreateParameters = new OutputCreateOrUpdateParameters()
{
    Output = new Output()
    {
        Name = streamAnalyticsOutputName,
        Properties = new OutputProperties()
        {
            DataSource = new SqlAzureOutputDataSource()
            {
                Properties = new SqlAzureOutputDataSourceProperties()
                {
                    Server = "<YOUR DATABASE SERVER NAME>",
                    Database = "<YOUR DATABASE NAME>",
                    User = "<YOUR DATABASE LOGIN>",
                    Password = "<YOUR DATABASE LOGIN PASSWORD>",
                    Table = "<YOUR DATABASE TABLE NAME>"
                }
            }
        }
    }
};

OutputCreateOrUpdateResponse outputCreateResponse =
    client.Outputs.CreateOrUpdate(resourceGroupName, streamAnalyticsJobName, jobOutputCreateParameters);

Testare una destinazione di output di Analisi di flussoTest a Stream Analytics output target

Una destinazione di output di Analisi di flusso dispone inoltre del metodo TestConnection per il test delle connessioni.A Stream Analytics output target also has the TestConnection method for testing connections.

// Test output target connection
DataSourceTestConnectionResponse outputTestResponse =
    client.Outputs.TestConnection(resourceGroupName, streamAnalyticsJobName, streamAnalyticsOutputName);

Creare una trasformazione di Analisi di flussoCreate a Stream Analytics transformation

Il codice seguente crea una trasformazione di Analisi di flusso con la query "select * from Input" e specifica l'assegnazione di un'unità di streaming per il processo di Analisi di flusso.The following code creates a Stream Analytics transformation with the query "select * from Input" and specifies to allocate one streaming unit for the Stream Analytics job. Per altre informazioni sulla regolazione di unità di streaming, vedere Scalabilità dei processi di Analisi di flusso di Azure.For more information on adjusting streaming units, see Scale Azure Stream Analytics jobs.

// Create a Stream Analytics transformation
TransformationCreateOrUpdateParameters transformationCreateParameters = new TransformationCreateOrUpdateParameters()
{
    Transformation = new Transformation()
    {
        Name = streamAnalyticsTransformationName,
        Properties = new TransformationProperties()
        {
            StreamingUnits = 1,
            Query = "select * from Input"
        }
    }
};

var transformationCreateResp =
    client.Transformations.CreateOrUpdate(resourceGroupName, streamAnalyticsJobName, transformationCreateParameters);

Analogamente all'input e all'output, una trasformazione è inoltre collegata a un processo di Analisi di flusso specifico in cui è stato creata.Like input and output, a transformation is also tied to the specific Stream Analytics job it was created under.

Avvio di un processo di Analisi di flussoStart a Stream Analytics job

Dopo aver creato un processo di Analisi di flusso nonché gli input, gli output e la trasformazione, è possibile avviare il processo chiamando il metodo Start .After creating a Stream Analytics job and its input(s), output(s), and transformation, you can start the job by calling the Start method.

Il codice di esempio seguente avvia un processo di Analisi di flusso con un'ora di inizio dell'output personalizzato impostata sulle 12:12:12 UTC del 12 dicembre 2012:The following sample code starts a Stream Analytics job with a custom output start time set to December 12, 2012, 12:12:12 UTC:

// Start a Stream Analytics job
JobStartParameters jobStartParameters = new JobStartParameters
{
    OutputStartMode = OutputStartMode.CustomTime,
    OutputStartTime = new DateTime(2012, 12, 12, 0, 0, 0, DateTimeKind.Utc)
};

LongRunningOperationResponse jobStartResponse = client.StreamingJobs.Start(resourceGroupName, streamAnalyticsJobName, jobStartParameters);

Arresto di un processo di Analisi di flussoStop a Stream Analytics job

È possibile arrestare un processo di Analisi di flusso in esecuzione chiamando il metodo Stop .You can stop a running Stream Analytics job by calling the Stop method.

// Stop a Stream Analytics job
LongRunningOperationResponse jobStopResponse = client.StreamingJobs.Stop(resourceGroupName, streamAnalyticsJobName);

Eliminazione di un processo di Analisi di flussoDelete a Stream Analytics job

Il metodo Delete consente di eliminare il processo, nonché le risorse secondarie sottostanti, inclusi gli input, gli output e la trasformazione del processo.The Delete method will delete the job as well as the underlying sub-resources, including input(s), output(s), and transformation of the job.

// Delete a Stream Analytics job
LongRunningOperationResponse jobDeleteResponse = client.StreamingJobs.Delete(resourceGroupName, streamAnalyticsJobName);

SupportoGet support

Per ulteriore assistenza, provare il Forum di Analisi dei flussi di Azure.For further assistance, try our Azure Stream Analytics forum.

Passaggi successiviNext steps

Sono state fornite le nozioni di base dell'utilizzo di .NET SDK per creare ed eseguire i processi di analisi.You've learned the basics of using a .NET SDK to create and run analytics jobs. Per altre informazioni, vedere gli argomenti seguenti:To learn more, see the following: