Configure Azure Data Share ADLS Gen2 File Dataset Mappings

The azure-native:datashare:ADLSGen2FileDataSetMapping resource, part of the Pulumi Azure Native provider, defines how a data consumer maps received datasets to ADLS Gen2 file destinations. This guide focuses on one capability: mapping SQL data warehouse datasets to ADLS Gen2 files.

Dataset mappings are consumer-side configurations that require an existing Data Share account, share subscription, ADLS Gen2 storage account, and source dataset from the provider. The example is intentionally minimal. Combine it with your own access permissions, trigger configuration, and validation logic.

Map SQL data warehouse output to ADLS Gen2 files

Data consumers receiving SQL data warehouse datasets often materialize the data into ADLS Gen2 for downstream analytics or archival workflows.

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

const adlsGen2FileDataSetMapping = new azure_native.datashare.ADLSGen2FileDataSetMapping("adlsGen2FileDataSetMapping", {
    accountName: "Account1",
    dataSetId: "a08f184b-0567-4b11-ba22-a1199336d226",
    dataSetMappingName: "DatasetMapping1",
    filePath: "file21",
    fileSystem: "fileSystem",
    kind: "AdlsGen2File",
    outputType: azure_native.datashare.OutputType.Csv,
    resourceGroup: "SampleResourceGroup",
    resourceGroupName: "SampleResourceGroup",
    shareSubscriptionName: "ShareSubscription1",
    storageAccountName: "storage2",
    subscriptionId: "433a8dfd-e5d5-4e77-ad86-90acdc75eb1a",
});
import pulumi
import pulumi_azure_native as azure_native

adls_gen2_file_data_set_mapping = azure_native.datashare.ADLSGen2FileDataSetMapping("adlsGen2FileDataSetMapping",
    account_name="Account1",
    data_set_id="a08f184b-0567-4b11-ba22-a1199336d226",
    data_set_mapping_name="DatasetMapping1",
    file_path="file21",
    file_system="fileSystem",
    kind="AdlsGen2File",
    output_type=azure_native.datashare.OutputType.CSV,
    resource_group="SampleResourceGroup",
    resource_group_name="SampleResourceGroup",
    share_subscription_name="ShareSubscription1",
    storage_account_name="storage2",
    subscription_id="433a8dfd-e5d5-4e77-ad86-90acdc75eb1a")
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.NewADLSGen2FileDataSetMapping(ctx, "adlsGen2FileDataSetMapping", &datashare.ADLSGen2FileDataSetMappingArgs{
			AccountName:           pulumi.String("Account1"),
			DataSetId:             pulumi.String("a08f184b-0567-4b11-ba22-a1199336d226"),
			DataSetMappingName:    pulumi.String("DatasetMapping1"),
			FilePath:              pulumi.String("file21"),
			FileSystem:            pulumi.String("fileSystem"),
			Kind:                  pulumi.String("AdlsGen2File"),
			OutputType:            pulumi.String(datashare.OutputTypeCsv),
			ResourceGroup:         pulumi.String("SampleResourceGroup"),
			ResourceGroupName:     pulumi.String("SampleResourceGroup"),
			ShareSubscriptionName: pulumi.String("ShareSubscription1"),
			StorageAccountName:    pulumi.String("storage2"),
			SubscriptionId:        pulumi.String("433a8dfd-e5d5-4e77-ad86-90acdc75eb1a"),
		})
		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 adlsGen2FileDataSetMapping = new AzureNative.DataShare.ADLSGen2FileDataSetMapping("adlsGen2FileDataSetMapping", new()
    {
        AccountName = "Account1",
        DataSetId = "a08f184b-0567-4b11-ba22-a1199336d226",
        DataSetMappingName = "DatasetMapping1",
        FilePath = "file21",
        FileSystem = "fileSystem",
        Kind = "AdlsGen2File",
        OutputType = AzureNative.DataShare.OutputType.Csv,
        ResourceGroup = "SampleResourceGroup",
        ResourceGroupName = "SampleResourceGroup",
        ShareSubscriptionName = "ShareSubscription1",
        StorageAccountName = "storage2",
        SubscriptionId = "433a8dfd-e5d5-4e77-ad86-90acdc75eb1a",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.datashare.ADLSGen2FileDataSetMapping;
import com.pulumi.azurenative.datashare.ADLSGen2FileDataSetMappingArgs;
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 adlsGen2FileDataSetMapping = new ADLSGen2FileDataSetMapping("adlsGen2FileDataSetMapping", ADLSGen2FileDataSetMappingArgs.builder()
            .accountName("Account1")
            .dataSetId("a08f184b-0567-4b11-ba22-a1199336d226")
            .dataSetMappingName("DatasetMapping1")
            .filePath("file21")
            .fileSystem("fileSystem")
            .kind("AdlsGen2File")
            .outputType("Csv")
            .resourceGroup("SampleResourceGroup")
            .resourceGroupName("SampleResourceGroup")
            .shareSubscriptionName("ShareSubscription1")
            .storageAccountName("storage2")
            .subscriptionId("433a8dfd-e5d5-4e77-ad86-90acdc75eb1a")
            .build());

    }
}
resources:
  adlsGen2FileDataSetMapping:
    type: azure-native:datashare:ADLSGen2FileDataSetMapping
    properties:
      accountName: Account1
      dataSetId: a08f184b-0567-4b11-ba22-a1199336d226
      dataSetMappingName: DatasetMapping1
      filePath: file21
      fileSystem: fileSystem
      kind: AdlsGen2File
      outputType: Csv
      resourceGroup: SampleResourceGroup
      resourceGroupName: SampleResourceGroup
      shareSubscriptionName: ShareSubscription1
      storageAccountName: storage2
      subscriptionId: 433a8dfd-e5d5-4e77-ad86-90acdc75eb1a

When the provider synchronizes data, Azure Data Share writes the SQL data warehouse output to the specified ADLS Gen2 location. The dataSetId identifies the source dataset from the provider’s share. The filePath and fileSystem properties define where the data lands in your storage account. The outputType property controls the file format; here, CSV is specified for compatibility with analytics tools. The kind property must be set to “AdlsGen2File” to indicate this mapping type.

Beyond these examples

This snippet focuses on SQL data warehouse to ADLS Gen2 file mapping. It’s intentionally minimal rather than a full data sharing workflow.

The example references pre-existing infrastructure such as Azure Data Share account, share subscription (consumer side), ADLS Gen2 storage account and file system, and source dataset from data provider. It focuses on configuring the mapping rather than provisioning the surrounding infrastructure.

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

  • Other dataset mapping types (folder, blob container)
  • Mapping validation and error handling
  • Trigger configuration for data synchronization
  • Access permissions and managed identity setup

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

Let's configure Azure Data Share ADLS Gen2 File Dataset Mappings

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's required to create a data set mapping?
You need seven required properties: dataSetId, filePath, fileSystem, kind (must be “AdlsGen2File”), resourceGroup, storageAccountName, and subscriptionId. Additionally, four immutable properties identify the parent resources: accountName, dataSetMappingName, resourceGroupName, and shareSubscriptionName.
What output file types are supported?
The outputType property is optional. The schema example shows Csv as a value, but other supported types aren’t explicitly documented in the schema.
Immutability & Lifecycle
What properties can't I change after creating the mapping?
Four properties are immutable: accountName, dataSetMappingName, resourceGroupName, and shareSubscriptionName. Changing these requires recreating the resource.
Why must I set kind to 'AdlsGen2File'?
The kind property is a discriminator that identifies this resource as an ADLS Gen2 file data set mapping, distinguishing it from other mapping types in the Azure Data Share service.
Monitoring & Status
How do I check if my data set mapping is ready?
Check the computed properties provisioningState (provisioning status) and dataSetMappingStatus (mapping status) in the resource outputs.

Using a different cloud?

Explore analytics guides for other cloud providers: