Configure Azure Data Share Kusto Database Datasets

The azure-native:datashare:KustoDatabaseDataSet resource, part of the Pulumi Azure Native provider, registers an Azure Data Explorer (Kusto) database as a dataset within an Azure Data Share, making it available for sharing with data consumers. This guide focuses on one capability: Kusto database dataset registration.

Dataset registration sits within a three-level hierarchy: a Data Share account contains shares, and shares contain datasets. The example assumes you have an existing Data Share account, share, and Kusto database. Combine this with invitation and subscription resources to complete the sharing workflow.

Add a Kusto database to a data share

Data providers sharing Azure Data Explorer databases register them as datasets within a Data Share account, making the database available for consumers.

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

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

kusto_database_data_set = azure_native.datashare.KustoDatabaseDataSet("kustoDatabaseDataSet",
    account_name="Account1",
    data_set_name="Dataset1",
    kind="KustoDatabase",
    kusto_database_resource_id="/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1",
    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.NewKustoDatabaseDataSet(ctx, "kustoDatabaseDataSet", &datashare.KustoDatabaseDataSetArgs{
			AccountName:             pulumi.String("Account1"),
			DataSetName:             pulumi.String("Dataset1"),
			Kind:                    pulumi.String("KustoDatabase"),
			KustoDatabaseResourceId: pulumi.String("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1"),
			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 kustoDatabaseDataSet = new AzureNative.DataShare.KustoDatabaseDataSet("kustoDatabaseDataSet", new()
    {
        AccountName = "Account1",
        DataSetName = "Dataset1",
        Kind = "KustoDatabase",
        KustoDatabaseResourceId = "/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1",
        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.KustoDatabaseDataSet;
import com.pulumi.azurenative.datashare.KustoDatabaseDataSetArgs;
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 kustoDatabaseDataSet = new KustoDatabaseDataSet("kustoDatabaseDataSet", KustoDatabaseDataSetArgs.builder()
            .accountName("Account1")
            .dataSetName("Dataset1")
            .kind("KustoDatabase")
            .kustoDatabaseResourceId("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1")
            .resourceGroupName("SampleResourceGroup")
            .shareName("Share1")
            .build());

    }
}
resources:
  kustoDatabaseDataSet:
    type: azure-native:datashare:KustoDatabaseDataSet
    properties:
      accountName: Account1
      dataSetName: Dataset1
      kind: KustoDatabase
      kustoDatabaseResourceId: /subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1
      resourceGroupName: SampleResourceGroup
      shareName: Share1

The kustoDatabaseResourceId property points to your existing Kusto database using its full Azure resource ID. The kind property must be set to “KustoDatabase” to indicate this dataset type. The accountName, shareName, and dataSetName properties position this dataset within the Data Share hierarchy: the dataset named “Dataset1” lives in share “Share1” within account “Account1”.

Beyond these examples

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

The example references pre-existing infrastructure such as Data Share accounts and shares, Azure Data Explorer databases, 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:

  • Dataset synchronization settings
  • Consumer-side dataset mapping
  • Share invitations and subscriptions
  • Access permissions and role assignments

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

Let's configure Azure Data Share Kusto Database 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 are the required properties for creating a Kusto database data set?
You must specify kind (set to “KustoDatabase”) and kustoDatabaseResourceId (the resource ID of your Kusto database). Additionally, you need to provide accountName, dataSetName, resourceGroupName, and shareName.
What format should I use for the Kusto database resource ID?
Use the full Azure resource ID format: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterId}/databases/{databaseId}
Lifecycle & Immutability
Which properties can't be changed after creating the data set?
Four properties are immutable: accountName, dataSetName, resourceGroupName, and shareName. Changing any of these requires replacing the resource.

Using a different cloud?

Explore analytics guides for other cloud providers: