{"id":15658,"date":"2021-10-21T12:45:00","date_gmt":"2021-10-21T19:45:00","guid":{"rendered":"https:\/\/devwww.3cloudsolutions.com\/post\/improving-responsiveness-in-predictive-analytics-with-real-time-change-detection-3\/"},"modified":"2024-01-08T10:36:56","modified_gmt":"2024-01-08T18:36:56","slug":"improving-responsiveness-in-predictive-analytics-with-real-time-change-detection","status":"publish","type":"post","link":"https:\/\/3cloudsolutions.com\/resources\/improving-responsiveness-in-predictive-analytics-with-real-time-change-detection\/","title":{"rendered":"Improving Responsiveness in Predictive Analytics with Real-Time Change Detection"},"content":{"rendered":"<p><span data-contrast=\"auto\">With the advent of Internet of Things (IOT) and the proliferation of connected devices, comes the challenge of monitoring parts for maintenance before they break down. A common approach revolves around getting data from connected devices and performing a statistical test to determine the likelihood of the device failing. While this common approach is robust, it typically involves a significant time investment in exploratory data analysis, feature engineering, training, and testing to build a predictive model. It, therefore, often lacks the agility required to keep up with the monitoring demands of increasingly time-sensitive initiatives.<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In this context, the question becomes: how can we ensure a similar degree of rigor, but also improve the timeliness and responsiveness of being able to perform predictive maintenance?<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<p><!--more--><\/p>\n<h3><img decoding=\"async\" style=\"width: 1000px; margin-left: auto; margin-right: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/iStock-1022887882.jpg\" alt=\"iStock-1022887882\" width=\"1000\" \/><\/h3>\n<h2><span style=\"color: #007cba;\">A Simple Approach with CUSUM<\/span><\/h2>\n<p><span data-contrast=\"auto\">CUSUM (short for <\/span>\u201c<span data-contrast=\"auto\">Cumulative Sum<\/span>\u201d<span data-contrast=\"auto\">) control charts allow us to plot the cumulative deviations of a process from the average, and monitor the results versus the average. Once the cumulative deviations from the average reach a certain threshold, we can then alert users that there has been a change.<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">More formally, suppose there is a metric that we are monitoring in a stationary process whose high values will result in a part\/machine breaking down. We will call the average value of this metric <\/span><span style=\"font-weight: bold;\"><img decoding=\"async\" style=\"width: 13px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/Capture11.png\" alt=\"Capture11\" width=\"13\" \/><\/span><span data-contrast=\"auto\"> (<\/span><strong><i><span data-contrast=\"auto\">mu<\/span><\/i><\/strong><span data-contrast=\"auto\">), and for every observation we will only add positive deviation for the mean. To start, the initial cumulative effect will be 0, <img decoding=\"async\" style=\"width: 55px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/Capture1-1-1.png\" alt=\"Capture1-1-1\" width=\"55\" \/><\/span><span data-contrast=\"auto\">. Let <\/span><strong><span data-contrast=\"auto\">T\u00a0<\/span><\/strong><span data-contrast=\"auto\">be\u00a0some threshold value that we want to monitor to see if the cumulative effects go over.<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">For every newly observed value <img decoding=\"async\" style=\"width: 29px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/Capture2-2-1.png\" alt=\"Capture2-2-1\" width=\"29\" \/><\/span><span data-contrast=\"auto\"> of data, we want to update the cumulative effect as shown. To update for the next <\/span><strong><span data-contrast=\"auto\">S<\/span><\/strong><span style=\"font-weight: normal;\">,<\/span> <span data-contrast=\"auto\">we take only the positive change, since we\u2019re measuring positive deviation or 0. If we reach the threshold value of\u00a0<\/span><strong><span data-contrast=\"auto\">T<\/span><\/strong><span data-contrast=\"auto\">, we\u00a0alert the user that there has been a change in the process.<\/span><span data-ccp-props=\"{\"><br \/>\n<\/span><\/p>\n<p><img decoding=\"async\" style=\"width: 304px; margin-left: auto; margin-right: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/Capture3.png\" alt=\"Capture3\" width=\"304\" \/><\/p>\n<p><span data-contrast=\"auto\">Below is a visual representation of CUSUM in the increasing direction, with a threshold of 4 and 5 (<span style=\"font-weight: bold;\">S<sub>H<\/sub><\/span><\/span><span data-contrast=\"auto\">\u00a0in this case is\u00a0the variable we are referring to as\u00a0<span style=\"font-weight: bold;\">T<\/span>).<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<h3 style=\"text-align: center;\"><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-07-26-28-62-PM.png\" \/><\/span><\/h3>\n<p><span style=\"color: #007cba;\"><span style=\"font-size: 14px;\"><i>Source. <\/i><\/span><\/span><\/p>\n<p>Azure Stream Analytics &amp; Power BI Streaming Datasets<\/p>\n<h2><span style=\"color: #007cba;\"><span style=\"font-weight: normal;\">\u00a0<\/span><strong><br \/>\n<\/strong><\/span><\/h2>\n<p><span style=\"color: #36363e;\"><span style=\"background-color: transparent;\"><span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/blog\/keep-your-eye-on-the-ball-with-azure-stream-analytics\" rel=\"noopener\">Azure Stream Analytics<\/a><\/span> is a real-time analytics platform <\/span><span style=\"background-color: transparent;\">designed<\/span><span style=\"background-color: transparent;\">\u00a0to analyze and process large volumes of streaming data from multiple sources simultaneously. The image below <\/span><span style=\"background-color: transparent;\">highlights<\/span><span style=\"background-color: transparent;\">\u00a0a variety of streaming architecture patterns possible in Azure Stream Analytics.<\/span><\/span><\/p>\n<p><span style=\"background-color: transparent;\"><span lang=\"EN-US\" data-contrast=\"auto\"><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-07-28-47-68-PM.png\" \/><\/span><\/span><\/span><\/p>\n<p>For this demo, we will be using Azure Stream Analytics to process\u00a0temperature data using CUSUM, and feed the results\u00a0to\u00a0a\u00a0Power BI\u00a0Report. From there,\u00a0we will demonstrate how to configure data alerts to\u00a0notify\u00a0users when\u00a0the\u00a0process changes\u00a0based on\u00a0a threshold value <span lang=\"EN-US\" style=\"font-weight: bold;\" data-contrast=\"auto\">T<\/span><span lang=\"EN-US\" style=\"font-weight: normal;\" data-contrast=\"auto\">, <\/span><span lang=\"EN-US\" data-contrast=\"auto\">and\u00a0to\u00a0email\u00a0a\u00a0notification\u00a0to them.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #000000;\">Setting Up the Azure Environment<\/span><\/h3>\n<p><span data-contrast=\"auto\">Following this\u00a0<\/span><span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/stream-analytics\/stream-analytics-real-time-fraud-detection\">guide<\/a><\/span><span data-contrast=\"auto\">, we will set up\u00a0the following resources\u00a0beforehand. It is recommended to create a test resource group\/environment\u00a0before proceeding.<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">Azure Event Hubs Namespace<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/li>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">Azure Event Hub<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/li>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">Azure Stream Analytics Job<\/span><\/li>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">(Optional) Python Jupyter Notebook to send data into the event hub<\/span>\n<ul>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">Must have the \u201cazure-eventhub\u201d package installed to send events to Stream Analytics<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span lang=\"EN-US\" data-contrast=\"auto\"><span style=\"font-weight: normal;\"><span style=\"background-color: transparent;\"><span lang=\"EN-US\" style=\"font-weight: bold;\" data-contrast=\"auto\">Create Event Hub Namespace. Choose the basic subscription<br \/>\n<\/span><\/span><\/span><\/span><br \/>\n<span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 750px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-07-39-44-07-PM.png\" alt=\"A screenshot of a computer Description automatically generated with medium confidence\" width=\"750\" \/><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: normal;\"><span style=\"background-color: transparent;\"><span lang=\"EN-US\" style=\"font-weight: bold;\" data-contrast=\"auto\">Within the Namespace, Create the EventHub<\/span><\/span><\/span><\/p>\n<p><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 750px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-07-41-32-65-PM.png\" alt=\"A screenshot of a computer Description automatically generated with medium confidence\" width=\"750\" \/><\/span><\/p>\n<p><span style=\"font-weight: normal; font-size: 17px;\">From here you will need to create a <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/blog\/sas-enterprise-guide-vs.-microsoft-azure-machine-learning\" rel=\"noopener\">SAS<\/a><\/span> policy and get the connection strings for your application to send data to the event hub.<\/span><\/p>\n<p><span style=\"font-weight: normal;\"><span style=\"background-color: transparent;\"><span lang=\"EN-US\" style=\"font-weight: bold;\" data-contrast=\"auto\">Create an Azure Stream Analytics Job<\/span><\/span><\/span><span data-ccp-props=\"{\"><br \/>\n<\/span><\/p>\n<p><span data-ccp-props=\"{\"><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 500px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-07-44-58-85-PM.png\" alt=\"Graphical user interface, text, application Description automatically generated\" width=\"500\" \/><\/span><\/span><\/p>\n<p><span data-contrast=\"auto\">From here, you can follow the instructions to set up the input stream\u00a0and output stream\u00a0in th<span style=\"font-weight: normal;\">e\u00a0<\/span><\/span><span style=\"font-weight: normal;\">Topology Section of the Resource. In the output stream, we will be using &#8220;My Workspace&#8221; <\/span><span data-contrast=\"auto\"><span style=\"font-weight: normal;\">as the destinatio<\/span>n when connecting to Power BI.<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">There are multiple ways to send data into the event hub once you have the SAS key. For this example, we\u2019ve created a Python Jupyter Notebook to simulate temperature data being sent by a device\/system to the event hub. It will be a simple JSON output that looks like the following. At some point in the event stream process, we will start to increase the random reading by 20 to 40 degrees Fahrenheit to simulate the process going out of control<\/span><span data-ccp-props=\"{\">.<\/span><\/p>\n<p style=\"text-align: center;\"><strong><span data-contrast=\"auto\">&#8220;{&#8221; + &#8220;temperature:&#8221; + str(random_reading) + &#8220;}&#8221;<\/span><\/strong><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<p><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 750px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-07-47-53-43-PM.png\" width=\"750\" \/><\/span><\/p>\n<p><span lang=\"EN-US\" data-contrast=\"auto\"><span style=\"font-weight: normal;\"><span style=\"background-color: transparent;\"><span lang=\"EN-US\" style=\"font-weight: bold;\" data-contrast=\"auto\">Setting up the Stream Analytics Query\/Job to Output Dataset<\/span><\/span><\/span><span style=\"color: #000000;\"><br \/>\n<\/span><\/span><span data-contrast=\"auto\">We now need to process the data in the event hub. We can do this by going to the query section of Azure Stream Analytics, and creating the query to aggregate our streaming data.<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">At a high level, the query does the following:<\/span><\/p>\n<ul>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">It will aggregate the total CUSUM for a given 30 second window (we chose 87.5 degrees, as it&#8217;s the average value between 85 and 90 in the reading we send), any differences that are negative will be zeroed out<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/li>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">Add the windowed result set into the dataset in Power BI<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/li>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">We use a tumbling window to append the data\u00a0into the dataset<\/span><span data-ccp-props=\"{\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-ccp-props=\"{\"><span lang=\"EN-US\" data-contrast=\"auto\"><span style=\"font-weight: normal;\"><span style=\"background-color: transparent;\"><span lang=\"EN-US\" style=\"font-weight: bold;\" data-contrast=\"auto\"><br \/>\nRun the Job and Script to Start Streaming Process<br \/>\n<\/span><span lang=\"EN-US\" style=\"font-weight: normal;\" data-contrast=\"auto\">O<\/span><\/span><\/span><\/span><\/span><span data-contrast=\"auto\"><span lang=\"EN-US\" data-contrast=\"auto\"><span style=\"font-weight: normal;\">n<\/span>ce ready, we can run all the notebook cells and kickoff the stream analytics job. This will create a streaming dataset in the \u201cMy Workspace\u201d area of the Power BI Online Service:<\/span><br \/>\n<span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 650px; margin-left: auto; margin-right: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-08-11-31-42-PM.png\" width=\"650\" \/><\/span><\/span><\/p>\n<p><span style=\"font-weight: bold;\">C<\/span><span style=\"font-weight: bold;\">reate Card Visual and Publish the Report<\/span><br \/>\nNow, we can open Power BI Desktop and create a <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/blog\/3-helpful-power-bi-features-you-might-not-be-using\" rel=\"noopener\">Card Visual<\/a><\/span> from the Streaming Dataset. We can do this by importing a Power BI Dataset, and connecting to our streaming dataset: <span data-ccp-props=\"{\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{\"><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 750px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-08-11-00-50-PM.png\" width=\"750\" \/><span id=\"tcOverlay\"><\/span><\/span><\/span><\/p>\n<p><span data-contrast=\"auto\">From there, we create a measure using a simple <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/blog\/how-to-improve-power-bi-performance-part-three\" rel=\"noopener\">DAX<\/a><\/span> <span style=\"font-weight: bold;\">CALCULATE()<\/span> function to get the latest value from our streaming dataset to display in the KPI card:<\/span><\/p>\n<p><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 750px; margin-left: auto; margin-right: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-08-10-09-67-PM.png\" width=\"750\" \/><\/span><br \/>\n<span style=\"font-weight: bold;\"><br \/>\nPublish the Report a<\/span><span style=\"font-weight: bold;\">nd Create a Dashboard<br \/>\n<\/span><span data-ccp-props=\"{\"><span lang=\"EN-US\" data-contrast=\"auto\">After publishing our report back to the Power BI Online Service, we can create a <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/power-bi-dashboard-in-a-day\" rel=\"noopener\">dashboard<\/a><\/span> there on which to pin the card. In this example, we\u2019ll call our dashboard \u201cStreaming Dashboard.\u201d<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 350px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-08-16-45-93-PM.png\" alt=\"Graphical user interface, application Description automatically generated\" width=\"350\" \/><\/span><\/p>\n<p><span data-contrast=\"auto\">We then navigate to our newly published report in the Service and click on the \u201cpin\u201d icon to <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/blog\/power-bi-gets-personal-easy-data-exploration-for-any-viewer\" rel=\"noopener\">pin the card<\/a><\/span> in the report to our dashboard.<\/span><\/p>\n<p><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 748750px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-08-18-01-71-PM.png\" width=\"748750\" \/><span id=\"tcOverlay\"><\/span><\/span><\/p>\n<p><span data-contrast=\"auto\">When prompted, we\u2019ll select \u201cStreaming Dashboard\u201d as the destination for our pinned visual.<br \/>\n<span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 750px; margin-left: auto; margin-right: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-08-19-15-38-PM.png\" alt=\"Graphical user interface, application Description automatically generated\" width=\"750\" \/><\/span><\/span><\/p>\n<p><span style=\"font-weight: bold;\">Configure<\/span> <span style=\"font-weight: bold;\">Data Alerts &amp; High-threshold Values Notifications in the Power BI Dashboard <\/span><span lang=\"EN-US\" data-contrast=\"auto\">Finally, we can set a <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/regional-water-distribution-system-enables-real-time-analytics\" rel=\"noopener\">data alert<\/a><\/span>\u00a0for when the value in the card exceeds our\u00a0threshold\u00a0<\/span><span lang=\"EN-US\" style=\"font-weight: bold;\" data-contrast=\"auto\">T<\/span><span lang=\"EN-US\" data-contrast=\"auto\">. In this example,\u00a0we set<span style=\"font-weight: bold;\">\u00a0<\/span><\/span><span lang=\"EN-US\" data-contrast=\"auto\"><span style=\"font-weight: bold;\">T<\/span>\u00a0<\/span><span lang=\"EN-US\" data-contrast=\"auto\">to be\u00a0one hundred.\u00a0If the\u00a0CUSUM\u00a0data stream exceeds\u00a0one hundred\u00a0within a 30 second interval,\u00a0we\u2019ll get\u00a0an email from\u00a0Power BI, like\u00a0the one\u00a0shown below, to alert us that the process could have potentially changed.\u00a0We also have the option to <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/blog\/microsofts-power-platform-enables-deep-analysis-and-easy-insight\" rel=\"noopener\">set notifications<\/a><\/span> to every hour,\u00a0or once within the\u00a024-hour\u00a0window.<\/span><\/p>\n<p><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 350px;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-08-25-18-94-PM.png\" alt=\"Graphical user interface, text, application Description automatically generated\" width=\"350\" \/><\/span><\/p>\n<p><span role=\"presentation\" contenteditable=\"false\"><img decoding=\"async\" style=\"width: 750px; margin-left: auto; margin-right: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/undefined-Oct-18-2021-08-26-41-82-PM.png\" alt=\"Graphical user interface, text, application Description automatically generated\" width=\"750\" \/><\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #007cba;\">In Conclusion<br \/>\n<\/span><\/h3>\n<p><span lang=\"EN-US\" data-contrast=\"auto\">If you\u00a0got\u00a0this far, congratulations!\u00a0You have\u00a0now\u00a0created a workflow to monitor\u00a0the temperature of a device\u00a0in real time,\u00a0and you\u2019ve\u00a0used CUSUM to alert you\u00a0if a device or process\u00a0is out of control. In applications where time to action is critical, this sample solution provides a way for individuals to\u00a0take\u00a0quick and deci<\/span><span lang=\"EN-US\" data-contrast=\"auto\">sive <\/span><span lang=\"EN-US\" data-contrast=\"auto\">preventative actions.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span lang=\"EN-US\" data-contrast=\"auto\"><span style=\"color: #000000;\">Additional Considerations:<\/span><\/span><\/h3>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">There is no hard, fast value for determining a threshold value for <\/span><strong><span data-contrast=\"auto\">T<\/span><\/strong><span data-contrast=\"auto\">. This is something that will need to be determined through reviewing with business stakeholders and through initial exploratory data analysis of past maintenance issues<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">We can manipulate\u00a0and extend\u00a0<\/span><strong><i><span data-contrast=\"auto\">mu<\/span><\/i><\/strong><span data-contrast=\"auto\">, the expected value of the process, to account for cyclical and waveform processes<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">You can add a\u00a0<\/span><strong><span data-contrast=\"auto\">C\u00a0<\/span><\/strong><span data-contrast=\"auto\">parameter in the model to change the sensitivity of detecting changes over time.\u00a0We can modify the equations as follows with the\u00a0<\/span><strong><span data-contrast=\"auto\">C\u00a0<\/span><\/strong><span data-contrast=\"auto\"><span data-contrast=\"auto\">parameter:<\/span><\/span><img decoding=\"async\" style=\"margin-left: auto; margin-right: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/10\/image-png-Oct-18-2021-08-30-23-34-PM.png\" \/><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">This approach looked at monitoring values as they increase, but you can also replicate this process to monitor decreases<\/span><span data-ccp-props=\"{\"><br \/>\n<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Combining this approach with <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/blog\/using-an-event-study-for-causal-analysis-in-power-bi\" rel=\"noopener\">hypothesis testing and modeling<\/a><\/span> can lead to powerful solutions, proactive decision making, and fewer device maintenance issues<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Azure Stream Analytics also provides tools for <span style=\"color: #007cba;\"><a style=\"color: #007cba;\" href=\"\/blog\/time-series-forecasting-with-azure-analytic-services\" rel=\"noopener\">anomaly detection<\/a><\/span>, and users can leverage those options, as well as the methodology presented here as options to scale your process to meet your needs<\/span><\/li>\n<\/ul>\n<h4><span style=\"color: #007cba;\">We Can Help!<\/span><\/h4>\n<p>Our data experts can help you learn more about change detection and workflows to show how these tools can greatly improve your overall business outcomes. <a href=\"\/get-started\/\">Contact 3Cloud today<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How can we monitor parts for maintenance before they break down with the agility required to keep up with the monitoring demands of increasingly time-sensitive initiatives, while also improving the timeliness and responsiveness of being able to perform predictive maintenance? Enter Cumulative Sum control charts with Azure Stream Analytics and Power BI.<\/p>\n","protected":false},"author":21,"featured_media":12400,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[260],"tags":[303,304],"class_list":["post-15658","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ai","tag-modern-analytics","tag-modern-data-platform","topics-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts\/15658","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/comments?post=15658"}],"version-history":[{"count":0,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts\/15658\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/media\/12400"}],"wp:attachment":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/media?parent=15658"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/categories?post=15658"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/tags?post=15658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}