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 properties are required to create an ADLS Gen2 file data set mapping?
You must specify dataSetId, filePath, fileSystem, kind, resourceGroup, storageAccountName, and subscriptionId. Additionally, you need the immutable identifiers: accountName, dataSetMappingName, resourceGroupName, and shareSubscriptionName.
What value must I use for the kind property?
The kind property must be set to AdlsGen2File.
Immutability & Lifecycle
What properties can't be changed after creating the mapping?
Four properties are immutable: accountName, dataSetMappingName, resourceGroupName, and shareSubscriptionName. Changing these requires recreating the resource.
Advanced Features
When should I specify the outputType property?
Use outputType when mapping SQL Data Warehouse data to an ADLS Gen2 file to specify the output format, such as Csv.
Monitoring & Status
How can I check the status of my data set mapping?
Monitor the dataSetMappingStatus and provisioningState output properties to track the mapping’s current status.

Using a different cloud?

Explore analytics guides for other cloud providers: