Condividi tramite


Creare una connessione dati di Griglia di eventi per Azure Esplora dati con SDK

Questo articolo illustra come inserire BLOB dall'account di archiviazione in Azure Esplora dati usando una connessione dati di Griglia di eventi. Creare una connessione dati a Griglia di eventi che imposta una sottoscrizione alla Griglia di eventi di Azure. La sottoscrizione di Griglia di eventi instrada gli eventi dall'account di archiviazione ad Azure Esplora dati tramite un Hub eventi di Azure.

Per informazioni su come creare la connessione nella portale di Azure o con un modello di Resource Manager, vedere Creare una connessione dati di Griglia di eventi.

Per informazioni generali sull'inserimento in Azure Esplora dati da Griglia di eventi, vedere Connettersi a Griglia di eventi.

Nota

Per ottenere prestazioni ottimali con la connessione di Griglia di eventi, impostare la rawSizeBytes proprietà di inserimento tramite i metadati del BLOB. Per altre informazioni, vedere Proprietà di inserimento.

Per esempi di codice basati sulle versioni precedenti dell'SDK, vedere l'articolo archiviato.

Prerequisiti

Creare una connessione dati a Griglia di eventi

In questa sezione verrà stabilita una connessione tra Griglia di eventi e la tabella di Azure Esplora dati.

  1. Installare il pacchetto Microsoft.Azure.Management.Kusto NuGet.

  2. Creare un'entità applicazione Microsoft Entra da usare per l'autenticazione. Sono necessari l'ID directory (tenant), l'ID applicazione e il segreto client.

  3. Eseguire il codice seguente.

    var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
    var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
    var clientSecret = "PlaceholderClientSecret"; //Client Secret
    var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
    var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
    var resourceManagementClient = new ArmClient(credentials, subscriptionId);
    var resourceGroupName = "testrg";
    //The cluster and database that are created as part of the Prerequisites
    var clusterName = "mykustocluster";
    var databaseName = "mykustodatabase";
    var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
    var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
    var cluster = (await resourceGroup.GetKustoClusterAsync(clusterName)).Value;
    var database = (await cluster.GetKustoDatabaseAsync(databaseName)).Value;
    var dataConnections = database.GetKustoDataConnections();
    var eventGridConnectionName = "myeventgridconnect";
    //The event hub and storage account that are created as part of the Prerequisites
    var eventHubResourceId = new ResourceIdentifier("/subscriptions/<storageAccountSubscriptionId>/resourceGroups/<storageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<storageAccountName>");
    var storageAccountResourceId = new ResourceIdentifier("/subscriptions/<eventHubSubscriptionId>/resourceGroups/<eventHubResourceGroupName>/providers/Microsoft.EventHub/namespaces/<eventHubNamespaceName>/eventhubs/<eventHubName>");
    var consumerGroup = "$Default";
    var location = AzureLocation.CentralUS;
    //The table and column mapping are created as part of the Prerequisites
    var tableName = "StormEvents";
    var mappingRuleName = "StormEvents_CSV_Mapping";
    var dataFormat = KustoEventGridDataFormat.Csv;
    var blobStorageEventType = BlobStorageEventType.MicrosoftStorageBlobCreated;
    var databaseRouting = KustoDatabaseRouting.Multi;
    var eventGridConnectionData = new KustoEventGridDataConnection
    {
        StorageAccountResourceId = storageAccountResourceId, EventHubResourceId = eventHubResourceId,
        ConsumerGroup = consumerGroup, TableName = tableName, Location = location, MappingRuleName = mappingRuleName,
        DataFormat = dataFormat, BlobStorageEventType = blobStorageEventType, DatabaseRouting = databaseRouting
    };
    await dataConnections.CreateOrUpdateAsync(WaitUntil.Completed, eventGridConnectionName, eventGridConnectionData);
    
    Impostazione Valore consigliato Descrizione campo
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx ID tenant. Noto anche come ID directory.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx L'ID sottoscrizione usato per la creazione di risorse.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx L'ID client dell'applicazione che può accedere alle risorse nel tenant.
    clientSecret PlaceholderClientSecret Il segreto client dell'applicazione che può accedere alle risorse nel tenant.
    resourceGroupName testrg Nome del gruppo di risorse contenente il cluster.
    clusterName mykustocluster Nome del cluster.
    databaseName mykustodatabase Nome del database di destinazione nel cluster.
    eventGridConnectionName myeventgridconnect Nome desiderato della connessione dati.
    tableName StormEvents Nome della tabella di destinazione nel database di destinazione.
    mappingRuleName StormEvents_CSV_Mapping Nome del mapping delle colonne correlato alla tabella di destinazione.
    dataFormat csv Formato dati del messaggio.
    eventHubResourceId ID risorsa ID risorsa dell'hub eventi in cui Griglia di eventi è configurato per l'invio di eventi.
    storageAccountResourceId ID risorsa ID risorsa dell'account di archiviazione che contiene i dati per l'inserimento.
    consumerGroup $Default Gruppo di consumer dell'hub eventi.
    posizione Stati Uniti centrali Posizione della risorsa di connessione dati.
    blobStorageEventType Microsoft.Storage.BlobCreated Tipo di evento che attiva l'inserimento dati. Gli eventi supportati sono Microsoft.Storage.BlobCreated o Microsoft.Storage.BlobRenamed. La ridenominazione dei BLOB è supportata solo per l'archiviazione ADLSv2.
    databaseRouting Multi o Single Routing del database per la connessione. Se si imposta il valore su Single, la connessione dati verrà instradata a un singolo database nel cluster come specificato nell'impostazione databaseName . Se si imposta il valore su Multi, è possibile eseguire l'override del database di destinazione predefinito usando la proprietà inserimento database. Per altre informazioni, vedere Routing degli eventi.

Usare la connessione dati di Griglia di eventi

Questa sezione illustra come attivare l'inserimento da Archiviazione BLOB di Azure o Azure Data Lake Gen 2 al cluster dopo la creazione o la ridenominazione dei BLOB.

Selezionare la scheda pertinente in base al tipo di SDK di archiviazione usato per caricare i BLOB.

L'esempio di codice seguente usa Archiviazione BLOB di Azure SDK per caricare un file in Archiviazione BLOB di Azure. Il caricamento attiva la connessione dati di Griglia di eventi, che inserisce i dati in Azure Esplora dati.

var azureStorageAccountConnectionString=<storage_account_connection_string>;
var containerName = <container_name>;
var blobName = <blob_name>;
var localFileName = <file_to_upload>;
var uncompressedSizeInBytes = <uncompressed_size_in_bytes>;
var mapping = <mappingReference>;
// Create a new container in your storage account.
var azureStorageAccount = CloudStorageAccount.Parse(azureStorageAccountConnectionString);
var blobClient = azureStorageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
container.CreateIfNotExists();
// Set metadata and upload a file to the blob.
var blob = container.GetBlockBlobReference(blobName);
blob.Metadata.Add("rawSizeBytes", uncompressedSizeInBytes);
blob.Metadata.Add("kustoIngestionMappingReference", mapping);
blob.UploadFromFile(localFileName);
// Confirm success of the upload by listing the blobs in your container.
var blobs = container.ListBlobs();

Nota

Azure Esplora dati non eliminerà i BLOB dopo l'inserimento. Conservare i BLOB per tre-cinque giorni usando il ciclo di vita dell'archiviazione BLOB di Azure per gestire l'eliminazione dei BLOB.

Nota

L'attivazione dell'inserimento dopo un'operazione CopyBlob non è supportata per gli account di archiviazione in cui è abilitata la funzionalità dello spazio dei nomi gerarchico.

Importante

È consigliabile generare eventi di archiviazione da codice personalizzato e inviarli a Hub eventi. Se si sceglie di farlo, assicurarsi che gli eventi prodotti rispettino rigorosamente lo schema degli eventi di archiviazione e le specifiche di formato JSON appropriate.

Rimuovere una connessione dati di Griglia di eventi

Per rimuovere la connessione di Griglia di eventi, eseguire il comando seguente:

kustoManagementClient.DataConnections.Delete(resourceGroupName, clusterName, databaseName, dataConnectionName);