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 FREEFrequently Asked Questions
Configuration & Setup
dataSetId, filePath, fileSystem, kind (must be “AdlsGen2File”), resourceGroup, storageAccountName, and subscriptionId. Additionally, four immutable properties identify the parent resources: accountName, dataSetMappingName, resourceGroupName, and shareSubscriptionName.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
accountName, dataSetMappingName, resourceGroupName, and shareSubscriptionName. Changing these requires recreating the resource.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
provisioningState (provisioning status) and dataSetMappingStatus (mapping status) in the resource outputs.