Paremeters at the Data factory level....is the even supported????

Johns-305 11 Reputation points
2022-11-19T17:14:40.557+00:00

Is there any way to create a parameter that exists at the Factory instance level (as opposed to the code/branch level).

We want, no, expect because it's a very simple use case, to set a value, like server name for a factory instance (dev, test, prod, etc) and read it at runtime.

The way so-called parameters, Global, Linked Service, are implemented just doesn't work in any practical sense. If the param and value are part of the source code, they're not parameters.

Why is this so hard? The expected behavior is like the connection string setting on an App Service.

The scenario is two devs each with separate ADF instances connected to the same git. Each has a SQL instance too. They need to collab on the code but keep pointing to their own sql instance.

Azure Data Factory
Azure Data Factory
An Azure service for ingesting, preparing, and transforming data at scale.
9,653 questions
0 comments No comments
{count} votes

2 answers

Sort by: Most helpful
  1. BhargavaGunnam-MSFT 26,496 Reputation points Microsoft Employee
    2022-11-21T20:34:10.65+00:00

    Hello @Johns-305 ,

    Welcome to the MS Q&A platform.

    Please correct me If my understanding is wrong. You have two devs with separate ADF instances connected to the same git. Each has a separate SQL instance.
    When you are using GIT they are pointing to the same SQL instance. You want to know if there is any way to point to their own SQL instances during the pipeline deployment.

    You can create a custom Resource Manager parameter configuration that creates a file named arm-template-parameters-definition.json in the root folder of your git branch. You must use that exact file name.

    Ex:

     "Microsoft.DataFactory/factories/linkedServices": {  
            "*": {  
                "properties": {  
                    "typeProperties": {  
                        "accountName": "=",  
                        "username": "=",  
                        "connectionString": "|:-connectionString:secureString",  
                        "secretAccessKey": "|"  
                    }  
                }  
            }  
    

    In this example, for all linked services of type AzureDataLakeStore, a specific template will be applied. For all others (via *), a different template will be applied.
    The connectionString property will be parameterized as a securestring value. It won't have a default value. It will have a shortened parameter name that's suffixed with connectionString.

    Reference document: https://learn.microsoft.com/en-us/azure/data-factory/continuous-integration-delivery-resource-manager-custom-parameters

    Please let me know if you have any further questions.

    1 person found this answer helpful.

  2. Johns-305 11 Reputation points
    2022-12-01T12:33:35.467+00:00

    No. Overriding the parameters in the branch is exactly the same thing. We've tried various combination of personal branches and such and it just doesn't work in any reasonable capacity.

    I'm asking if there is a way to have ADF Instance specific parameters. As asked, something that works like Configuration/Application settings for an App Service.

    At this point, we've pretty much given up, already needing 4 branches to make dev, test, preprod and prod. <- This completely unnecessary complication is due to a lack of instance level parameters.

    The only viable solution seems to be re-clone every branch so local parameters aren't overwritten.