Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate/multivariate anomaly detection, time-series analysis, or AI-powered monitoring.
Add this skill
npx mdskills install sickn33/azure-ai-anomalydetector-javaComprehensive Azure SDK documentation with excellent code examples for both univariate and multivariate detection
1---2name: azure-ai-anomalydetector-java3description: Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate/multivariate anomaly detection, time-series analysis, or AI-powered monitoring.4package: com.azure:azure-ai-anomalydetector5---67# Azure AI Anomaly Detector SDK for Java89Build anomaly detection applications using the Azure AI Anomaly Detector SDK for Java.1011## Installation1213```xml14<dependency>15 <groupId>com.azure</groupId>16 <artifactId>azure-ai-anomalydetector</artifactId>17 <version>3.0.0-beta.6</version>18</dependency>19```2021## Client Creation2223### Sync and Async Clients2425```java26import com.azure.ai.anomalydetector.AnomalyDetectorClientBuilder;27import com.azure.ai.anomalydetector.MultivariateClient;28import com.azure.ai.anomalydetector.UnivariateClient;29import com.azure.core.credential.AzureKeyCredential;3031String endpoint = System.getenv("AZURE_ANOMALY_DETECTOR_ENDPOINT");32String key = System.getenv("AZURE_ANOMALY_DETECTOR_API_KEY");3334// Multivariate client for multiple correlated signals35MultivariateClient multivariateClient = new AnomalyDetectorClientBuilder()36 .credential(new AzureKeyCredential(key))37 .endpoint(endpoint)38 .buildMultivariateClient();3940// Univariate client for single variable analysis41UnivariateClient univariateClient = new AnomalyDetectorClientBuilder()42 .credential(new AzureKeyCredential(key))43 .endpoint(endpoint)44 .buildUnivariateClient();45```4647### With DefaultAzureCredential4849```java50import com.azure.identity.DefaultAzureCredentialBuilder;5152MultivariateClient client = new AnomalyDetectorClientBuilder()53 .credential(new DefaultAzureCredentialBuilder().build())54 .endpoint(endpoint)55 .buildMultivariateClient();56```5758## Key Concepts5960### Univariate Anomaly Detection61- **Batch Detection**: Analyze entire time series at once62- **Streaming Detection**: Real-time detection on latest data point63- **Change Point Detection**: Detect trend changes in time series6465### Multivariate Anomaly Detection66- Detect anomalies across 300+ correlated signals67- Uses Graph Attention Network for inter-correlations68- Three-step process: Train → Inference → Results6970## Core Patterns7172### Univariate Batch Detection7374```java75import com.azure.ai.anomalydetector.models.*;76import java.time.OffsetDateTime;77import java.util.List;7879List<TimeSeriesPoint> series = List.of(80 new TimeSeriesPoint(OffsetDateTime.parse("2023-01-01T00:00:00Z"), 1.0),81 new TimeSeriesPoint(OffsetDateTime.parse("2023-01-02T00:00:00Z"), 2.5),82 // ... more data points (minimum 12 points required)83);8485UnivariateDetectionOptions options = new UnivariateDetectionOptions(series)86 .setGranularity(TimeGranularity.DAILY)87 .setSensitivity(95);8889UnivariateEntireDetectionResult result = univariateClient.detectUnivariateEntireSeries(options);9091// Check for anomalies92for (int i = 0; i < result.getIsAnomaly().size(); i++) {93 if (result.getIsAnomaly().get(i)) {94 System.out.printf("Anomaly detected at index %d with value %.2f%n",95 i, series.get(i).getValue());96 }97}98```99100### Univariate Last Point Detection (Streaming)101102```java103UnivariateLastDetectionResult lastResult = univariateClient.detectUnivariateLastPoint(options);104105if (lastResult.isAnomaly()) {106 System.out.println("Latest point is an anomaly!");107 System.out.printf("Expected: %.2f, Upper: %.2f, Lower: %.2f%n",108 lastResult.getExpectedValue(),109 lastResult.getUpperMargin(),110 lastResult.getLowerMargin());111}112```113114### Change Point Detection115116```java117UnivariateChangePointDetectionOptions changeOptions =118 new UnivariateChangePointDetectionOptions(series, TimeGranularity.DAILY);119120UnivariateChangePointDetectionResult changeResult =121 univariateClient.detectUnivariateChangePoint(changeOptions);122123for (int i = 0; i < changeResult.getIsChangePoint().size(); i++) {124 if (changeResult.getIsChangePoint().get(i)) {125 System.out.printf("Change point at index %d with confidence %.2f%n",126 i, changeResult.getConfidenceScores().get(i));127 }128}129```130131### Multivariate Model Training132133```java134import com.azure.ai.anomalydetector.models.*;135import com.azure.core.util.polling.SyncPoller;136137// Prepare training request with blob storage data138ModelInfo modelInfo = new ModelInfo()139 .setDataSource("https://storage.blob.core.windows.net/container/data.zip?sasToken")140 .setStartTime(OffsetDateTime.parse("2023-01-01T00:00:00Z"))141 .setEndTime(OffsetDateTime.parse("2023-06-01T00:00:00Z"))142 .setSlidingWindow(200)143 .setDisplayName("MyMultivariateModel");144145// Train model (long-running operation)146AnomalyDetectionModel trainedModel = multivariateClient.trainMultivariateModel(modelInfo);147148String modelId = trainedModel.getModelId();149System.out.println("Model ID: " + modelId);150151// Check training status152AnomalyDetectionModel model = multivariateClient.getMultivariateModel(modelId);153System.out.println("Status: " + model.getModelInfo().getStatus());154```155156### Multivariate Batch Inference157158```java159MultivariateBatchDetectionOptions detectionOptions = new MultivariateBatchDetectionOptions()160 .setDataSource("https://storage.blob.core.windows.net/container/inference-data.zip?sasToken")161 .setStartTime(OffsetDateTime.parse("2023-07-01T00:00:00Z"))162 .setEndTime(OffsetDateTime.parse("2023-07-31T00:00:00Z"))163 .setTopContributorCount(10);164165MultivariateDetectionResult detectionResult =166 multivariateClient.detectMultivariateBatchAnomaly(modelId, detectionOptions);167168String resultId = detectionResult.getResultId();169170// Poll for results171MultivariateDetectionResult result = multivariateClient.getBatchDetectionResult(resultId);172for (AnomalyState state : result.getResults()) {173 if (state.getValue().isAnomaly()) {174 System.out.printf("Anomaly at %s, severity: %.2f%n",175 state.getTimestamp(),176 state.getValue().getSeverity());177 }178}179```180181### Multivariate Last Point Detection182183```java184MultivariateLastDetectionOptions lastOptions = new MultivariateLastDetectionOptions()185 .setVariables(List.of(186 new VariableValues("variable1", List.of("timestamp1"), List.of(1.0f)),187 new VariableValues("variable2", List.of("timestamp1"), List.of(2.5f))188 ))189 .setTopContributorCount(5);190191MultivariateLastDetectionResult lastResult =192 multivariateClient.detectMultivariateLastAnomaly(modelId, lastOptions);193194if (lastResult.getValue().isAnomaly()) {195 System.out.println("Anomaly detected!");196 // Check contributing variables197 for (AnomalyContributor contributor : lastResult.getValue().getInterpretation()) {198 System.out.printf("Variable: %s, Contribution: %.2f%n",199 contributor.getVariable(),200 contributor.getContributionScore());201 }202}203```204205### Model Management206207```java208// List all models209PagedIterable<AnomalyDetectionModel> models = multivariateClient.listMultivariateModels();210for (AnomalyDetectionModel m : models) {211 System.out.printf("Model: %s, Status: %s%n",212 m.getModelId(),213 m.getModelInfo().getStatus());214}215216// Delete a model217multivariateClient.deleteMultivariateModel(modelId);218```219220## Error Handling221222```java223import com.azure.core.exception.HttpResponseException;224225try {226 univariateClient.detectUnivariateEntireSeries(options);227} catch (HttpResponseException e) {228 System.out.println("Status code: " + e.getResponse().getStatusCode());229 System.out.println("Error: " + e.getMessage());230}231```232233## Environment Variables234235```bash236AZURE_ANOMALY_DETECTOR_ENDPOINT=https://<resource>.cognitiveservices.azure.com/237AZURE_ANOMALY_DETECTOR_API_KEY=<your-api-key>238```239240## Best Practices2412421. **Minimum Data Points**: Univariate requires at least 12 points; more data improves accuracy2432. **Granularity Alignment**: Match `TimeGranularity` to your actual data frequency2443. **Sensitivity Tuning**: Higher values (0-99) detect more anomalies2454. **Multivariate Training**: Use 200-1000 sliding window based on pattern complexity2465. **Error Handling**: Always handle `HttpResponseException` for API errors247248## Trigger Phrases249250- "anomaly detection Java"251- "detect anomalies time series"252- "multivariate anomaly Java"253- "univariate anomaly detection"254- "streaming anomaly detection"255- "change point detection"256- "Azure AI Anomaly Detector"257
Full transparency — inspect the skill content before installing.