Azure / azure-sdk-for-net

This repository is for active development of the Azure SDK for .NET. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/dotnet/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-net.
MIT License
5.26k stars 4.6k forks source link

[BUG] Azure Data Factory Default Value Expression not valid #43532

Open leekennett opened 5 months ago

leekennett commented 5 months ago

Library name and version

Azure.ResourceManager.DataFactory 1.0.0

Describe the bug

Using the .net SDK defining a should result in an expression in Azure Data Factory.

["fileName"] = new(EntityParameterType.String) { DefaultValue = BinaryData.FromObjectAsJson(new Dictionary<string, object>() { ["value"] = "@coalesce(null)", ["type"] = "Expression" }) },

but Azure Data Factory is not reflecting this accurately. Apparently order matters in ADF. When observing the deployed dataset image image

There doesn't appear any way to ensure the order. The following is what ADF is expecting to represent an expression. "fileName": { "value": "@coalesce(null)", "type": "Expression" }

Expected behavior

Passing an object as json with those values should get parsed as valid expression in ADF.

Output to ADF should be "fileName": { "value": "@coalesce(null)", "type": "Expression" }

Actual behavior

Value is not getting parsed as an expression. "fileName": { "type": "Expression", "value": "@coalesce(null)" }

Reproduction Steps

Write an ADF .net project. Define a Dataset with a parameter, set the default value to an expression like: ["fileName"] = new(EntityParameterType.String) { DefaultValue = BinaryData.FromObjectAsJson(new Dictionary<string, object>() { ["value"] = "@coalesce(null)", ["type"] = "Expression" }) }, Write that dataset to an ADF instance, anything that references that's dataset you should be able to observe that that parameter is not getting parsed as an expression.

Environment

No response

jsquire commented 5 months ago

Thank you for your feedback. Tagging and routing to the team best able to assist.