[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-azure-ai-anomalydetector-java":3,"mdc--j1x333-key":46,"related-org-microsoft-azure-ai-anomalydetector-java":1817,"related-repo-microsoft-azure-ai-anomalydetector-java":1997},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":29,"repoUrl":30,"updatedAt":31,"license":32,"forks":33,"topics":34,"repo":41,"sourceUrl":44,"mdContent":45},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,22,25,26],{"name":13,"slug":14,"type":15},"Azure","azure","tag",{"name":17,"slug":18,"type":15},"Java","java",{"name":20,"slug":21,"type":15},"Monitoring","monitoring",{"name":23,"slug":24,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":27,"slug":28,"type":15},"Analytics","analytics",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-05-13T06:14:16.261754","MIT",315,[35,36,14,37,38,39,40],"agent-skills","agents","foundry","mcp","sdk","skills",{"repoUrl":30,"stars":29,"forks":33,"topics":42,"description":43},[35,36,14,37,38,39,40],"Skills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Ftree\u002FHEAD\u002F.github\u002Fplugins\u002Fazure-sdk-java\u002Fskills\u002Fazure-ai-anomalydetector-java","---\nname: azure-ai-anomalydetector-java\ndescription: Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: com.azure:azure-ai-anomalydetector\n---\n\n# Azure AI Anomaly Detector SDK for Java\n\nBuild anomaly detection applications using the Azure AI Anomaly Detector SDK for Java.\n\n## Installation\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>com.azure\u003C\u002FgroupId>\n  \u003CartifactId>azure-ai-anomalydetector\u003C\u002FartifactId>\n  \u003Cversion>3.0.0-beta.6\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n## Client Creation\n\n### Sync and Async Clients\n\n```java\nimport com.azure.ai.anomalydetector.AnomalyDetectorClientBuilder;\nimport com.azure.ai.anomalydetector.MultivariateClient;\nimport com.azure.ai.anomalydetector.UnivariateClient;\nimport com.azure.core.credential.AzureKeyCredential;\n\nString endpoint = System.getenv(\"AZURE_ANOMALY_DETECTOR_ENDPOINT\");\nString key = System.getenv(\"AZURE_ANOMALY_DETECTOR_API_KEY\");\n\n\u002F\u002F Multivariate client for multiple correlated signals\nMultivariateClient multivariateClient = new AnomalyDetectorClientBuilder()\n    .credential(new AzureKeyCredential(key))\n    .endpoint(endpoint)\n    .buildMultivariateClient();\n\n\u002F\u002F Univariate client for single variable analysis\nUnivariateClient univariateClient = new AnomalyDetectorClientBuilder()\n    .credential(new AzureKeyCredential(key))\n    .endpoint(endpoint)\n    .buildUnivariateClient();\n```\n\n### With DefaultAzureCredential\n\n```java\nimport com.azure.core.credential.TokenCredential;\nimport com.azure.identity.AzureIdentityEnvVars;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\nimport com.azure.identity.ManagedIdentityCredentialBuilder;\n\nTokenCredential credential = new DefaultAzureCredentialBuilder()\n    .requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)\n    .build();\n\u002F\u002F Or use a specific credential directly in production:\n\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fjava\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-java-stable#credential-classes\n\u002F\u002F TokenCredential credential = new ManagedIdentityCredentialBuilder().build();\n\nMultivariateClient client = new AnomalyDetectorClientBuilder()\n    .credential(credential)\n    .endpoint(endpoint)\n    .buildMultivariateClient();\n```\n\n## Key Concepts\n\n### Univariate Anomaly Detection\n- **Batch Detection**: Analyze entire time series at once\n- **Streaming Detection**: Real-time detection on latest data point\n- **Change Point Detection**: Detect trend changes in time series\n\n### Multivariate Anomaly Detection\n- Detect anomalies across 300+ correlated signals\n- Uses Graph Attention Network for inter-correlations\n- Three-step process: Train → Inference → Results\n\n## Core Patterns\n\n### Univariate Batch Detection\n\n```java\nimport com.azure.ai.anomalydetector.models.*;\nimport java.time.OffsetDateTime;\nimport java.util.List;\n\nList\u003CTimeSeriesPoint> series = List.of(\n    new TimeSeriesPoint(OffsetDateTime.parse(\"2023-01-01T00:00:00Z\"), 1.0),\n    new TimeSeriesPoint(OffsetDateTime.parse(\"2023-01-02T00:00:00Z\"), 2.5),\n    \u002F\u002F ... more data points (minimum 12 points required)\n);\n\nUnivariateDetectionOptions options = new UnivariateDetectionOptions(series)\n    .setGranularity(TimeGranularity.DAILY)\n    .setSensitivity(95);\n\nUnivariateEntireDetectionResult result = univariateClient.detectUnivariateEntireSeries(options);\n\n\u002F\u002F Check for anomalies\nfor (int i = 0; i \u003C result.getIsAnomaly().size(); i++) {\n    if (result.getIsAnomaly().get(i)) {\n        System.out.printf(\"Anomaly detected at index %d with value %.2f%n\",\n            i, series.get(i).getValue());\n    }\n}\n```\n\n### Univariate Last Point Detection (Streaming)\n\n```java\nUnivariateLastDetectionResult lastResult = univariateClient.detectUnivariateLastPoint(options);\n\nif (lastResult.isAnomaly()) {\n    System.out.println(\"Latest point is an anomaly!\");\n    System.out.printf(\"Expected: %.2f, Upper: %.2f, Lower: %.2f%n\",\n        lastResult.getExpectedValue(),\n        lastResult.getUpperMargin(),\n        lastResult.getLowerMargin());\n}\n```\n\n### Change Point Detection\n\n```java\nUnivariateChangePointDetectionOptions changeOptions = \n    new UnivariateChangePointDetectionOptions(series, TimeGranularity.DAILY);\n\nUnivariateChangePointDetectionResult changeResult = \n    univariateClient.detectUnivariateChangePoint(changeOptions);\n\nfor (int i = 0; i \u003C changeResult.getIsChangePoint().size(); i++) {\n    if (changeResult.getIsChangePoint().get(i)) {\n        System.out.printf(\"Change point at index %d with confidence %.2f%n\",\n            i, changeResult.getConfidenceScores().get(i));\n    }\n}\n```\n\n### Multivariate Model Training\n\n```java\nimport com.azure.ai.anomalydetector.models.*;\nimport com.azure.core.util.polling.SyncPoller;\n\n\u002F\u002F Prepare training request with blob storage data\nModelInfo modelInfo = new ModelInfo()\n    .setDataSource(\"https:\u002F\u002Fstorage.blob.core.windows.net\u002Fcontainer\u002Fdata.zip?sasToken\")\n    .setStartTime(OffsetDateTime.parse(\"2023-01-01T00:00:00Z\"))\n    .setEndTime(OffsetDateTime.parse(\"2023-06-01T00:00:00Z\"))\n    .setSlidingWindow(200)\n    .setDisplayName(\"MyMultivariateModel\");\n\n\u002F\u002F Train model (long-running operation)\nAnomalyDetectionModel trainedModel = multivariateClient.trainMultivariateModel(modelInfo);\n\nString modelId = trainedModel.getModelId();\nSystem.out.println(\"Model ID: \" + modelId);\n\n\u002F\u002F Check training status\nAnomalyDetectionModel model = multivariateClient.getMultivariateModel(modelId);\nSystem.out.println(\"Status: \" + model.getModelInfo().getStatus());\n```\n\n### Multivariate Batch Inference\n\n```java\nMultivariateBatchDetectionOptions detectionOptions = new MultivariateBatchDetectionOptions()\n    .setDataSource(\"https:\u002F\u002Fstorage.blob.core.windows.net\u002Fcontainer\u002Finference-data.zip?sasToken\")\n    .setStartTime(OffsetDateTime.parse(\"2023-07-01T00:00:00Z\"))\n    .setEndTime(OffsetDateTime.parse(\"2023-07-31T00:00:00Z\"))\n    .setTopContributorCount(10);\n\nMultivariateDetectionResult detectionResult = \n    multivariateClient.detectMultivariateBatchAnomaly(modelId, detectionOptions);\n\nString resultId = detectionResult.getResultId();\n\n\u002F\u002F Poll for results\nMultivariateDetectionResult result = multivariateClient.getBatchDetectionResult(resultId);\nfor (AnomalyState state : result.getResults()) {\n    if (state.getValue().isAnomaly()) {\n        System.out.printf(\"Anomaly at %s, severity: %.2f%n\",\n            state.getTimestamp(),\n            state.getValue().getSeverity());\n    }\n}\n```\n\n### Multivariate Last Point Detection\n\n```java\nMultivariateLastDetectionOptions lastOptions = new MultivariateLastDetectionOptions()\n    .setVariables(List.of(\n        new VariableValues(\"variable1\", List.of(\"timestamp1\"), List.of(1.0f)),\n        new VariableValues(\"variable2\", List.of(\"timestamp1\"), List.of(2.5f))\n    ))\n    .setTopContributorCount(5);\n\nMultivariateLastDetectionResult lastResult = \n    multivariateClient.detectMultivariateLastAnomaly(modelId, lastOptions);\n\nif (lastResult.getValue().isAnomaly()) {\n    System.out.println(\"Anomaly detected!\");\n    \u002F\u002F Check contributing variables\n    for (AnomalyContributor contributor : lastResult.getValue().getInterpretation()) {\n        System.out.printf(\"Variable: %s, Contribution: %.2f%n\",\n            contributor.getVariable(),\n            contributor.getContributionScore());\n    }\n}\n```\n\n### Model Management\n\n```java\n\u002F\u002F List all models\nPagedIterable\u003CAnomalyDetectionModel> models = multivariateClient.listMultivariateModels();\nfor (AnomalyDetectionModel m : models) {\n    System.out.printf(\"Model: %s, Status: %s%n\",\n        m.getModelId(),\n        m.getModelInfo().getStatus());\n}\n\n\u002F\u002F Delete a model\nmultivariateClient.deleteMultivariateModel(modelId);\n```\n\n## Error Handling\n\n```java\nimport com.azure.core.exception.HttpResponseException;\n\ntry {\n    univariateClient.detectUnivariateEntireSeries(options);\n} catch (HttpResponseException e) {\n    System.out.println(\"Status code: \" + e.getResponse().getStatusCode());\n    System.out.println(\"Error: \" + e.getMessage());\n}\n```\n\n## Environment Variables\n\n```bash\nAZURE_ANOMALY_DETECTOR_ENDPOINT=https:\u002F\u002F\u003Cresource>.cognitiveservices.azure.com\u002F # Required for all auth methods\nAZURE_ANOMALY_DETECTOR_API_KEY=\u003Cyour-api-key> # Only required for AzureKeyCredential auth\nAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production\n```\n\n## Best Practices\n\n1. **Minimum Data Points**: Univariate requires at least 12 points; more data improves accuracy\n2. **Granularity Alignment**: Match `TimeGranularity` to your actual data frequency\n3. **Sensitivity Tuning**: Higher values (0-99) detect more anomalies\n4. **Multivariate Training**: Use 200-1000 sliding window based on pattern complexity\n5. **Error Handling**: Always handle `HttpResponseException` for API errors\n\n## Trigger Phrases\n\n- \"anomaly detection Java\"\n- \"detect anomalies time series\"\n- \"multivariate anomaly Java\"\n- \"univariate anomaly detection\"\n- \"streaming anomaly detection\"\n- \"change point detection\"\n- \"Azure AI Anomaly Detector\"\n",{"data":47,"body":51},{"name":4,"description":6,"license":32,"metadata":48},{"author":9,"version":49,"package":50},"1.0.0","com.azure:azure-ai-anomalydetector",{"type":52,"children":53},"root",[54,63,69,76,135,141,148,319,325,456,462,468,504,510,528,534,540,731,737,814,819,918,924,1086,1092,1254,1260,1415,1421,1506,1512,1581,1587,1692,1698,1767,1773,1811],{"type":55,"tag":56,"props":57,"children":59},"element","h1",{"id":58},"azure-ai-anomaly-detector-sdk-for-java",[60],{"type":61,"value":62},"text","Azure AI Anomaly Detector SDK for Java",{"type":55,"tag":64,"props":65,"children":66},"p",{},[67],{"type":61,"value":68},"Build anomaly detection applications using the Azure AI Anomaly Detector SDK for Java.",{"type":55,"tag":70,"props":71,"children":73},"h2",{"id":72},"installation",[74],{"type":61,"value":75},"Installation",{"type":55,"tag":77,"props":78,"children":83},"pre",{"className":79,"code":80,"language":81,"meta":82,"style":82},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cdependency>\n  \u003CgroupId>com.azure\u003C\u002FgroupId>\n  \u003CartifactId>azure-ai-anomalydetector\u003C\u002FartifactId>\n  \u003Cversion>3.0.0-beta.6\u003C\u002Fversion>\n\u003C\u002Fdependency>\n","xml","",[84],{"type":55,"tag":85,"props":86,"children":87},"code",{"__ignoreMap":82},[88,99,108,117,126],{"type":55,"tag":89,"props":90,"children":93},"span",{"class":91,"line":92},"line",1,[94],{"type":55,"tag":89,"props":95,"children":96},{},[97],{"type":61,"value":98},"\u003Cdependency>\n",{"type":55,"tag":89,"props":100,"children":102},{"class":91,"line":101},2,[103],{"type":55,"tag":89,"props":104,"children":105},{},[106],{"type":61,"value":107},"  \u003CgroupId>com.azure\u003C\u002FgroupId>\n",{"type":55,"tag":89,"props":109,"children":111},{"class":91,"line":110},3,[112],{"type":55,"tag":89,"props":113,"children":114},{},[115],{"type":61,"value":116},"  \u003CartifactId>azure-ai-anomalydetector\u003C\u002FartifactId>\n",{"type":55,"tag":89,"props":118,"children":120},{"class":91,"line":119},4,[121],{"type":55,"tag":89,"props":122,"children":123},{},[124],{"type":61,"value":125},"  \u003Cversion>3.0.0-beta.6\u003C\u002Fversion>\n",{"type":55,"tag":89,"props":127,"children":129},{"class":91,"line":128},5,[130],{"type":55,"tag":89,"props":131,"children":132},{},[133],{"type":61,"value":134},"\u003C\u002Fdependency>\n",{"type":55,"tag":70,"props":136,"children":138},{"id":137},"client-creation",[139],{"type":61,"value":140},"Client Creation",{"type":55,"tag":142,"props":143,"children":145},"h3",{"id":144},"sync-and-async-clients",[146],{"type":61,"value":147},"Sync and Async Clients",{"type":55,"tag":77,"props":149,"children":152},{"className":150,"code":151,"language":18,"meta":82,"style":82},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import com.azure.ai.anomalydetector.AnomalyDetectorClientBuilder;\nimport com.azure.ai.anomalydetector.MultivariateClient;\nimport com.azure.ai.anomalydetector.UnivariateClient;\nimport com.azure.core.credential.AzureKeyCredential;\n\nString endpoint = System.getenv(\"AZURE_ANOMALY_DETECTOR_ENDPOINT\");\nString key = System.getenv(\"AZURE_ANOMALY_DETECTOR_API_KEY\");\n\n\u002F\u002F Multivariate client for multiple correlated signals\nMultivariateClient multivariateClient = new AnomalyDetectorClientBuilder()\n    .credential(new AzureKeyCredential(key))\n    .endpoint(endpoint)\n    .buildMultivariateClient();\n\n\u002F\u002F Univariate client for single variable analysis\nUnivariateClient univariateClient = new AnomalyDetectorClientBuilder()\n    .credential(new AzureKeyCredential(key))\n    .endpoint(endpoint)\n    .buildUnivariateClient();\n",[153],{"type":55,"tag":85,"props":154,"children":155},{"__ignoreMap":82},[156,164,172,180,188,197,206,215,223,232,241,250,259,268,276,285,294,302,310],{"type":55,"tag":89,"props":157,"children":158},{"class":91,"line":92},[159],{"type":55,"tag":89,"props":160,"children":161},{},[162],{"type":61,"value":163},"import com.azure.ai.anomalydetector.AnomalyDetectorClientBuilder;\n",{"type":55,"tag":89,"props":165,"children":166},{"class":91,"line":101},[167],{"type":55,"tag":89,"props":168,"children":169},{},[170],{"type":61,"value":171},"import com.azure.ai.anomalydetector.MultivariateClient;\n",{"type":55,"tag":89,"props":173,"children":174},{"class":91,"line":110},[175],{"type":55,"tag":89,"props":176,"children":177},{},[178],{"type":61,"value":179},"import com.azure.ai.anomalydetector.UnivariateClient;\n",{"type":55,"tag":89,"props":181,"children":182},{"class":91,"line":119},[183],{"type":55,"tag":89,"props":184,"children":185},{},[186],{"type":61,"value":187},"import com.azure.core.credential.AzureKeyCredential;\n",{"type":55,"tag":89,"props":189,"children":190},{"class":91,"line":128},[191],{"type":55,"tag":89,"props":192,"children":194},{"emptyLinePlaceholder":193},true,[195],{"type":61,"value":196},"\n",{"type":55,"tag":89,"props":198,"children":200},{"class":91,"line":199},6,[201],{"type":55,"tag":89,"props":202,"children":203},{},[204],{"type":61,"value":205},"String endpoint = System.getenv(\"AZURE_ANOMALY_DETECTOR_ENDPOINT\");\n",{"type":55,"tag":89,"props":207,"children":209},{"class":91,"line":208},7,[210],{"type":55,"tag":89,"props":211,"children":212},{},[213],{"type":61,"value":214},"String key = System.getenv(\"AZURE_ANOMALY_DETECTOR_API_KEY\");\n",{"type":55,"tag":89,"props":216,"children":218},{"class":91,"line":217},8,[219],{"type":55,"tag":89,"props":220,"children":221},{"emptyLinePlaceholder":193},[222],{"type":61,"value":196},{"type":55,"tag":89,"props":224,"children":226},{"class":91,"line":225},9,[227],{"type":55,"tag":89,"props":228,"children":229},{},[230],{"type":61,"value":231},"\u002F\u002F Multivariate client for multiple correlated signals\n",{"type":55,"tag":89,"props":233,"children":235},{"class":91,"line":234},10,[236],{"type":55,"tag":89,"props":237,"children":238},{},[239],{"type":61,"value":240},"MultivariateClient multivariateClient = new AnomalyDetectorClientBuilder()\n",{"type":55,"tag":89,"props":242,"children":244},{"class":91,"line":243},11,[245],{"type":55,"tag":89,"props":246,"children":247},{},[248],{"type":61,"value":249},"    .credential(new AzureKeyCredential(key))\n",{"type":55,"tag":89,"props":251,"children":253},{"class":91,"line":252},12,[254],{"type":55,"tag":89,"props":255,"children":256},{},[257],{"type":61,"value":258},"    .endpoint(endpoint)\n",{"type":55,"tag":89,"props":260,"children":262},{"class":91,"line":261},13,[263],{"type":55,"tag":89,"props":264,"children":265},{},[266],{"type":61,"value":267},"    .buildMultivariateClient();\n",{"type":55,"tag":89,"props":269,"children":271},{"class":91,"line":270},14,[272],{"type":55,"tag":89,"props":273,"children":274},{"emptyLinePlaceholder":193},[275],{"type":61,"value":196},{"type":55,"tag":89,"props":277,"children":279},{"class":91,"line":278},15,[280],{"type":55,"tag":89,"props":281,"children":282},{},[283],{"type":61,"value":284},"\u002F\u002F Univariate client for single variable analysis\n",{"type":55,"tag":89,"props":286,"children":288},{"class":91,"line":287},16,[289],{"type":55,"tag":89,"props":290,"children":291},{},[292],{"type":61,"value":293},"UnivariateClient univariateClient = new AnomalyDetectorClientBuilder()\n",{"type":55,"tag":89,"props":295,"children":297},{"class":91,"line":296},17,[298],{"type":55,"tag":89,"props":299,"children":300},{},[301],{"type":61,"value":249},{"type":55,"tag":89,"props":303,"children":305},{"class":91,"line":304},18,[306],{"type":55,"tag":89,"props":307,"children":308},{},[309],{"type":61,"value":258},{"type":55,"tag":89,"props":311,"children":313},{"class":91,"line":312},19,[314],{"type":55,"tag":89,"props":315,"children":316},{},[317],{"type":61,"value":318},"    .buildUnivariateClient();\n",{"type":55,"tag":142,"props":320,"children":322},{"id":321},"with-defaultazurecredential",[323],{"type":61,"value":324},"With DefaultAzureCredential",{"type":55,"tag":77,"props":326,"children":328},{"className":150,"code":327,"language":18,"meta":82,"style":82},"import com.azure.core.credential.TokenCredential;\nimport com.azure.identity.AzureIdentityEnvVars;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\nimport com.azure.identity.ManagedIdentityCredentialBuilder;\n\nTokenCredential credential = new DefaultAzureCredentialBuilder()\n    .requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)\n    .build();\n\u002F\u002F Or use a specific credential directly in production:\n\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fjava\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-java-stable#credential-classes\n\u002F\u002F TokenCredential credential = new ManagedIdentityCredentialBuilder().build();\n\nMultivariateClient client = new AnomalyDetectorClientBuilder()\n    .credential(credential)\n    .endpoint(endpoint)\n    .buildMultivariateClient();\n",[329],{"type":55,"tag":85,"props":330,"children":331},{"__ignoreMap":82},[332,340,348,356,364,371,379,387,395,403,411,419,426,434,442,449],{"type":55,"tag":89,"props":333,"children":334},{"class":91,"line":92},[335],{"type":55,"tag":89,"props":336,"children":337},{},[338],{"type":61,"value":339},"import com.azure.core.credential.TokenCredential;\n",{"type":55,"tag":89,"props":341,"children":342},{"class":91,"line":101},[343],{"type":55,"tag":89,"props":344,"children":345},{},[346],{"type":61,"value":347},"import com.azure.identity.AzureIdentityEnvVars;\n",{"type":55,"tag":89,"props":349,"children":350},{"class":91,"line":110},[351],{"type":55,"tag":89,"props":352,"children":353},{},[354],{"type":61,"value":355},"import com.azure.identity.DefaultAzureCredentialBuilder;\n",{"type":55,"tag":89,"props":357,"children":358},{"class":91,"line":119},[359],{"type":55,"tag":89,"props":360,"children":361},{},[362],{"type":61,"value":363},"import com.azure.identity.ManagedIdentityCredentialBuilder;\n",{"type":55,"tag":89,"props":365,"children":366},{"class":91,"line":128},[367],{"type":55,"tag":89,"props":368,"children":369},{"emptyLinePlaceholder":193},[370],{"type":61,"value":196},{"type":55,"tag":89,"props":372,"children":373},{"class":91,"line":199},[374],{"type":55,"tag":89,"props":375,"children":376},{},[377],{"type":61,"value":378},"TokenCredential credential = new DefaultAzureCredentialBuilder()\n",{"type":55,"tag":89,"props":380,"children":381},{"class":91,"line":208},[382],{"type":55,"tag":89,"props":383,"children":384},{},[385],{"type":61,"value":386},"    .requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)\n",{"type":55,"tag":89,"props":388,"children":389},{"class":91,"line":217},[390],{"type":55,"tag":89,"props":391,"children":392},{},[393],{"type":61,"value":394},"    .build();\n",{"type":55,"tag":89,"props":396,"children":397},{"class":91,"line":225},[398],{"type":55,"tag":89,"props":399,"children":400},{},[401],{"type":61,"value":402},"\u002F\u002F Or use a specific credential directly in production:\n",{"type":55,"tag":89,"props":404,"children":405},{"class":91,"line":234},[406],{"type":55,"tag":89,"props":407,"children":408},{},[409],{"type":61,"value":410},"\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fjava\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-java-stable#credential-classes\n",{"type":55,"tag":89,"props":412,"children":413},{"class":91,"line":243},[414],{"type":55,"tag":89,"props":415,"children":416},{},[417],{"type":61,"value":418},"\u002F\u002F TokenCredential credential = new ManagedIdentityCredentialBuilder().build();\n",{"type":55,"tag":89,"props":420,"children":421},{"class":91,"line":252},[422],{"type":55,"tag":89,"props":423,"children":424},{"emptyLinePlaceholder":193},[425],{"type":61,"value":196},{"type":55,"tag":89,"props":427,"children":428},{"class":91,"line":261},[429],{"type":55,"tag":89,"props":430,"children":431},{},[432],{"type":61,"value":433},"MultivariateClient client = new AnomalyDetectorClientBuilder()\n",{"type":55,"tag":89,"props":435,"children":436},{"class":91,"line":270},[437],{"type":55,"tag":89,"props":438,"children":439},{},[440],{"type":61,"value":441},"    .credential(credential)\n",{"type":55,"tag":89,"props":443,"children":444},{"class":91,"line":278},[445],{"type":55,"tag":89,"props":446,"children":447},{},[448],{"type":61,"value":258},{"type":55,"tag":89,"props":450,"children":451},{"class":91,"line":287},[452],{"type":55,"tag":89,"props":453,"children":454},{},[455],{"type":61,"value":267},{"type":55,"tag":70,"props":457,"children":459},{"id":458},"key-concepts",[460],{"type":61,"value":461},"Key Concepts",{"type":55,"tag":142,"props":463,"children":465},{"id":464},"univariate-anomaly-detection",[466],{"type":61,"value":467},"Univariate Anomaly Detection",{"type":55,"tag":469,"props":470,"children":471},"ul",{},[472,484,494],{"type":55,"tag":473,"props":474,"children":475},"li",{},[476,482],{"type":55,"tag":477,"props":478,"children":479},"strong",{},[480],{"type":61,"value":481},"Batch Detection",{"type":61,"value":483},": Analyze entire time series at once",{"type":55,"tag":473,"props":485,"children":486},{},[487,492],{"type":55,"tag":477,"props":488,"children":489},{},[490],{"type":61,"value":491},"Streaming Detection",{"type":61,"value":493},": Real-time detection on latest data point",{"type":55,"tag":473,"props":495,"children":496},{},[497,502],{"type":55,"tag":477,"props":498,"children":499},{},[500],{"type":61,"value":501},"Change Point Detection",{"type":61,"value":503},": Detect trend changes in time series",{"type":55,"tag":142,"props":505,"children":507},{"id":506},"multivariate-anomaly-detection",[508],{"type":61,"value":509},"Multivariate Anomaly Detection",{"type":55,"tag":469,"props":511,"children":512},{},[513,518,523],{"type":55,"tag":473,"props":514,"children":515},{},[516],{"type":61,"value":517},"Detect anomalies across 300+ correlated signals",{"type":55,"tag":473,"props":519,"children":520},{},[521],{"type":61,"value":522},"Uses Graph Attention Network for inter-correlations",{"type":55,"tag":473,"props":524,"children":525},{},[526],{"type":61,"value":527},"Three-step process: Train → Inference → Results",{"type":55,"tag":70,"props":529,"children":531},{"id":530},"core-patterns",[532],{"type":61,"value":533},"Core Patterns",{"type":55,"tag":142,"props":535,"children":537},{"id":536},"univariate-batch-detection",[538],{"type":61,"value":539},"Univariate Batch Detection",{"type":55,"tag":77,"props":541,"children":543},{"className":150,"code":542,"language":18,"meta":82,"style":82},"import com.azure.ai.anomalydetector.models.*;\nimport java.time.OffsetDateTime;\nimport java.util.List;\n\nList\u003CTimeSeriesPoint> series = List.of(\n    new TimeSeriesPoint(OffsetDateTime.parse(\"2023-01-01T00:00:00Z\"), 1.0),\n    new TimeSeriesPoint(OffsetDateTime.parse(\"2023-01-02T00:00:00Z\"), 2.5),\n    \u002F\u002F ... more data points (minimum 12 points required)\n);\n\nUnivariateDetectionOptions options = new UnivariateDetectionOptions(series)\n    .setGranularity(TimeGranularity.DAILY)\n    .setSensitivity(95);\n\nUnivariateEntireDetectionResult result = univariateClient.detectUnivariateEntireSeries(options);\n\n\u002F\u002F Check for anomalies\nfor (int i = 0; i \u003C result.getIsAnomaly().size(); i++) {\n    if (result.getIsAnomaly().get(i)) {\n        System.out.printf(\"Anomaly detected at index %d with value %.2f%n\",\n            i, series.get(i).getValue());\n    }\n}\n",[544],{"type":55,"tag":85,"props":545,"children":546},{"__ignoreMap":82},[547,555,563,571,578,586,594,602,610,618,625,633,641,649,656,664,671,679,687,695,704,713,722],{"type":55,"tag":89,"props":548,"children":549},{"class":91,"line":92},[550],{"type":55,"tag":89,"props":551,"children":552},{},[553],{"type":61,"value":554},"import com.azure.ai.anomalydetector.models.*;\n",{"type":55,"tag":89,"props":556,"children":557},{"class":91,"line":101},[558],{"type":55,"tag":89,"props":559,"children":560},{},[561],{"type":61,"value":562},"import java.time.OffsetDateTime;\n",{"type":55,"tag":89,"props":564,"children":565},{"class":91,"line":110},[566],{"type":55,"tag":89,"props":567,"children":568},{},[569],{"type":61,"value":570},"import java.util.List;\n",{"type":55,"tag":89,"props":572,"children":573},{"class":91,"line":119},[574],{"type":55,"tag":89,"props":575,"children":576},{"emptyLinePlaceholder":193},[577],{"type":61,"value":196},{"type":55,"tag":89,"props":579,"children":580},{"class":91,"line":128},[581],{"type":55,"tag":89,"props":582,"children":583},{},[584],{"type":61,"value":585},"List\u003CTimeSeriesPoint> series = List.of(\n",{"type":55,"tag":89,"props":587,"children":588},{"class":91,"line":199},[589],{"type":55,"tag":89,"props":590,"children":591},{},[592],{"type":61,"value":593},"    new TimeSeriesPoint(OffsetDateTime.parse(\"2023-01-01T00:00:00Z\"), 1.0),\n",{"type":55,"tag":89,"props":595,"children":596},{"class":91,"line":208},[597],{"type":55,"tag":89,"props":598,"children":599},{},[600],{"type":61,"value":601},"    new TimeSeriesPoint(OffsetDateTime.parse(\"2023-01-02T00:00:00Z\"), 2.5),\n",{"type":55,"tag":89,"props":603,"children":604},{"class":91,"line":217},[605],{"type":55,"tag":89,"props":606,"children":607},{},[608],{"type":61,"value":609},"    \u002F\u002F ... more data points (minimum 12 points required)\n",{"type":55,"tag":89,"props":611,"children":612},{"class":91,"line":225},[613],{"type":55,"tag":89,"props":614,"children":615},{},[616],{"type":61,"value":617},");\n",{"type":55,"tag":89,"props":619,"children":620},{"class":91,"line":234},[621],{"type":55,"tag":89,"props":622,"children":623},{"emptyLinePlaceholder":193},[624],{"type":61,"value":196},{"type":55,"tag":89,"props":626,"children":627},{"class":91,"line":243},[628],{"type":55,"tag":89,"props":629,"children":630},{},[631],{"type":61,"value":632},"UnivariateDetectionOptions options = new UnivariateDetectionOptions(series)\n",{"type":55,"tag":89,"props":634,"children":635},{"class":91,"line":252},[636],{"type":55,"tag":89,"props":637,"children":638},{},[639],{"type":61,"value":640},"    .setGranularity(TimeGranularity.DAILY)\n",{"type":55,"tag":89,"props":642,"children":643},{"class":91,"line":261},[644],{"type":55,"tag":89,"props":645,"children":646},{},[647],{"type":61,"value":648},"    .setSensitivity(95);\n",{"type":55,"tag":89,"props":650,"children":651},{"class":91,"line":270},[652],{"type":55,"tag":89,"props":653,"children":654},{"emptyLinePlaceholder":193},[655],{"type":61,"value":196},{"type":55,"tag":89,"props":657,"children":658},{"class":91,"line":278},[659],{"type":55,"tag":89,"props":660,"children":661},{},[662],{"type":61,"value":663},"UnivariateEntireDetectionResult result = univariateClient.detectUnivariateEntireSeries(options);\n",{"type":55,"tag":89,"props":665,"children":666},{"class":91,"line":287},[667],{"type":55,"tag":89,"props":668,"children":669},{"emptyLinePlaceholder":193},[670],{"type":61,"value":196},{"type":55,"tag":89,"props":672,"children":673},{"class":91,"line":296},[674],{"type":55,"tag":89,"props":675,"children":676},{},[677],{"type":61,"value":678},"\u002F\u002F Check for anomalies\n",{"type":55,"tag":89,"props":680,"children":681},{"class":91,"line":304},[682],{"type":55,"tag":89,"props":683,"children":684},{},[685],{"type":61,"value":686},"for (int i = 0; i \u003C result.getIsAnomaly().size(); i++) {\n",{"type":55,"tag":89,"props":688,"children":689},{"class":91,"line":312},[690],{"type":55,"tag":89,"props":691,"children":692},{},[693],{"type":61,"value":694},"    if (result.getIsAnomaly().get(i)) {\n",{"type":55,"tag":89,"props":696,"children":698},{"class":91,"line":697},20,[699],{"type":55,"tag":89,"props":700,"children":701},{},[702],{"type":61,"value":703},"        System.out.printf(\"Anomaly detected at index %d with value %.2f%n\",\n",{"type":55,"tag":89,"props":705,"children":707},{"class":91,"line":706},21,[708],{"type":55,"tag":89,"props":709,"children":710},{},[711],{"type":61,"value":712},"            i, series.get(i).getValue());\n",{"type":55,"tag":89,"props":714,"children":716},{"class":91,"line":715},22,[717],{"type":55,"tag":89,"props":718,"children":719},{},[720],{"type":61,"value":721},"    }\n",{"type":55,"tag":89,"props":723,"children":725},{"class":91,"line":724},23,[726],{"type":55,"tag":89,"props":727,"children":728},{},[729],{"type":61,"value":730},"}\n",{"type":55,"tag":142,"props":732,"children":734},{"id":733},"univariate-last-point-detection-streaming",[735],{"type":61,"value":736},"Univariate Last Point Detection (Streaming)",{"type":55,"tag":77,"props":738,"children":740},{"className":150,"code":739,"language":18,"meta":82,"style":82},"UnivariateLastDetectionResult lastResult = univariateClient.detectUnivariateLastPoint(options);\n\nif (lastResult.isAnomaly()) {\n    System.out.println(\"Latest point is an anomaly!\");\n    System.out.printf(\"Expected: %.2f, Upper: %.2f, Lower: %.2f%n\",\n        lastResult.getExpectedValue(),\n        lastResult.getUpperMargin(),\n        lastResult.getLowerMargin());\n}\n",[741],{"type":55,"tag":85,"props":742,"children":743},{"__ignoreMap":82},[744,752,759,767,775,783,791,799,807],{"type":55,"tag":89,"props":745,"children":746},{"class":91,"line":92},[747],{"type":55,"tag":89,"props":748,"children":749},{},[750],{"type":61,"value":751},"UnivariateLastDetectionResult lastResult = univariateClient.detectUnivariateLastPoint(options);\n",{"type":55,"tag":89,"props":753,"children":754},{"class":91,"line":101},[755],{"type":55,"tag":89,"props":756,"children":757},{"emptyLinePlaceholder":193},[758],{"type":61,"value":196},{"type":55,"tag":89,"props":760,"children":761},{"class":91,"line":110},[762],{"type":55,"tag":89,"props":763,"children":764},{},[765],{"type":61,"value":766},"if (lastResult.isAnomaly()) {\n",{"type":55,"tag":89,"props":768,"children":769},{"class":91,"line":119},[770],{"type":55,"tag":89,"props":771,"children":772},{},[773],{"type":61,"value":774},"    System.out.println(\"Latest point is an anomaly!\");\n",{"type":55,"tag":89,"props":776,"children":777},{"class":91,"line":128},[778],{"type":55,"tag":89,"props":779,"children":780},{},[781],{"type":61,"value":782},"    System.out.printf(\"Expected: %.2f, Upper: %.2f, Lower: %.2f%n\",\n",{"type":55,"tag":89,"props":784,"children":785},{"class":91,"line":199},[786],{"type":55,"tag":89,"props":787,"children":788},{},[789],{"type":61,"value":790},"        lastResult.getExpectedValue(),\n",{"type":55,"tag":89,"props":792,"children":793},{"class":91,"line":208},[794],{"type":55,"tag":89,"props":795,"children":796},{},[797],{"type":61,"value":798},"        lastResult.getUpperMargin(),\n",{"type":55,"tag":89,"props":800,"children":801},{"class":91,"line":217},[802],{"type":55,"tag":89,"props":803,"children":804},{},[805],{"type":61,"value":806},"        lastResult.getLowerMargin());\n",{"type":55,"tag":89,"props":808,"children":809},{"class":91,"line":225},[810],{"type":55,"tag":89,"props":811,"children":812},{},[813],{"type":61,"value":730},{"type":55,"tag":142,"props":815,"children":817},{"id":816},"change-point-detection",[818],{"type":61,"value":501},{"type":55,"tag":77,"props":820,"children":822},{"className":150,"code":821,"language":18,"meta":82,"style":82},"UnivariateChangePointDetectionOptions changeOptions = \n    new UnivariateChangePointDetectionOptions(series, TimeGranularity.DAILY);\n\nUnivariateChangePointDetectionResult changeResult = \n    univariateClient.detectUnivariateChangePoint(changeOptions);\n\nfor (int i = 0; i \u003C changeResult.getIsChangePoint().size(); i++) {\n    if (changeResult.getIsChangePoint().get(i)) {\n        System.out.printf(\"Change point at index %d with confidence %.2f%n\",\n            i, changeResult.getConfidenceScores().get(i));\n    }\n}\n",[823],{"type":55,"tag":85,"props":824,"children":825},{"__ignoreMap":82},[826,834,842,849,857,865,872,880,888,896,904,911],{"type":55,"tag":89,"props":827,"children":828},{"class":91,"line":92},[829],{"type":55,"tag":89,"props":830,"children":831},{},[832],{"type":61,"value":833},"UnivariateChangePointDetectionOptions changeOptions = \n",{"type":55,"tag":89,"props":835,"children":836},{"class":91,"line":101},[837],{"type":55,"tag":89,"props":838,"children":839},{},[840],{"type":61,"value":841},"    new UnivariateChangePointDetectionOptions(series, TimeGranularity.DAILY);\n",{"type":55,"tag":89,"props":843,"children":844},{"class":91,"line":110},[845],{"type":55,"tag":89,"props":846,"children":847},{"emptyLinePlaceholder":193},[848],{"type":61,"value":196},{"type":55,"tag":89,"props":850,"children":851},{"class":91,"line":119},[852],{"type":55,"tag":89,"props":853,"children":854},{},[855],{"type":61,"value":856},"UnivariateChangePointDetectionResult changeResult = \n",{"type":55,"tag":89,"props":858,"children":859},{"class":91,"line":128},[860],{"type":55,"tag":89,"props":861,"children":862},{},[863],{"type":61,"value":864},"    univariateClient.detectUnivariateChangePoint(changeOptions);\n",{"type":55,"tag":89,"props":866,"children":867},{"class":91,"line":199},[868],{"type":55,"tag":89,"props":869,"children":870},{"emptyLinePlaceholder":193},[871],{"type":61,"value":196},{"type":55,"tag":89,"props":873,"children":874},{"class":91,"line":208},[875],{"type":55,"tag":89,"props":876,"children":877},{},[878],{"type":61,"value":879},"for (int i = 0; i \u003C changeResult.getIsChangePoint().size(); i++) {\n",{"type":55,"tag":89,"props":881,"children":882},{"class":91,"line":217},[883],{"type":55,"tag":89,"props":884,"children":885},{},[886],{"type":61,"value":887},"    if (changeResult.getIsChangePoint().get(i)) {\n",{"type":55,"tag":89,"props":889,"children":890},{"class":91,"line":225},[891],{"type":55,"tag":89,"props":892,"children":893},{},[894],{"type":61,"value":895},"        System.out.printf(\"Change point at index %d with confidence %.2f%n\",\n",{"type":55,"tag":89,"props":897,"children":898},{"class":91,"line":234},[899],{"type":55,"tag":89,"props":900,"children":901},{},[902],{"type":61,"value":903},"            i, changeResult.getConfidenceScores().get(i));\n",{"type":55,"tag":89,"props":905,"children":906},{"class":91,"line":243},[907],{"type":55,"tag":89,"props":908,"children":909},{},[910],{"type":61,"value":721},{"type":55,"tag":89,"props":912,"children":913},{"class":91,"line":252},[914],{"type":55,"tag":89,"props":915,"children":916},{},[917],{"type":61,"value":730},{"type":55,"tag":142,"props":919,"children":921},{"id":920},"multivariate-model-training",[922],{"type":61,"value":923},"Multivariate Model Training",{"type":55,"tag":77,"props":925,"children":927},{"className":150,"code":926,"language":18,"meta":82,"style":82},"import com.azure.ai.anomalydetector.models.*;\nimport com.azure.core.util.polling.SyncPoller;\n\n\u002F\u002F Prepare training request with blob storage data\nModelInfo modelInfo = new ModelInfo()\n    .setDataSource(\"https:\u002F\u002Fstorage.blob.core.windows.net\u002Fcontainer\u002Fdata.zip?sasToken\")\n    .setStartTime(OffsetDateTime.parse(\"2023-01-01T00:00:00Z\"))\n    .setEndTime(OffsetDateTime.parse(\"2023-06-01T00:00:00Z\"))\n    .setSlidingWindow(200)\n    .setDisplayName(\"MyMultivariateModel\");\n\n\u002F\u002F Train model (long-running operation)\nAnomalyDetectionModel trainedModel = multivariateClient.trainMultivariateModel(modelInfo);\n\nString modelId = trainedModel.getModelId();\nSystem.out.println(\"Model ID: \" + modelId);\n\n\u002F\u002F Check training status\nAnomalyDetectionModel model = multivariateClient.getMultivariateModel(modelId);\nSystem.out.println(\"Status: \" + model.getModelInfo().getStatus());\n",[928],{"type":55,"tag":85,"props":929,"children":930},{"__ignoreMap":82},[931,938,946,953,961,969,977,985,993,1001,1009,1016,1024,1032,1039,1047,1055,1062,1070,1078],{"type":55,"tag":89,"props":932,"children":933},{"class":91,"line":92},[934],{"type":55,"tag":89,"props":935,"children":936},{},[937],{"type":61,"value":554},{"type":55,"tag":89,"props":939,"children":940},{"class":91,"line":101},[941],{"type":55,"tag":89,"props":942,"children":943},{},[944],{"type":61,"value":945},"import com.azure.core.util.polling.SyncPoller;\n",{"type":55,"tag":89,"props":947,"children":948},{"class":91,"line":110},[949],{"type":55,"tag":89,"props":950,"children":951},{"emptyLinePlaceholder":193},[952],{"type":61,"value":196},{"type":55,"tag":89,"props":954,"children":955},{"class":91,"line":119},[956],{"type":55,"tag":89,"props":957,"children":958},{},[959],{"type":61,"value":960},"\u002F\u002F Prepare training request with blob storage data\n",{"type":55,"tag":89,"props":962,"children":963},{"class":91,"line":128},[964],{"type":55,"tag":89,"props":965,"children":966},{},[967],{"type":61,"value":968},"ModelInfo modelInfo = new ModelInfo()\n",{"type":55,"tag":89,"props":970,"children":971},{"class":91,"line":199},[972],{"type":55,"tag":89,"props":973,"children":974},{},[975],{"type":61,"value":976},"    .setDataSource(\"https:\u002F\u002Fstorage.blob.core.windows.net\u002Fcontainer\u002Fdata.zip?sasToken\")\n",{"type":55,"tag":89,"props":978,"children":979},{"class":91,"line":208},[980],{"type":55,"tag":89,"props":981,"children":982},{},[983],{"type":61,"value":984},"    .setStartTime(OffsetDateTime.parse(\"2023-01-01T00:00:00Z\"))\n",{"type":55,"tag":89,"props":986,"children":987},{"class":91,"line":217},[988],{"type":55,"tag":89,"props":989,"children":990},{},[991],{"type":61,"value":992},"    .setEndTime(OffsetDateTime.parse(\"2023-06-01T00:00:00Z\"))\n",{"type":55,"tag":89,"props":994,"children":995},{"class":91,"line":225},[996],{"type":55,"tag":89,"props":997,"children":998},{},[999],{"type":61,"value":1000},"    .setSlidingWindow(200)\n",{"type":55,"tag":89,"props":1002,"children":1003},{"class":91,"line":234},[1004],{"type":55,"tag":89,"props":1005,"children":1006},{},[1007],{"type":61,"value":1008},"    .setDisplayName(\"MyMultivariateModel\");\n",{"type":55,"tag":89,"props":1010,"children":1011},{"class":91,"line":243},[1012],{"type":55,"tag":89,"props":1013,"children":1014},{"emptyLinePlaceholder":193},[1015],{"type":61,"value":196},{"type":55,"tag":89,"props":1017,"children":1018},{"class":91,"line":252},[1019],{"type":55,"tag":89,"props":1020,"children":1021},{},[1022],{"type":61,"value":1023},"\u002F\u002F Train model (long-running operation)\n",{"type":55,"tag":89,"props":1025,"children":1026},{"class":91,"line":261},[1027],{"type":55,"tag":89,"props":1028,"children":1029},{},[1030],{"type":61,"value":1031},"AnomalyDetectionModel trainedModel = multivariateClient.trainMultivariateModel(modelInfo);\n",{"type":55,"tag":89,"props":1033,"children":1034},{"class":91,"line":270},[1035],{"type":55,"tag":89,"props":1036,"children":1037},{"emptyLinePlaceholder":193},[1038],{"type":61,"value":196},{"type":55,"tag":89,"props":1040,"children":1041},{"class":91,"line":278},[1042],{"type":55,"tag":89,"props":1043,"children":1044},{},[1045],{"type":61,"value":1046},"String modelId = trainedModel.getModelId();\n",{"type":55,"tag":89,"props":1048,"children":1049},{"class":91,"line":287},[1050],{"type":55,"tag":89,"props":1051,"children":1052},{},[1053],{"type":61,"value":1054},"System.out.println(\"Model ID: \" + modelId);\n",{"type":55,"tag":89,"props":1056,"children":1057},{"class":91,"line":296},[1058],{"type":55,"tag":89,"props":1059,"children":1060},{"emptyLinePlaceholder":193},[1061],{"type":61,"value":196},{"type":55,"tag":89,"props":1063,"children":1064},{"class":91,"line":304},[1065],{"type":55,"tag":89,"props":1066,"children":1067},{},[1068],{"type":61,"value":1069},"\u002F\u002F Check training status\n",{"type":55,"tag":89,"props":1071,"children":1072},{"class":91,"line":312},[1073],{"type":55,"tag":89,"props":1074,"children":1075},{},[1076],{"type":61,"value":1077},"AnomalyDetectionModel model = multivariateClient.getMultivariateModel(modelId);\n",{"type":55,"tag":89,"props":1079,"children":1080},{"class":91,"line":697},[1081],{"type":55,"tag":89,"props":1082,"children":1083},{},[1084],{"type":61,"value":1085},"System.out.println(\"Status: \" + model.getModelInfo().getStatus());\n",{"type":55,"tag":142,"props":1087,"children":1089},{"id":1088},"multivariate-batch-inference",[1090],{"type":61,"value":1091},"Multivariate Batch Inference",{"type":55,"tag":77,"props":1093,"children":1095},{"className":150,"code":1094,"language":18,"meta":82,"style":82},"MultivariateBatchDetectionOptions detectionOptions = new MultivariateBatchDetectionOptions()\n    .setDataSource(\"https:\u002F\u002Fstorage.blob.core.windows.net\u002Fcontainer\u002Finference-data.zip?sasToken\")\n    .setStartTime(OffsetDateTime.parse(\"2023-07-01T00:00:00Z\"))\n    .setEndTime(OffsetDateTime.parse(\"2023-07-31T00:00:00Z\"))\n    .setTopContributorCount(10);\n\nMultivariateDetectionResult detectionResult = \n    multivariateClient.detectMultivariateBatchAnomaly(modelId, detectionOptions);\n\nString resultId = detectionResult.getResultId();\n\n\u002F\u002F Poll for results\nMultivariateDetectionResult result = multivariateClient.getBatchDetectionResult(resultId);\nfor (AnomalyState state : result.getResults()) {\n    if (state.getValue().isAnomaly()) {\n        System.out.printf(\"Anomaly at %s, severity: %.2f%n\",\n            state.getTimestamp(),\n            state.getValue().getSeverity());\n    }\n}\n",[1096],{"type":55,"tag":85,"props":1097,"children":1098},{"__ignoreMap":82},[1099,1107,1115,1123,1131,1139,1146,1154,1162,1169,1177,1184,1192,1200,1208,1216,1224,1232,1240,1247],{"type":55,"tag":89,"props":1100,"children":1101},{"class":91,"line":92},[1102],{"type":55,"tag":89,"props":1103,"children":1104},{},[1105],{"type":61,"value":1106},"MultivariateBatchDetectionOptions detectionOptions = new MultivariateBatchDetectionOptions()\n",{"type":55,"tag":89,"props":1108,"children":1109},{"class":91,"line":101},[1110],{"type":55,"tag":89,"props":1111,"children":1112},{},[1113],{"type":61,"value":1114},"    .setDataSource(\"https:\u002F\u002Fstorage.blob.core.windows.net\u002Fcontainer\u002Finference-data.zip?sasToken\")\n",{"type":55,"tag":89,"props":1116,"children":1117},{"class":91,"line":110},[1118],{"type":55,"tag":89,"props":1119,"children":1120},{},[1121],{"type":61,"value":1122},"    .setStartTime(OffsetDateTime.parse(\"2023-07-01T00:00:00Z\"))\n",{"type":55,"tag":89,"props":1124,"children":1125},{"class":91,"line":119},[1126],{"type":55,"tag":89,"props":1127,"children":1128},{},[1129],{"type":61,"value":1130},"    .setEndTime(OffsetDateTime.parse(\"2023-07-31T00:00:00Z\"))\n",{"type":55,"tag":89,"props":1132,"children":1133},{"class":91,"line":128},[1134],{"type":55,"tag":89,"props":1135,"children":1136},{},[1137],{"type":61,"value":1138},"    .setTopContributorCount(10);\n",{"type":55,"tag":89,"props":1140,"children":1141},{"class":91,"line":199},[1142],{"type":55,"tag":89,"props":1143,"children":1144},{"emptyLinePlaceholder":193},[1145],{"type":61,"value":196},{"type":55,"tag":89,"props":1147,"children":1148},{"class":91,"line":208},[1149],{"type":55,"tag":89,"props":1150,"children":1151},{},[1152],{"type":61,"value":1153},"MultivariateDetectionResult detectionResult = \n",{"type":55,"tag":89,"props":1155,"children":1156},{"class":91,"line":217},[1157],{"type":55,"tag":89,"props":1158,"children":1159},{},[1160],{"type":61,"value":1161},"    multivariateClient.detectMultivariateBatchAnomaly(modelId, detectionOptions);\n",{"type":55,"tag":89,"props":1163,"children":1164},{"class":91,"line":225},[1165],{"type":55,"tag":89,"props":1166,"children":1167},{"emptyLinePlaceholder":193},[1168],{"type":61,"value":196},{"type":55,"tag":89,"props":1170,"children":1171},{"class":91,"line":234},[1172],{"type":55,"tag":89,"props":1173,"children":1174},{},[1175],{"type":61,"value":1176},"String resultId = detectionResult.getResultId();\n",{"type":55,"tag":89,"props":1178,"children":1179},{"class":91,"line":243},[1180],{"type":55,"tag":89,"props":1181,"children":1182},{"emptyLinePlaceholder":193},[1183],{"type":61,"value":196},{"type":55,"tag":89,"props":1185,"children":1186},{"class":91,"line":252},[1187],{"type":55,"tag":89,"props":1188,"children":1189},{},[1190],{"type":61,"value":1191},"\u002F\u002F Poll for results\n",{"type":55,"tag":89,"props":1193,"children":1194},{"class":91,"line":261},[1195],{"type":55,"tag":89,"props":1196,"children":1197},{},[1198],{"type":61,"value":1199},"MultivariateDetectionResult result = multivariateClient.getBatchDetectionResult(resultId);\n",{"type":55,"tag":89,"props":1201,"children":1202},{"class":91,"line":270},[1203],{"type":55,"tag":89,"props":1204,"children":1205},{},[1206],{"type":61,"value":1207},"for (AnomalyState state : result.getResults()) {\n",{"type":55,"tag":89,"props":1209,"children":1210},{"class":91,"line":278},[1211],{"type":55,"tag":89,"props":1212,"children":1213},{},[1214],{"type":61,"value":1215},"    if (state.getValue().isAnomaly()) {\n",{"type":55,"tag":89,"props":1217,"children":1218},{"class":91,"line":287},[1219],{"type":55,"tag":89,"props":1220,"children":1221},{},[1222],{"type":61,"value":1223},"        System.out.printf(\"Anomaly at %s, severity: %.2f%n\",\n",{"type":55,"tag":89,"props":1225,"children":1226},{"class":91,"line":296},[1227],{"type":55,"tag":89,"props":1228,"children":1229},{},[1230],{"type":61,"value":1231},"            state.getTimestamp(),\n",{"type":55,"tag":89,"props":1233,"children":1234},{"class":91,"line":304},[1235],{"type":55,"tag":89,"props":1236,"children":1237},{},[1238],{"type":61,"value":1239},"            state.getValue().getSeverity());\n",{"type":55,"tag":89,"props":1241,"children":1242},{"class":91,"line":312},[1243],{"type":55,"tag":89,"props":1244,"children":1245},{},[1246],{"type":61,"value":721},{"type":55,"tag":89,"props":1248,"children":1249},{"class":91,"line":697},[1250],{"type":55,"tag":89,"props":1251,"children":1252},{},[1253],{"type":61,"value":730},{"type":55,"tag":142,"props":1255,"children":1257},{"id":1256},"multivariate-last-point-detection",[1258],{"type":61,"value":1259},"Multivariate Last Point Detection",{"type":55,"tag":77,"props":1261,"children":1263},{"className":150,"code":1262,"language":18,"meta":82,"style":82},"MultivariateLastDetectionOptions lastOptions = new MultivariateLastDetectionOptions()\n    .setVariables(List.of(\n        new VariableValues(\"variable1\", List.of(\"timestamp1\"), List.of(1.0f)),\n        new VariableValues(\"variable2\", List.of(\"timestamp1\"), List.of(2.5f))\n    ))\n    .setTopContributorCount(5);\n\nMultivariateLastDetectionResult lastResult = \n    multivariateClient.detectMultivariateLastAnomaly(modelId, lastOptions);\n\nif (lastResult.getValue().isAnomaly()) {\n    System.out.println(\"Anomaly detected!\");\n    \u002F\u002F Check contributing variables\n    for (AnomalyContributor contributor : lastResult.getValue().getInterpretation()) {\n        System.out.printf(\"Variable: %s, Contribution: %.2f%n\",\n            contributor.getVariable(),\n            contributor.getContributionScore());\n    }\n}\n",[1264],{"type":55,"tag":85,"props":1265,"children":1266},{"__ignoreMap":82},[1267,1275,1283,1291,1299,1307,1315,1322,1330,1338,1345,1353,1361,1369,1377,1385,1393,1401,1408],{"type":55,"tag":89,"props":1268,"children":1269},{"class":91,"line":92},[1270],{"type":55,"tag":89,"props":1271,"children":1272},{},[1273],{"type":61,"value":1274},"MultivariateLastDetectionOptions lastOptions = new MultivariateLastDetectionOptions()\n",{"type":55,"tag":89,"props":1276,"children":1277},{"class":91,"line":101},[1278],{"type":55,"tag":89,"props":1279,"children":1280},{},[1281],{"type":61,"value":1282},"    .setVariables(List.of(\n",{"type":55,"tag":89,"props":1284,"children":1285},{"class":91,"line":110},[1286],{"type":55,"tag":89,"props":1287,"children":1288},{},[1289],{"type":61,"value":1290},"        new VariableValues(\"variable1\", List.of(\"timestamp1\"), List.of(1.0f)),\n",{"type":55,"tag":89,"props":1292,"children":1293},{"class":91,"line":119},[1294],{"type":55,"tag":89,"props":1295,"children":1296},{},[1297],{"type":61,"value":1298},"        new VariableValues(\"variable2\", List.of(\"timestamp1\"), List.of(2.5f))\n",{"type":55,"tag":89,"props":1300,"children":1301},{"class":91,"line":128},[1302],{"type":55,"tag":89,"props":1303,"children":1304},{},[1305],{"type":61,"value":1306},"    ))\n",{"type":55,"tag":89,"props":1308,"children":1309},{"class":91,"line":199},[1310],{"type":55,"tag":89,"props":1311,"children":1312},{},[1313],{"type":61,"value":1314},"    .setTopContributorCount(5);\n",{"type":55,"tag":89,"props":1316,"children":1317},{"class":91,"line":208},[1318],{"type":55,"tag":89,"props":1319,"children":1320},{"emptyLinePlaceholder":193},[1321],{"type":61,"value":196},{"type":55,"tag":89,"props":1323,"children":1324},{"class":91,"line":217},[1325],{"type":55,"tag":89,"props":1326,"children":1327},{},[1328],{"type":61,"value":1329},"MultivariateLastDetectionResult lastResult = \n",{"type":55,"tag":89,"props":1331,"children":1332},{"class":91,"line":225},[1333],{"type":55,"tag":89,"props":1334,"children":1335},{},[1336],{"type":61,"value":1337},"    multivariateClient.detectMultivariateLastAnomaly(modelId, lastOptions);\n",{"type":55,"tag":89,"props":1339,"children":1340},{"class":91,"line":234},[1341],{"type":55,"tag":89,"props":1342,"children":1343},{"emptyLinePlaceholder":193},[1344],{"type":61,"value":196},{"type":55,"tag":89,"props":1346,"children":1347},{"class":91,"line":243},[1348],{"type":55,"tag":89,"props":1349,"children":1350},{},[1351],{"type":61,"value":1352},"if (lastResult.getValue().isAnomaly()) {\n",{"type":55,"tag":89,"props":1354,"children":1355},{"class":91,"line":252},[1356],{"type":55,"tag":89,"props":1357,"children":1358},{},[1359],{"type":61,"value":1360},"    System.out.println(\"Anomaly detected!\");\n",{"type":55,"tag":89,"props":1362,"children":1363},{"class":91,"line":261},[1364],{"type":55,"tag":89,"props":1365,"children":1366},{},[1367],{"type":61,"value":1368},"    \u002F\u002F Check contributing variables\n",{"type":55,"tag":89,"props":1370,"children":1371},{"class":91,"line":270},[1372],{"type":55,"tag":89,"props":1373,"children":1374},{},[1375],{"type":61,"value":1376},"    for (AnomalyContributor contributor : lastResult.getValue().getInterpretation()) {\n",{"type":55,"tag":89,"props":1378,"children":1379},{"class":91,"line":278},[1380],{"type":55,"tag":89,"props":1381,"children":1382},{},[1383],{"type":61,"value":1384},"        System.out.printf(\"Variable: %s, Contribution: %.2f%n\",\n",{"type":55,"tag":89,"props":1386,"children":1387},{"class":91,"line":287},[1388],{"type":55,"tag":89,"props":1389,"children":1390},{},[1391],{"type":61,"value":1392},"            contributor.getVariable(),\n",{"type":55,"tag":89,"props":1394,"children":1395},{"class":91,"line":296},[1396],{"type":55,"tag":89,"props":1397,"children":1398},{},[1399],{"type":61,"value":1400},"            contributor.getContributionScore());\n",{"type":55,"tag":89,"props":1402,"children":1403},{"class":91,"line":304},[1404],{"type":55,"tag":89,"props":1405,"children":1406},{},[1407],{"type":61,"value":721},{"type":55,"tag":89,"props":1409,"children":1410},{"class":91,"line":312},[1411],{"type":55,"tag":89,"props":1412,"children":1413},{},[1414],{"type":61,"value":730},{"type":55,"tag":142,"props":1416,"children":1418},{"id":1417},"model-management",[1419],{"type":61,"value":1420},"Model Management",{"type":55,"tag":77,"props":1422,"children":1424},{"className":150,"code":1423,"language":18,"meta":82,"style":82},"\u002F\u002F List all models\nPagedIterable\u003CAnomalyDetectionModel> models = multivariateClient.listMultivariateModels();\nfor (AnomalyDetectionModel m : models) {\n    System.out.printf(\"Model: %s, Status: %s%n\",\n        m.getModelId(),\n        m.getModelInfo().getStatus());\n}\n\n\u002F\u002F Delete a model\nmultivariateClient.deleteMultivariateModel(modelId);\n",[1425],{"type":55,"tag":85,"props":1426,"children":1427},{"__ignoreMap":82},[1428,1436,1444,1452,1460,1468,1476,1483,1490,1498],{"type":55,"tag":89,"props":1429,"children":1430},{"class":91,"line":92},[1431],{"type":55,"tag":89,"props":1432,"children":1433},{},[1434],{"type":61,"value":1435},"\u002F\u002F List all models\n",{"type":55,"tag":89,"props":1437,"children":1438},{"class":91,"line":101},[1439],{"type":55,"tag":89,"props":1440,"children":1441},{},[1442],{"type":61,"value":1443},"PagedIterable\u003CAnomalyDetectionModel> models = multivariateClient.listMultivariateModels();\n",{"type":55,"tag":89,"props":1445,"children":1446},{"class":91,"line":110},[1447],{"type":55,"tag":89,"props":1448,"children":1449},{},[1450],{"type":61,"value":1451},"for (AnomalyDetectionModel m : models) {\n",{"type":55,"tag":89,"props":1453,"children":1454},{"class":91,"line":119},[1455],{"type":55,"tag":89,"props":1456,"children":1457},{},[1458],{"type":61,"value":1459},"    System.out.printf(\"Model: %s, Status: %s%n\",\n",{"type":55,"tag":89,"props":1461,"children":1462},{"class":91,"line":128},[1463],{"type":55,"tag":89,"props":1464,"children":1465},{},[1466],{"type":61,"value":1467},"        m.getModelId(),\n",{"type":55,"tag":89,"props":1469,"children":1470},{"class":91,"line":199},[1471],{"type":55,"tag":89,"props":1472,"children":1473},{},[1474],{"type":61,"value":1475},"        m.getModelInfo().getStatus());\n",{"type":55,"tag":89,"props":1477,"children":1478},{"class":91,"line":208},[1479],{"type":55,"tag":89,"props":1480,"children":1481},{},[1482],{"type":61,"value":730},{"type":55,"tag":89,"props":1484,"children":1485},{"class":91,"line":217},[1486],{"type":55,"tag":89,"props":1487,"children":1488},{"emptyLinePlaceholder":193},[1489],{"type":61,"value":196},{"type":55,"tag":89,"props":1491,"children":1492},{"class":91,"line":225},[1493],{"type":55,"tag":89,"props":1494,"children":1495},{},[1496],{"type":61,"value":1497},"\u002F\u002F Delete a model\n",{"type":55,"tag":89,"props":1499,"children":1500},{"class":91,"line":234},[1501],{"type":55,"tag":89,"props":1502,"children":1503},{},[1504],{"type":61,"value":1505},"multivariateClient.deleteMultivariateModel(modelId);\n",{"type":55,"tag":70,"props":1507,"children":1509},{"id":1508},"error-handling",[1510],{"type":61,"value":1511},"Error Handling",{"type":55,"tag":77,"props":1513,"children":1515},{"className":150,"code":1514,"language":18,"meta":82,"style":82},"import com.azure.core.exception.HttpResponseException;\n\ntry {\n    univariateClient.detectUnivariateEntireSeries(options);\n} catch (HttpResponseException e) {\n    System.out.println(\"Status code: \" + e.getResponse().getStatusCode());\n    System.out.println(\"Error: \" + e.getMessage());\n}\n",[1516],{"type":55,"tag":85,"props":1517,"children":1518},{"__ignoreMap":82},[1519,1527,1534,1542,1550,1558,1566,1574],{"type":55,"tag":89,"props":1520,"children":1521},{"class":91,"line":92},[1522],{"type":55,"tag":89,"props":1523,"children":1524},{},[1525],{"type":61,"value":1526},"import com.azure.core.exception.HttpResponseException;\n",{"type":55,"tag":89,"props":1528,"children":1529},{"class":91,"line":101},[1530],{"type":55,"tag":89,"props":1531,"children":1532},{"emptyLinePlaceholder":193},[1533],{"type":61,"value":196},{"type":55,"tag":89,"props":1535,"children":1536},{"class":91,"line":110},[1537],{"type":55,"tag":89,"props":1538,"children":1539},{},[1540],{"type":61,"value":1541},"try {\n",{"type":55,"tag":89,"props":1543,"children":1544},{"class":91,"line":119},[1545],{"type":55,"tag":89,"props":1546,"children":1547},{},[1548],{"type":61,"value":1549},"    univariateClient.detectUnivariateEntireSeries(options);\n",{"type":55,"tag":89,"props":1551,"children":1552},{"class":91,"line":128},[1553],{"type":55,"tag":89,"props":1554,"children":1555},{},[1556],{"type":61,"value":1557},"} catch (HttpResponseException e) {\n",{"type":55,"tag":89,"props":1559,"children":1560},{"class":91,"line":199},[1561],{"type":55,"tag":89,"props":1562,"children":1563},{},[1564],{"type":61,"value":1565},"    System.out.println(\"Status code: \" + e.getResponse().getStatusCode());\n",{"type":55,"tag":89,"props":1567,"children":1568},{"class":91,"line":208},[1569],{"type":55,"tag":89,"props":1570,"children":1571},{},[1572],{"type":61,"value":1573},"    System.out.println(\"Error: \" + e.getMessage());\n",{"type":55,"tag":89,"props":1575,"children":1576},{"class":91,"line":217},[1577],{"type":55,"tag":89,"props":1578,"children":1579},{},[1580],{"type":61,"value":730},{"type":55,"tag":70,"props":1582,"children":1584},{"id":1583},"environment-variables",[1585],{"type":61,"value":1586},"Environment Variables",{"type":55,"tag":77,"props":1588,"children":1592},{"className":1589,"code":1590,"language":1591,"meta":82,"style":82},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","AZURE_ANOMALY_DETECTOR_ENDPOINT=https:\u002F\u002F\u003Cresource>.cognitiveservices.azure.com\u002F # Required for all auth methods\nAZURE_ANOMALY_DETECTOR_API_KEY=\u003Cyour-api-key> # Only required for AzureKeyCredential auth\nAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production\n","bash",[1593],{"type":55,"tag":85,"props":1594,"children":1595},{"__ignoreMap":82},[1596,1643,1670],{"type":55,"tag":89,"props":1597,"children":1598},{"class":91,"line":92},[1599,1605,1611,1617,1622,1627,1632,1637],{"type":55,"tag":89,"props":1600,"children":1602},{"style":1601},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1603],{"type":61,"value":1604},"AZURE_ANOMALY_DETECTOR_ENDPOINT",{"type":55,"tag":89,"props":1606,"children":1608},{"style":1607},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1609],{"type":61,"value":1610},"=",{"type":55,"tag":89,"props":1612,"children":1614},{"style":1613},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1615],{"type":61,"value":1616},"https:\u002F\u002F",{"type":55,"tag":89,"props":1618,"children":1619},{"style":1607},[1620],{"type":61,"value":1621},"\u003C",{"type":55,"tag":89,"props":1623,"children":1624},{"style":1613},[1625],{"type":61,"value":1626},"resource",{"type":55,"tag":89,"props":1628,"children":1629},{"style":1607},[1630],{"type":61,"value":1631},">",{"type":55,"tag":89,"props":1633,"children":1634},{"style":1613},[1635],{"type":61,"value":1636},".cognitiveservices.azure.com\u002F",{"type":55,"tag":89,"props":1638,"children":1640},{"style":1639},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1641],{"type":61,"value":1642}," # Required for all auth methods\n",{"type":55,"tag":89,"props":1644,"children":1645},{"class":91,"line":101},[1646,1651,1656,1661,1665],{"type":55,"tag":89,"props":1647,"children":1648},{"style":1601},[1649],{"type":61,"value":1650},"AZURE_ANOMALY_DETECTOR_API_KEY",{"type":55,"tag":89,"props":1652,"children":1653},{"style":1607},[1654],{"type":61,"value":1655},"=\u003C",{"type":55,"tag":89,"props":1657,"children":1658},{"style":1613},[1659],{"type":61,"value":1660},"your-api-key",{"type":55,"tag":89,"props":1662,"children":1663},{"style":1607},[1664],{"type":61,"value":1631},{"type":55,"tag":89,"props":1666,"children":1667},{"style":1639},[1668],{"type":61,"value":1669}," # Only required for AzureKeyCredential auth\n",{"type":55,"tag":89,"props":1671,"children":1672},{"class":91,"line":110},[1673,1678,1682,1687],{"type":55,"tag":89,"props":1674,"children":1675},{"style":1601},[1676],{"type":61,"value":1677},"AZURE_TOKEN_CREDENTIALS",{"type":55,"tag":89,"props":1679,"children":1680},{"style":1607},[1681],{"type":61,"value":1610},{"type":55,"tag":89,"props":1683,"children":1684},{"style":1613},[1685],{"type":61,"value":1686},"prod",{"type":55,"tag":89,"props":1688,"children":1689},{"style":1639},[1690],{"type":61,"value":1691},"  # Required only if DefaultAzureCredential is used in production\n",{"type":55,"tag":70,"props":1693,"children":1695},{"id":1694},"best-practices",[1696],{"type":61,"value":1697},"Best Practices",{"type":55,"tag":1699,"props":1700,"children":1701},"ol",{},[1702,1712,1730,1740,1750],{"type":55,"tag":473,"props":1703,"children":1704},{},[1705,1710],{"type":55,"tag":477,"props":1706,"children":1707},{},[1708],{"type":61,"value":1709},"Minimum Data Points",{"type":61,"value":1711},": Univariate requires at least 12 points; more data improves accuracy",{"type":55,"tag":473,"props":1713,"children":1714},{},[1715,1720,1722,1728],{"type":55,"tag":477,"props":1716,"children":1717},{},[1718],{"type":61,"value":1719},"Granularity Alignment",{"type":61,"value":1721},": Match ",{"type":55,"tag":85,"props":1723,"children":1725},{"className":1724},[],[1726],{"type":61,"value":1727},"TimeGranularity",{"type":61,"value":1729}," to your actual data frequency",{"type":55,"tag":473,"props":1731,"children":1732},{},[1733,1738],{"type":55,"tag":477,"props":1734,"children":1735},{},[1736],{"type":61,"value":1737},"Sensitivity Tuning",{"type":61,"value":1739},": Higher values (0-99) detect more anomalies",{"type":55,"tag":473,"props":1741,"children":1742},{},[1743,1748],{"type":55,"tag":477,"props":1744,"children":1745},{},[1746],{"type":61,"value":1747},"Multivariate Training",{"type":61,"value":1749},": Use 200-1000 sliding window based on pattern complexity",{"type":55,"tag":473,"props":1751,"children":1752},{},[1753,1757,1759,1765],{"type":55,"tag":477,"props":1754,"children":1755},{},[1756],{"type":61,"value":1511},{"type":61,"value":1758},": Always handle ",{"type":55,"tag":85,"props":1760,"children":1762},{"className":1761},[],[1763],{"type":61,"value":1764},"HttpResponseException",{"type":61,"value":1766}," for API errors",{"type":55,"tag":70,"props":1768,"children":1770},{"id":1769},"trigger-phrases",[1771],{"type":61,"value":1772},"Trigger Phrases",{"type":55,"tag":469,"props":1774,"children":1775},{},[1776,1781,1786,1791,1796,1801,1806],{"type":55,"tag":473,"props":1777,"children":1778},{},[1779],{"type":61,"value":1780},"\"anomaly detection Java\"",{"type":55,"tag":473,"props":1782,"children":1783},{},[1784],{"type":61,"value":1785},"\"detect anomalies time series\"",{"type":55,"tag":473,"props":1787,"children":1788},{},[1789],{"type":61,"value":1790},"\"multivariate anomaly Java\"",{"type":55,"tag":473,"props":1792,"children":1793},{},[1794],{"type":61,"value":1795},"\"univariate anomaly detection\"",{"type":55,"tag":473,"props":1797,"children":1798},{},[1799],{"type":61,"value":1800},"\"streaming anomaly detection\"",{"type":55,"tag":473,"props":1802,"children":1803},{},[1804],{"type":61,"value":1805},"\"change point detection\"",{"type":55,"tag":473,"props":1807,"children":1808},{},[1809],{"type":61,"value":1810},"\"Azure AI Anomaly Detector\"",{"type":55,"tag":1812,"props":1813,"children":1814},"style",{},[1815],{"type":61,"value":1816},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1818,"total":1996},[1819,1841,1857,1866,1881,1898,1909,1922,1937,1952,1971,1984],{"slug":1820,"name":1820,"fn":1821,"description":1822,"org":1823,"tags":1824,"stars":1838,"repoUrl":1839,"updatedAt":1840},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1825,1828,1831,1832,1835],{"name":1826,"slug":1827,"type":15},"Engineering","engineering",{"name":1829,"slug":1830,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":1833,"slug":1834,"type":15},"Project Management","project-management",{"name":1836,"slug":1837,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":1842,"name":1842,"fn":1843,"description":1844,"org":1845,"tags":1846,"stars":29,"repoUrl":30,"updatedAt":1856},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1847,1850,1852,1853],{"name":1848,"slug":1849,"type":15},".NET","net",{"name":1851,"slug":36,"type":15},"Agents",{"name":13,"slug":14,"type":15},{"name":1854,"slug":1855,"type":15},"LLM","llm","2026-07-03T16:32:10.297433",{"slug":4,"name":4,"fn":5,"description":6,"org":1858,"tags":1859,"stars":29,"repoUrl":30,"updatedAt":31},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1860,1861,1862,1863,1864,1865],{"name":27,"slug":28,"type":15},{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"slug":1867,"name":1867,"fn":1868,"description":1869,"org":1870,"tags":1871,"stars":29,"repoUrl":30,"updatedAt":1880},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1872,1875,1876,1877],{"name":1873,"slug":1874,"type":15},"AI Infrastructure","ai-infrastructure",{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":1878,"slug":1879,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":1882,"name":1882,"fn":1883,"description":1884,"org":1885,"tags":1886,"stars":29,"repoUrl":30,"updatedAt":1897},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1887,1888,1891,1892,1893,1896],{"name":13,"slug":14,"type":15},{"name":1889,"slug":1890,"type":15},"Compliance","compliance",{"name":1854,"slug":1855,"type":15},{"name":9,"slug":8,"type":15},{"name":1894,"slug":1895,"type":15},"Python","python",{"name":1878,"slug":1879,"type":15},"2026-07-18T05:14:23.017504",{"slug":1899,"name":1899,"fn":1900,"description":1901,"org":1902,"tags":1903,"stars":29,"repoUrl":30,"updatedAt":1908},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1904,1905,1906,1907],{"name":27,"slug":28,"type":15},{"name":13,"slug":14,"type":15},{"name":1854,"slug":1855,"type":15},{"name":1894,"slug":1895,"type":15},"2026-07-31T05:54:29.068751",{"slug":1910,"name":1910,"fn":1911,"description":1912,"org":1913,"tags":1914,"stars":29,"repoUrl":30,"updatedAt":1921},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1915,1918,1919,1920],{"name":1916,"slug":1917,"type":15},"API Development","api-development",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":1894,"slug":1895,"type":15},"2026-07-18T05:14:16.988376",{"slug":1923,"name":1923,"fn":1924,"description":1925,"org":1926,"tags":1927,"stars":29,"repoUrl":30,"updatedAt":1936},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1928,1929,1932,1935],{"name":13,"slug":14,"type":15},{"name":1930,"slug":1931,"type":15},"Computer Vision","computer-vision",{"name":1933,"slug":1934,"type":15},"Images","images",{"name":1894,"slug":1895,"type":15},"2026-07-18T05:14:18.007737",{"slug":1938,"name":1938,"fn":1939,"description":1940,"org":1941,"tags":1942,"stars":29,"repoUrl":30,"updatedAt":1951},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1943,1944,1947,1950],{"name":13,"slug":14,"type":15},{"name":1945,"slug":1946,"type":15},"Configuration","configuration",{"name":1948,"slug":1949,"type":15},"Feature Flags","feature-flags",{"name":17,"slug":18,"type":15},"2026-07-03T16:32:01.278468",{"slug":1953,"name":1953,"fn":1954,"description":1955,"org":1956,"tags":1957,"stars":29,"repoUrl":30,"updatedAt":1970},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1958,1961,1964,1967],{"name":1959,"slug":1960,"type":15},"Cosmos DB","cosmos-db",{"name":1962,"slug":1963,"type":15},"Database","database",{"name":1965,"slug":1966,"type":15},"NoSQL","nosql",{"name":1968,"slug":1969,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":1972,"name":1972,"fn":1954,"description":1973,"org":1974,"tags":1975,"stars":29,"repoUrl":30,"updatedAt":1983},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1976,1977,1978,1979,1980],{"name":1959,"slug":1960,"type":15},{"name":1962,"slug":1963,"type":15},{"name":9,"slug":8,"type":15},{"name":1965,"slug":1966,"type":15},{"name":1981,"slug":1982,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":1985,"name":1985,"fn":1986,"description":1987,"org":1988,"tags":1989,"stars":29,"repoUrl":30,"updatedAt":1995},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1990,1991,1992,1993,1994],{"name":13,"slug":14,"type":15},{"name":1959,"slug":1960,"type":15},{"name":1962,"slug":1963,"type":15},{"name":17,"slug":18,"type":15},{"name":1965,"slug":1966,"type":15},"2026-05-13T06:14:17.582229",267,{"items":1998,"total":2052},[1999,2006,2015,2022,2031,2038,2045],{"slug":1842,"name":1842,"fn":1843,"description":1844,"org":2000,"tags":2001,"stars":29,"repoUrl":30,"updatedAt":1856},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2002,2003,2004,2005],{"name":1848,"slug":1849,"type":15},{"name":1851,"slug":36,"type":15},{"name":13,"slug":14,"type":15},{"name":1854,"slug":1855,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":2007,"tags":2008,"stars":29,"repoUrl":30,"updatedAt":31},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2009,2010,2011,2012,2013,2014],{"name":27,"slug":28,"type":15},{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"slug":1867,"name":1867,"fn":1868,"description":1869,"org":2016,"tags":2017,"stars":29,"repoUrl":30,"updatedAt":1880},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2018,2019,2020,2021],{"name":1873,"slug":1874,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":1878,"slug":1879,"type":15},{"slug":1882,"name":1882,"fn":1883,"description":1884,"org":2023,"tags":2024,"stars":29,"repoUrl":30,"updatedAt":1897},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2025,2026,2027,2028,2029,2030],{"name":13,"slug":14,"type":15},{"name":1889,"slug":1890,"type":15},{"name":1854,"slug":1855,"type":15},{"name":9,"slug":8,"type":15},{"name":1894,"slug":1895,"type":15},{"name":1878,"slug":1879,"type":15},{"slug":1899,"name":1899,"fn":1900,"description":1901,"org":2032,"tags":2033,"stars":29,"repoUrl":30,"updatedAt":1908},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2034,2035,2036,2037],{"name":27,"slug":28,"type":15},{"name":13,"slug":14,"type":15},{"name":1854,"slug":1855,"type":15},{"name":1894,"slug":1895,"type":15},{"slug":1910,"name":1910,"fn":1911,"description":1912,"org":2039,"tags":2040,"stars":29,"repoUrl":30,"updatedAt":1921},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2041,2042,2043,2044],{"name":1916,"slug":1917,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":1894,"slug":1895,"type":15},{"slug":1923,"name":1923,"fn":1924,"description":1925,"org":2046,"tags":2047,"stars":29,"repoUrl":30,"updatedAt":1936},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2048,2049,2050,2051],{"name":13,"slug":14,"type":15},{"name":1930,"slug":1931,"type":15},{"name":1933,"slug":1934,"type":15},{"name":1894,"slug":1895,"type":15},38]