Snabb start: identifiera avvikelser i dina tids serie data med hjälp av avvikelse detektor REST API ochC#Quickstart: Detect anomalies in your time series data using the Anomaly Detector REST API and C#

Använd den här snabb starten för att börja använda de två identifierings lägena för avvikelse detektor API: erna för att identifiera avvikelser i dina tids serie data.Use this quickstart to start using the Anomaly Detector API's two detection modes to detect anomalies in your time series data. Det C# här programmet skickar två API-begäranden som innehåller JSON-formaterade Time Series-data och hämtar svaren.This C# application sends two API requests containing JSON-formatted time series data, and gets the responses.

API-begäranAPI request ProgramutdataApplication output
Identifiera avvikelser som en batchDetect anomalies as a batch JSON-svaret som innehåller avvikelse status (och andra data) för varje data punkt i tids serie data och positionerna för identifierade avvikelser.The JSON response containing the anomaly status (and other data) for each data point in the time series data, and the positions of any detected anomalies.
Identifiera avvikelse statusen för den senaste data punktenDetect the anomaly status of the latest data point JSON-svaret som innehåller avvikelse status (och andra data) för den senaste data punkten i tids serie data.The JSON response containing the anomaly status (and other data) for the latest data point in the time series data.

Även om det här programmet är skrivet i C#, är API:et en RESTful-webbtjänst som är kompatibel med de flesta programmeringsspråk.While this application is written in C#, the API is a RESTful web service compatible with most programming languages. Du hittar käll koden för den här snabb starten på GitHub.You can find the source code for this quickstart on GitHub.

KravPrerequisites

  • Alla versioner av Visual Studio 2017 eller senare,Any edition of Visual Studio 2017 or later,

  • En avvikelse nyckel och slut punktAn Anomaly detector key and endpoint

  • Json.NET framework, tillgänglig som ett NuGet-paket.The Json.NET framework, available as a NuGet package. Så här installerar du Newtonsoft. JSON som ett NuGet-paket i Visual Studio:To install Newtonsoft.Json as a NuGet package in Visual Studio:

    1. Högerklicka på ditt projekt i Solution Explorer.Right click your project in Solution Explorer.
    2. Välj Hantera NuGet-paket.Select Manage NuGet Packages.
    3. Sök efter Newtonsoft. JSON och installera paketet.Search for Newtonsoft.Json and install the package.
  • Om du använder Linux/MacOS kan du köra det här programmet med hjälp av mono.If you're using Linux/MacOS, this application can be run by using Mono.

  • En JSON-fil som innehåller tids serie data punkter.A JSON file containing time series data points. Exempel data för den här snabb starten finns på GitHub.The example data for this quickstart can be found on GitHub.

Skapa en resurs för avvikelse detektorCreate an Anomaly Detector resource

Börja använda tjänsten avvikelse detektor genom att skapa en av Azure-resurserna nedan.Start using the Anomaly Detector service by creating one of the Azure resources below.

Skapa en miljö variabelCreate an environment variable

Anteckning

Slut punkterna för icke-testresurser som skapats efter den 1 juli 2019 använder det anpassade under domän formatet som visas nedan.The endpoints for non-trial resources created after July 1, 2019 use the custom subdomain format shown below. Mer information och en fullständig lista över regionala slut punkter finns i anpassade under domän namn för Cognitive Services.For more information and a complete list of regional endpoints, see Custom subdomain names for Cognitive Services.

Med din nyckel och slut punkt från den resurs som du har skapat skapar du två miljövariabler för autentisering:Using your key and endpoint from the resource you created, create two environment variables for authentication:

  • ANOMALY_DETECTOR_KEY-resurs nyckeln för att autentisera dina begär Anden.ANOMALY_DETECTOR_KEY - The resource key for authenticating your requests.
  • ANOMALY_DETECTOR_ENDPOINT-resurs slut punkten för att skicka API-begäranden.ANOMALY_DETECTOR_ENDPOINT - The resource endpoint for sending API requests. Det kommer att se ut så här:It will look like this:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Följ anvisningarna för ditt operativ system.Use the instructions for your operating system.

setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>

Starta om konsol fönstret när du har lagt till miljövariabeln.After you add the environment variable, restart the console window.

Skapa ett nytt programCreate a new application

  1. Skapa en ny konsol lösning i Visual Studio och Lägg till följande paket.In Visual Studio, create a new console solution and add the following packages.

    using System;
    using System.IO;
    using System.Net;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
  2. Skapa variabler för din prenumerations nyckel och din slut punkt.Create variables for your subscription key and your endpoint. Nedan visas de URI: er som du kan använda för avvikelse identifiering.Below are the URIs you can use for anomaly detection. Dessa kommer att läggas till i tjänst slut punkten senare för att skapa API-begärandena URL: er.These will be appended to your service endpoint later to create the API request URLs.

    IdentifieringsmetodDetection method URIURI
    Batch-identifieringBatch detection /anomalydetector/v1.0/timeseries/entire/detect
    Identifiering på den senaste data punktenDetection on the latest data point /anomalydetector/v1.0/timeseries/last/detect
    //This sample assumes you have created an environment variable for your key and endpoint
    static readonly string subscriptionKey = Environment.GetEnvironmentVariable("ANOMALY_DETECTOR_KEY");
    static readonly string endpoint = Environment.GetEnvironmentVariable("ANOMALY_DETECTOR_ENDPOINT");
    
    // Replace the dataPath string with a path to the JSON formatted time series data.
    const string dataPath = "[PATH_TO_TIME_SERIES_DATA]";
    
    const string latestPointDetectionUrl = "/anomalydetector/v1.0/timeseries/last/detect";
    const string batchDetectionUrl = "/anomalydetector/v1.0/timeseries/entire/detect";
    

Skapa en funktion för att skicka begär AndenCreate a function to send requests

  1. Skapa en ny async-funktion som heter Request som använder variablerna som skapats ovan.Create a new async function called Request that takes the variables created above.

  2. Ange klientens säkerhets protokoll och huvud information med hjälp av ett HttpClient-objekt.Set the client's security protocol and header information using an HttpClient object. Se till att lägga till din prenumerations nyckel i Ocp-Apim-Subscription-Keys huvudet.Be sure to add your subscription key to the Ocp-Apim-Subscription-Key header. Skapa sedan ett StringContent-objekt för begäran.Then create a StringContent object for the request.

  3. Skicka begäran med PostAsync()och returnera sedan svaret.Send the request with PostAsync(), and then return the response.

    static async Task<string> Request(string apiAddress, string endpoint, string subscriptionKey, string requestData)
    {
        using (HttpClient client = new HttpClient { BaseAddress = new Uri(apiAddress) })
        {
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
    
            var content = new StringContent(requestData, Encoding.UTF8, "application/json");
            var res = await client.PostAsync(endpoint, content);
            return await res.Content.ReadAsStringAsync();
        }
    }
    

Identifiera avvikelser som en batchDetect anomalies as a batch

  1. Skapa en ny funktion som kallas detectAnomaliesBatch().Create a new function called detectAnomaliesBatch(). Skapa begäran och skicka den genom att anropa funktionen Request() med din slut punkt, prenumerations nyckel, URL för identifiering av batch-avvikelse och tids serie data.Construct the request and send it by calling the Request() function with your endpoint, subscription key, the URL for batch anomaly detection, and the time series data.

  2. Deserialisera JSON-objektet och skriv det till-konsolen.Deserialize the JSON object, and write it to the console.

  3. Om svaret innehåller code fältet, skriver du ut felkoden och fel meddelandet.If the response contains code field, print the error code and error message.

  4. Annars hittar du positionerna för avvikelser i data uppsättningen.Otherwise, find the positions of anomalies in the data set. Svarets isAnomaly fält innehåller en matris med booleska värden, som anger om en data punkt är en avvikelse.The response's isAnomaly field contains an array of boolean values, each of which indicates whether a data point is an anomaly. Konvertera detta till en sträng mat ris med svars objektets ToObject<bool[]>() funktion.Convert this to a string array with the response object's ToObject<bool[]>() function. Iterera genom matrisen och skriv ut indexet för alla true värden.Iterate through the array, and print the index of any true values. Dessa värden motsvarar indexet för avvikande data punkter, om sådana hittades.These values correspond to the index of anomalous data points, if any were found.

    static void detectAnomaliesBatch(string requestData)
    {
        System.Console.WriteLine("Detecting anomalies as a batch");
    
        //construct the request
        var result = Request(
            endpoint,
            batchDetectionUrl,
            subscriptionKey,
            requestData).Result;
    
        //deserialize the JSON object, and display it
        dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
        System.Console.WriteLine(jsonObj);
    
        if (jsonObj["code"] != null)
        {
            System.Console.WriteLine($"Detection failed. ErrorCode:{jsonObj["code"]}, ErrorMessage:{jsonObj["message"]}");
        }
        else
        {
            //Find and display the positions of anomalies in the data set
            bool[] anomalies = jsonObj["isAnomaly"].ToObject<bool[]>();
            System.Console.WriteLine("\nAnomalies detected in the following data positions:");
            for (var i = 0; i < anomalies.Length; i++)
            {
                if (anomalies[i])
                {
                    System.Console.Write(i + ", ");
                }
            }
        }
    }
    

Identifiera avvikelse statusen för den senaste data punktenDetect the anomaly status of the latest data point

  1. Skapa en ny funktion som kallas detectAnomaliesLatest().Create a new function called detectAnomaliesLatest(). Skapa begäran och skicka den genom att anropa funktionen Request() med din slut punkt, prenumerations nyckel, URL för den senaste punkten avvikelse identifiering och tids serie data.Construct the request and send it by calling the Request() function with your endpoint, subscription key, the URL for latest point anomaly detection, and the time series data.

  2. Deserialisera JSON-objektet och skriv det till-konsolen.Deserialize the JSON object, and write it to the console.

    static void detectAnomaliesLatest(string requestData)
    {
        System.Console.WriteLine("\n\nDetermining if latest data point is an anomaly");
        //construct the request
        var result = Request(
            endpoint,
            latestPointDetectionUrl,
            subscriptionKey,
            requestData).Result;
    
        //deserialize the JSON object, and display it
        dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
        System.Console.WriteLine(jsonObj);
    }
    

Läs in dina Time Series-data och skicka begäranLoad your time series data and send the request

  1. I appens huvud metod läser du in dina JSON Time Series-data med File.ReadAllText().In the main method of your application, load your JSON time series data with File.ReadAllText().

  2. Anropa de funktioner för avvikelse identifiering som skapats ovan.Call the anomaly detection functions created above. Använd System.Console.ReadKey() för att se till att konsol fönstret är öppet när du har kört programmet.Use System.Console.ReadKey() to keep the console window open after running the application.

    static void Main(string[] args)
    {
        //read in the JSON time series data for the API request
        var requestData = File.ReadAllText(dataPath);
    
        detectAnomaliesBatch(requestData);
        detectAnomaliesLatest(requestData);
        System.Console.WriteLine("\nPress any key to exit ");
        System.Console.ReadKey();
    }
    

ExempelsvarExample response

Ett lyckat svar returneras i JSON-format.A successful response is returned in JSON format. Klicka på länkarna nedan om du vill visa JSON-svaret på GitHub:Click the links below to view the JSON response on GitHub:

Rensa resurserClean up resources

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resurs gruppen.If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. Om du tar bort resurs gruppen raderas även andra resurser som är associerade med resurs gruppen.Deleting the resource group also deletes any other resources associated with the resource group.

Nästa stegNext steps

Koncept:Concepts:

Självstudier:Tutorials: