Configure Azure Data Share Kusto Cluster Datasets

The azure-native:datashare:KustoClusterDataSet resource, part of the Pulumi Azure Native provider, registers a Kusto cluster as a dataset within an Azure Data Share, enabling data providers to share analytics infrastructure with consumers. This guide focuses on one capability: Kusto cluster dataset registration.

This resource belongs to an Azure Data Share account and share. It references an existing Kusto cluster by resource ID. The example is intentionally minimal. Combine it with your own Data Share accounts, shares, and Kusto infrastructure.

Add a Kusto cluster to a data share

Data providers sharing analytics infrastructure expose entire Kusto clusters to consumers, enabling access to all databases and tables within the cluster.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const kustoClusterDataSet = new azure_native.datashare.KustoClusterDataSet("kustoClusterDataSet", {
    accountName: "Account1",
    dataSetName: "Dataset1",
    kind: "KustoCluster",
    kustoClusterResourceId: "/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1",
    resourceGroupName: "SampleResourceGroup",
    shareName: "Share1",
});
import pulumi
import pulumi_azure_native as azure_native

kusto_cluster_data_set = azure_native.datashare.KustoClusterDataSet("kustoClusterDataSet",
    account_name="Account1",
    data_set_name="Dataset1",
    kind="KustoCluster",
    kusto_cluster_resource_id="/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1",
    resource_group_name="SampleResourceGroup",
    share_name="Share1")
package main

import (
	datashare "github.com/pulumi/pulumi-azure-native-sdk/datashare/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := datashare.NewKustoClusterDataSet(ctx, "kustoClusterDataSet", &datashare.KustoClusterDataSetArgs{
			AccountName:            pulumi.String("Account1"),
			DataSetName:            pulumi.String("Dataset1"),
			Kind:                   pulumi.String("KustoCluster"),
			KustoClusterResourceId: pulumi.String("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1"),
			ResourceGroupName:      pulumi.String("SampleResourceGroup"),
			ShareName:              pulumi.String("Share1"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var kustoClusterDataSet = new AzureNative.DataShare.KustoClusterDataSet("kustoClusterDataSet", new()
    {
        AccountName = "Account1",
        DataSetName = "Dataset1",
        Kind = "KustoCluster",
        KustoClusterResourceId = "/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1",
        ResourceGroupName = "SampleResourceGroup",
        ShareName = "Share1",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.datashare.KustoClusterDataSet;
import com.pulumi.azurenative.datashare.KustoClusterDataSetArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var kustoClusterDataSet = new KustoClusterDataSet("kustoClusterDataSet", KustoClusterDataSetArgs.builder()
            .accountName("Account1")
            .dataSetName("Dataset1")
            .kind("KustoCluster")
            .kustoClusterResourceId("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1")
            .resourceGroupName("SampleResourceGroup")
            .shareName("Share1")
            .build());

    }
}
resources:
  kustoClusterDataSet:
    type: azure-native:datashare:KustoClusterDataSet
    properties:
      accountName: Account1
      dataSetName: Dataset1
      kind: KustoCluster
      kustoClusterResourceId: /subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1
      resourceGroupName: SampleResourceGroup
      shareName: Share1

The kustoClusterResourceId property points to the full Azure resource ID of your Kusto cluster. The kind property must be set to “KustoCluster” to indicate you’re sharing the entire cluster rather than individual databases or tables. The dataset is registered within the specified Data Share account and share, identified by accountName and shareName.

Beyond these examples

This snippet focuses on Kusto cluster dataset registration. It’s intentionally minimal rather than a complete data sharing solution.

The example references pre-existing infrastructure such as Azure Data Share accounts and shares, Kusto clusters with full resource IDs, and resource groups and subscriptions. It focuses on dataset registration rather than provisioning the surrounding infrastructure.

To keep things focused, common dataset patterns are omitted, including:

  • Database-level or table-level sharing (use KustoDatabase or KustoTable dataset types)
  • SQL Database or Synapse sharing (use SqlDBTable or SynapseWorkspaceSqlPoolTable types)
  • Dataset mapping configuration for consumers
  • Snapshot schedules and synchronization settings

These omissions are intentional: the goal is to illustrate how Kusto cluster datasets are wired, not provide drop-in data sharing modules. See the KustoClusterDataSet resource reference for all available configuration options.

Let's configure Azure Data Share Kusto Cluster Datasets

Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.

Try Pulumi Cloud for FREE

Frequently Asked Questions

Configuration & Setup
What properties do I need to create a Kusto cluster data set?
You must provide kind (set to “KustoCluster”), kustoClusterResourceId, accountName, dataSetName, resourceGroupName, and shareName. The kind property identifies this as a Kusto cluster data set type.
Why do some examples omit the `kind` and `kustoClusterResourceId` properties?
Most examples show minimal configuration, but the DataSets_KustoCluster_Create example demonstrates that kind and kustoClusterResourceId are required properties that must be explicitly set.
Resource Management
Which properties can't be changed after I create the data set?
The properties accountName, dataSetName, resourceGroupName, and shareName are immutable and cannot be modified after creation.
How do I import an existing Kusto cluster data set into Pulumi?
Use the import command with the full resource identifier: pulumi import azure-native:datashare:KustoClusterDataSet <name> /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataShare/accounts/{accountName}/shares/{shareName}/dataSets/{dataSetName}
Properties & Outputs
What's the difference between input and output properties?
Output properties like dataSetId, location, provisioningState, and systemData are computed by Azure and cannot be set directly. They’re available after the resource is created.

Using a different cloud?

Explore analytics guides for other cloud providers: