Create an Azure Data Explorer cluster and database
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. To use Azure Data Explorer, you first create a cluster, and create one or more databases in that cluster. Then, you can ingest (load) data into a database and run queries against it.
In this article, you'll learn how to create a cluster and a database using either C#, Python, Go, the Azure CLI, PowerShell, or an Azure Resource Manager (ARM) template. To learn how to create a cluster and database using the Azure portal, see Quickstart: Create an Azure Data Explorer cluster and database.
For code samples based on previous SDK versions, see the archived article.
Prerequisites by method of cluster and database creation:
- An Azure subscription. Create a Azure account.
- Python 3.4+.
- Install the azure-common and azure-mgmt-kusto packages.
- A Microsoft Entra application and service principal that can access resources. Save the Directory (tenant) ID, Application ID, and Client Secret.
This section guides you through the process of creating an Azure Data Explorer cluster. Choose the relevant tab for your preferred method to create the cluster.
Create your cluster by using the following command:
from azure.mgmt.kusto import KustoManagementClient from azure.mgmt.kusto.models import Cluster, AzureSku from azure.common.credentials import ServicePrincipalCredentials #Directory (tenant) ID tenant_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx" #Application ID client_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx" #Client Secret client_secret = "xxxxxxxxxxxxxx" subscription_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx" credentials = ServicePrincipalCredentials( client_id=client_id, secret=client_secret, tenant=tenant_id ) location = 'China East 2' sku_name = 'Standard_D13_v2' capacity = 5 tier = "Standard" resource_group_name = 'testrg' cluster_name = 'mykustocluster' cluster = Cluster(location=location, sku=AzureSku(name=sku_name, capacity=capacity, tier=tier)) kusto_management_client = KustoManagementClient(credentials, subscription_id) cluster_operations = kusto_management_client.clusters poller = cluster_operations.begin_create_or_update(resource_group_name, cluster_name, cluster) poller.wait()
Setting Suggested value Field description cluster_name mykustocluster The desired name of your cluster. sku_name Standard_D13_v2 The SKU that will be used for your cluster. tier Standard The SKU tier. capacity number The number of instances of the cluster. resource_group_name testrg The resource group name where the cluster will be created. Note
Create a cluster is a long running operation. Method begin_create_or_update returns an instance of LROPoller, see LROPoller class to get more information.
Run the following command to check whether your cluster was successfully created:
cluster_operations.get(resource_group_name = resource_group_name, cluster_name= cluster_name, custom_headers=None, raw=False)
Confirm the successful creation of the cluster by verifying the result contains
provisioningState
asSucceeded
.
In this section, you'll create a database within the cluster created in the previous section.
Create your database by using the following command:
from azure.mgmt.kusto import KustoManagementClient from azure.common.credentials import ServicePrincipalCredentials from azure.mgmt.kusto.models import ReadWriteDatabase from datetime import timedelta #Directory (tenant) ID tenant_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx" #Application ID client_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx" #Client Secret client_secret = "xxxxxxxxxxxxxx" subscription_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx" credentials = ServicePrincipalCredentials( client_id=client_id, secret=client_secret, tenant=tenant_id ) location = 'China East 2' resource_group_name = 'testrg' cluster_name = 'mykustocluster' soft_delete_period = timedelta(days=3650) hot_cache_period = timedelta(days=3650) database_name = "mykustodatabase" kusto_management_client = KustoManagementClient(credentials, subscription_id) database_operations = kusto_management_client.databases database = ReadWriteDatabase(location=location, soft_delete_period=soft_delete_period, hot_cache_period=hot_cache_period) poller = database_operations.begin_create_or_update(resource_group_name = resource_group_name, cluster_name = cluster_name, database_name = database_name, parameters = database) poller.wait()
Note
If you are using Python version 0.4.0 or below, use Database instead of ReadWriteDatabase.
Setting Suggested value Field description cluster_name mykustocluster The name of your cluster where the database will be created. database_name mykustodatabase The name of your database. resource_group_name testrg The resource group name where the cluster will be created. soft_delete_period 3650 days, 0:00:00 The amount of time that data will be kept available to query. hot_cache_period 3650 days, 0:00:00 The amount of time that data will be kept in cache. Run the following command to see the database that you created:
database_operations.get(resource_group_name = resource_group_name, cluster_name = cluster_name, database_name = database_name)