Creare un cluster e un database di Azure Esplora dati usando goCreate an Azure Data Explorer cluster and database using Go

Esplora dati di Azure è un servizio di analisi dei dati veloce e completamente gestito per l'analisi in tempo reale di volumi elevati di dati in streaming provenienti da applicazioni, siti Web, dispositivi IoT e altro ancora.Azure Data Explorer is a fast, fully managed data analytics service for real-time analysis on large volumes of data streaming from applications, websites, IoT devices, and more. Per usare Esplora dati di Azure, è necessario prima creare un cluster e quindi uno o più database al suo interno.To use Azure Data Explorer, you first create a cluster, and create one or more databases in that cluster. Quindi si inseriscono (caricano) i dati in un database per poter eseguire query.Then you ingest (load) data into a database so that you can run queries against it.

In questo articolo viene creato un cluster e un database di Azure Esplora dati usando go.In this article, you create an Azure Data Explorer cluster and database using Go. È quindi possibile elencare ed eliminare il nuovo cluster e il nuovo database ed eseguire operazioni sulle risorse.You can then list and delete your new cluster and database and execute operations on your resources.

PrerequisitiPrerequisites

  • Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.If you don't have an Azure subscription, create a free Azure account before you begin.
  • Installare Git.Install Git.
  • Installare una versione appropriata di go.Install an appropriate version of Go. Per altre informazioni sulle versioni supportate, vedere Azure go SDK.For more information regarding supported releases, see the Azure Go SDK.

Esaminare il codiceReview the code

Questa sezione è facoltativa.This section is optional. Se si è interessati a comprendere il funzionamento del codice, è possibile esaminare i frammenti di codice seguenti.If you're interested to learn how the code works, you can review the following code snippets. In caso contrario, passare direttamente a Eseguire l'applicazione.Otherwise, you can skip ahead to Run the application.

AuthenticationAuthentication

Prima di eseguire qualsiasi operazione, è necessario eseguire l'autenticazione del programma in Esplora dati di Azure.The program needs to authenticate to Azure Data Explorer before executing any operations. Il tipo di autenticazione delle credenziali client viene usato da auth. NewAuthorizerFromEnvironment che ricerca le seguenti variabili di ambiente predefinite: AZURE_CLIENT_ID , AZURE_CLIENT_SECRET , AZURE_TENANT_ID .The Client credentials authentication type is used by auth.NewAuthorizerFromEnvironment that looks for the following pre-defined environment variables: AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID.

Nell'esempio seguente viene illustrato come un kusto. ClustersClient viene creato usando questa tecnica:The following example shows how a kusto.ClustersClient is created using this technique:

func getClustersClient(subscription string) kusto.ClustersClient {
    client := kusto.NewClustersClient(subscription)
    authR, err := auth.NewAuthorizerFromEnvironment()
    if err != nil {
        log.Fatal(err)
    }
    client.Authorizer = authR

    return client
}

Suggerimento

Usare l' autenticazione. Funzione NewAuthorizerFromCLIWithResource per lo sviluppo locale se è installata e configurata l'interfaccia della riga di comando di Azure.Use the auth.NewAuthorizerFromCLIWithResource function for local development if you have Azure CLI installed and configured for authentication.

Creare clusterCreate cluster

Usare la funzione CreateOrUpdate in kusto.ClustersClient per creare un nuovo cluster di Azure Esplora dati.Use the CreateOrUpdate function on kusto.ClustersClient to create a new Azure Data Explorer cluster. Attendere il completamento del processo prima di esaminare i risultati.Wait for the process to complete before inspecting the results.

func createCluster(sub, name, location, rgName string) {
    ...
    result, err := client.CreateOrUpdate(ctx, rgName, name, kusto.Cluster{Location: &location, Sku: &kusto.AzureSku{Name: kusto.DevNoSLAStandardD11V2, Capacity: &numInstances, Tier: kusto.Basic}})
    ...
    err = result.WaitForCompletionRef(context.Background(), client.Client)
    ...
    r, err := result.Result(client)
}

Elencare i clusterList clusters

Usare la funzione ListByResourceGroup su kusto.ClustersClient per ottenere un kusto. ClusterListResult che viene quindi iterato per visualizzare l'output in un formato tabulare.Use the ListByResourceGroup function on kusto.ClustersClient to get a kusto.ClusterListResult that is then iterated to show the output in a tabular format.

func listClusters(sub, rgName string) {
    ...
    result, err := getClustersClient(sub).ListByResourceGroup(ctx, rgName)
    ...
    for _, c := range *result.Value {
        // setup tabular representation
    }
    ...
}

Creazione del databaseCreate database

Usare la funzione CreateOrUpdate in kusto. DatabasesClient per creare un nuovo database di Esplora dati di Azure in un cluster esistente.Use CreateOrUpdate function on kusto.DatabasesClient to create a new Azure Data Explorer database in an existing cluster. Attendere il completamento del processo prima di esaminare i risultati.Wait for the process to complete before inspecting the results.

func createDatabase(sub, rgName, clusterName, location, dbName string) {
    future, err := client.CreateOrUpdate(ctx, rgName, clusterName, dbName, kusto.ReadWriteDatabase{Kind: kusto.KindReadWrite, Location: &location})
    ...
    err = future.WaitForCompletionRef(context.Background(), client.Client)
    ...
    r, err := future.Result(client)
    ...
}

Elencare i databaseList databases

Usare la funzione ListByCluster su kusto.DatabasesClient per ottenere kusto. DatabaseListResult che viene quindi iterato per visualizzare l'output in un formato tabulare.Use ListByCluster function on kusto.DatabasesClient to get kusto.DatabaseListResult that is then iterated to show the output in a tabular format.

func listDatabases(sub, rgName, clusterName string) {
    result, err := getDBClient(sub).ListByCluster(ctx, rgName, clusterName)
    ...
    for _, db := range *result.Value {
        // setup tabular representation
    }
    ...
}

Elimina databaseDelete database

Usare la funzione Delete su un kusto.DatabasesClient per eliminare un database esistente in un cluster.Use Delete function on a kusto.DatabasesClient to delete an existing database in a cluster. Attendere il completamento del processo prima di esaminare i risultati.Wait for the process to complete before inspecting the results.

func deleteDatabase(sub, rgName, clusterName, dbName string) {
    ...
    future, err := getDBClient(sub).Delete(ctx, rgName, clusterName, dbName)
    ...
    err = future.WaitForCompletionRef(context.Background(), client.Client)
    ...
    r, err := future.Result(client)
    if r.StatusCode == 200 {
        // determine success or failure
    }
    ...
}

Eliminare il clusterDelete cluster

Usare la funzione Delete su un kusto.ClustersClient per eliminare un cluster.Use Delete function on a kusto.ClustersClient to delete a cluster. Attendere il completamento del processo prima di esaminare i risultati.Wait for the process to complete before inspecting the results.

func deleteCluster(sub, clusterName, rgName string) {
    result, err := client.Delete(ctx, rgName, clusterName)
    ...
    err = result.WaitForCompletionRef(context.Background(), client.Client)
    ...
    r, err := result.Result(client)
    if r.StatusCode == 200 {
        // determine success or failure
    }
    ...
}

Eseguire l'applicazioneRun the application

Quando si esegue il codice di esempio, vengono eseguite le azioni seguenti:When you run the sample code as is, the following actions are performed:

  1. Viene creato un cluster di Azure Esplora dati.An Azure Data Explorer cluster is created.

  2. Sono elencati tutti i cluster Esplora dati di Azure nel gruppo di risorse specificato.All the Azure Data Explorer clusters in the specified resource group are listed.

  3. Nel cluster esistente viene creato un database di Esplora dati di Azure.An Azure Data Explorer database is created in the existing cluster.

  4. Sono elencati tutti i database del cluster specificato.All the databases in the specified cluster are listed.

  5. Il database viene eliminato.The database is deleted.

  6. Il cluster è stato eliminato.The cluster is deleted.

    func main() {
        createCluster(subscription, clusterNamePrefix+clusterName, location, rgName)
        listClusters(subscription, rgName)
        createDatabase(subscription, rgName, clusterNamePrefix+clusterName, location, dbNamePrefix+databaseName)
        listDatabases(subscription, rgName, clusterNamePrefix+clusterName)
        deleteDatabase(subscription, rgName, clusterNamePrefix+clusterName, dbNamePrefix+databaseName)
        deleteCluster(subscription, clusterNamePrefix+clusterName, rgName)
    }
    

    Suggerimento

    Per provare diverse combinazioni di operazioni, è possibile rimuovere il commento e commentare le rispettive funzioni in in main.go base alle esigenze.To try different combinations of operations, you can uncomment and comment the respective functions in main.go as needed.

  7. Clonare il codice di esempio da GitHub:Clone the sample code from GitHub:

    git clone https://github.com/Azure-Samples/azure-data-explorer-go-cluster-management.git
    cd azure-data-explorer-go-cluster-management
    
  8. Il programma esegue l'autenticazione usando le credenziali client.The program authenticates using client credentials. Usare l'interfaccia della riga di comando di Azure AZ ad SP create-for-RBAC per creare un'entità servizio.Use the Azure CLI az ad sp create-for-rbac command to create a service principal. Salvare le informazioni sull'ID client, il segreto client e l'ID tenant da usare nel passaggio successivo.Save the client ID, client secret, and tenant ID information for use in the next step.

  9. Esportare le variabili di ambiente necessarie, incluse le informazioni sull'entità servizio.Export required environment variables including service principal information. Immettere l'ID sottoscrizione, il gruppo di risorse e l'area in cui si vuole creare il cluster.Enter your subscription ID, resource group, and region where you want to create the cluster.

    export AZURE_CLIENT_ID="<enter service principal client ID>"
    export AZURE_CLIENT_SECRET="<enter service principal client secret>"
    export AZURE_TENANT_ID="<enter tenant ID>"
    
    export SUBSCRIPTION="<enter subscription ID>"
    export RESOURCE_GROUP="<enter resource group name>"
    export LOCATION="<enter azure location e.g. Southeast Asia>"
    
    export CLUSTER_NAME_PREFIX="<enter prefix (cluster name will be [prefix]-ADXTestCluster)>"
    export DATABASE_NAME_PREFIX="<enter prefix (database name will be [prefix]-ADXTestDB)>"
    

    Suggerimento

    È probabile che si usino le variabili di ambiente negli scenari di produzione per fornire le credenziali per l'applicazione.You're likely to use environment variables in production scenarios to provide credentials to your application. Come indicato in esaminare il codice, per lo sviluppo locale usare auth. NewAuthorizerFromCLIWithResource se è installato e configurato l'interfaccia della riga di comando di Azure per l'autenticazione.As mentioned in Review the code, for local development, use auth.NewAuthorizerFromCLIWithResource if you have Azure CLI installed and configured for authentication. In tal caso, non è necessario creare un'entità servizio.In that situation, you don't need to create a service principal.

  10. Eseguire il programma:Run the program:

    go run main.go
    

    Si otterrà un output simile al seguente:You'll get an output similar to the following:

    waiting for cluster creation to complete - fooADXTestCluster
    created cluster fooADXTestCluster
    listing clusters in resource group <your resource group>
    +-------------------+---------+----------------+-----------+-----------------------------------------------------------+
    |       NAME        |  STATE  |    LOCATION    | INSTANCES |                            URI                           |
    +-------------------+---------+----------------+-----------+-----------------------------------------------------------+
    | fooADXTestCluster | Running | Southeast Asia |         1 | https://fooADXTestCluster.southeastasia.kusto.windows.net |
    +-------------------+---------+----------------+-----------+-----------------------------------------------------------+
    
    waiting for database creation to complete - barADXTestDB
    created DB fooADXTestCluster/barADXTestDB with ID /subscriptions/<your subscription ID>/resourceGroups/<your resource group>/providers/Microsoft.Kusto/Clusters/fooADXTestCluster/Databases/barADXTestDB and type Microsoft.Kusto/Clusters/Databases
    
    listing databases in cluster fooADXTestCluster
    +--------------------------------+-----------+----------------+------------------------------------+
    |              NAME              |   STATE   |    LOCATION    |                TYPE                |
    +--------------------------------+-----------+----------------+------------------------------------+
    | fooADXTestCluster/barADXTestDB | Succeeded | Southeast Asia | Microsoft.Kusto/Clusters/Databases |
    +--------------------------------+-----------+----------------+------------------------------------+
    
    waiting for database deletion to complete - barADXTestDB
    deleted DB barADXTestDB from cluster fooADXTestCluster
    
    waiting for cluster deletion to complete - fooADXTestCluster
    deleted ADX cluster fooADXTestCluster from resource group <your resource group>
    

Pulizia delle risorseClean up resources

Se il cluster non è stato eliminato a livello di codice usando il codice di esempio in questo articolo, eliminarli manualmente usando l'interfaccia della riga di comando di Azure.If you didn't delete the cluster programmatically using the sample code in this article, delete them manually using Azure CLI.

Passaggi successiviNext steps

Inserire dati con Azure Esplora dati go SDKIngest data using the Azure Data Explorer Go SDK