All skills
josiahsiegel avatar

/adf-ml-analytics

@9ae4e4a

ADF + Azure ML and analytics integrations. PROACTIVELY activate for: (1) Azure ML batch endpoints invoked from ADF, (2) Azure OpenAI Batch API pipeline patterns, (3) ADF ML scoring orchestration, (4) SQL to Storage archival pipelines, (5) AI Services integration via REST connector, (6) Databricks notebook execution from ADF, (7) Data Flow feature engineering, (8) Synapse / Fabric integration from ADF, (9) Cognitive Search indexer triggers, (10) Power BI dataset refresh via REST. Provides: REST connector recipes, Databricks linked service setup, Data Flow templates, and end-to-end ML scoring pipelines.

Use this Skill: https://skilld.dev/gh/josiahsiegel/claude-plugin-marketplace/adf-ml-analytics

This session only. Nothing lands on disk.

referencesazure-ml-patterns.md

≈1.5k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Azure Machine Learning Integration Patterns

AzureMLExecutePipeline Activity (Legacy - SDK v1, support ends June 2026)

Executes an Azure Machine Learning published pipeline from ADF. SDK v1 support ends June 2026. Migrate to batch endpoints via WebActivity for all new and existing projects.

Linked Service (Azure ML Workspace):

{
  "name": "LS_AzureML_Workspace",
  "type": "Microsoft.DataFactory/factories/linkedservices",
  "properties": {
    "type": "AzureMLService",
    "typeProperties": {
      "subscriptionId": "<subscription-id>",
      "resourceGroupName": "<resource-group>",
      "mlWorkspaceName": "<ml-workspace-name>",
      "authentication": "MSI"
    }
  }
}

Execute ML Pipeline Activity:

{
  "name": "RunMLTrainingPipeline",
  "type": "AzureMLExecutePipeline",
  "dependsOn": [],
  "policy": {
    "timeout": "1.00:00:00",
    "retry": 1,
    "retryIntervalInSeconds": 60
  },
  "typeProperties": {
    "mlPipelineId": "<published-pipeline-id>",
    "experimentName": "training-experiment",
    "mlPipelineParameters": {
      "input_data": "@pipeline().parameters.InputDataPath",
      "output_model": "@pipeline().parameters.OutputModelPath",
      "learning_rate": "0.01",
      "epochs": "100"
    },
    "mlParentRunId": "@pipeline().RunId",
    "dataPathAssignments": {
      "inputDataPath": "@pipeline().parameters.DataPath"
    },
    "continueOnStepFailure": false
  },
  "linkedServiceName": {
    "referenceName": "LS_AzureML_Workspace",
    "type": "LinkedServiceReference"
  }
}

Key Properties:

  • mlPipelineId: Published Azure ML pipeline ID (UUID)
  • experimentName: ML experiment for run tracking (optional)
  • mlPipelineParameters: Key-value pairs passed to the ML pipeline
  • dataPathAssignments: Switch data paths at runtime without republishing
  • continueOnStepFailure: If true, pipeline continues even if a step fails (default: false)
  • mlParentRunId: Links ADF run to ML experiment for lineage tracking

Activity Outputs:

@activity('RunMLTrainingPipeline').output.mlPipelineRunId
@activity('RunMLTrainingPipeline').output.status

Azure ML Batch Endpoints (Recommended -- SDK v2)

Batch endpoints replace published pipelines for batch inference. Call them via WebActivity. In SDK v2, published pipelines are replaced by pipeline component deployments under batch endpoints, providing better source control and versioning.

Azure ML REST API version: 2025-12-01 (latest stable for batch endpoint management).

Batch Endpoint Scoring via WebActivity:

{
  "name": "InvokeBatchEndpoint",
  "type": "WebActivity",
  "dependsOn": [],
  "policy": {
    "timeout": "1.00:00:00",
    "retry": 2,
    "retryIntervalInSeconds": 60
  },
  "typeProperties": {
    "url": "https://<endpoint-name>.<region>.inference.ml.azure.com/jobs",
    "method": "POST",
    "headers": {
      "Content-Type": "application/json"
    },
    "body": {
      "properties": {
        "InputData": {
          "mnistinput": {
            "JobInputType": "UriFolder",
            "Uri": "@concat('https://', pipeline().parameters.StorageAccount, '.blob.core.windows.net/', pipeline().parameters.InputContainer, '/', pipeline().parameters.InputPath)"
          }
        },
        "OutputData": {
          "score_output": {
            "JobOutputType": "UriFolder",
            "Uri": "@concat('https://', pipeline().parameters.StorageAccount, '.blob.core.windows.net/', pipeline().parameters.OutputContainer, '/scores/', formatDateTime(utcnow(), 'yyyyMMdd'))"
          }
        }
      }
    },
    "authentication": {
      "type": "MSI",
      "resource": "https://ml.azure.com"
    }
  }
}

Poll Batch Job Completion (Until Loop):

{
  "name": "WaitForBatchJob",
  "type": "Until",
  "dependsOn": [
    { "activity": "InvokeBatchEndpoint", "dependencyConditions": ["Succeeded"] }
  ],
  "typeProperties": {
    "expression": {
      "value": "@or(equals(variables('JobStatus'), 'Completed'), equals(variables('JobStatus'), 'Failed'))",
      "type": "Expression"
    },
    "timeout": "1.00:00:00",
    "activities": [
      {
        "name": "CheckJobStatus",
        "type": "WebActivity",
        "typeProperties": {
          "url": "@concat('https://<endpoint-name>.<region>.inference.ml.azure.com/jobs/', activity('InvokeBatchEndpoint').output.id)",
          "method": "GET",
          "authentication": {
            "type": "MSI",
            "resource": "https://ml.azure.com"
          }
        }
      },
      {
        "name": "SetJobStatus",
        "type": "SetVariable",
        "dependsOn": [
          { "activity": "CheckJobStatus", "dependencyConditions": ["Succeeded"] }
        ],
        "typeProperties": {
          "variableName": "JobStatus",
          "value": {
            "value": "@activity('CheckJobStatus').output.properties.status",
            "type": "Expression"
          }
        }
      },
      {
        "name": "WaitBeforeCheck",
        "type": "Wait",
        "dependsOn": [
          { "activity": "SetJobStatus", "dependencyConditions": ["Succeeded"] }
        ],
        "typeProperties": {
          "waitTimeInSeconds": 60
        }
      }
    ]
  }
}

Azure ML Online Endpoints (Real-Time Scoring)

For real-time scoring of individual records or small batches, call managed online endpoints.

Real-Time Scoring via WebActivity:

{
  "name": "ScoreRecord",
  "type": "WebActivity",
  "typeProperties": {
    "url": "https://<endpoint-name>.<region>.inference.ml.azure.com/score",
    "method": "POST",
    "headers": {
      "Content-Type": "application/json",
      "azureml-model-deployment": "<deployment-name>"
    },
    "body": {
      "input_data": {
        "columns": ["feature1", "feature2", "feature3"],
        "data": [
          ["@{activity('LookupRecord').output.firstRow.feature1}", "@{activity('LookupRecord').output.firstRow.feature2}", "@{activity('LookupRecord').output.firstRow.feature3}"]
        ]
      }
    },
    "authentication": {
      "type": "MSI",
      "resource": "https://ml.azure.com"
    }
  }
}

Source: SKILL.md on GitHub

2 warnings11d4 checks · Risk SAFE
  • Gen Agent Trust Hub11d

    The skill is a technical reference for integrating Azure Data Factory with Machine Learning services. It contains templates for data orchestration, batch scoring, and archival. Security analysis identified that the provided templates create surfaces for indirect prompt injection when processing untrusted data and utilize dynamic code execution patterns within SQL environments, including potentially unsafe deserialization with the Python pickle library.

  • Socket11d

    1 alert: gptSecurity

  • Snyk11d

    Risk: LOW · No issues

  • Runlayer6mo

    1/1 file flagged

Signed by skilld at 9ae4e4a. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Steadyupdated 4 months ago

README badge

README badge for josiahsiegel/claude-plugin-marketplace/adf-ml-analytics