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

Resource Configuration
What properties are required to create a Kusto cluster data set?
You must specify kind (set to “KustoCluster”), kustoClusterResourceId, accountName, dataSetName, resourceGroupName, and shareName.
What's the correct format for the Kusto cluster resource ID?
Use the full Azure resource ID format: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}.
Why do some examples omit the kind and kustoClusterResourceId properties?
The examples demonstrate different data set types. Only the DataSets_KustoCluster_Create example is specific to Kusto cluster data sets and shows the required kind and kustoClusterResourceId properties.
Immutability & Updates
What properties can't be changed after creating the data set?
The properties accountName, dataSetName, resourceGroupName, and shareName are immutable. Changing any of these requires replacing the resource.

Using a different cloud?

Explore analytics guides for other cloud providers: