From 3db74514bda06e081e013430bd6787ebceb51b79 Mon Sep 17 00:00:00 2001 From: Trent Date: Mon, 24 Feb 2025 15:17:41 +0000 Subject: [PATCH 1/6] Event anomaly detection solution accelerator --- .../images/anomaly-detection.png | Bin 0 -> 99595 bytes .../event-anomaly-detection/introduction.md | 44 ++++++++++++++++++ tutorials/event-anomaly-detection/meta.json | 5 ++ 3 files changed, 49 insertions(+) create mode 100644 tutorials/event-anomaly-detection/images/anomaly-detection.png create mode 100644 tutorials/event-anomaly-detection/introduction.md create mode 100644 tutorials/event-anomaly-detection/meta.json diff --git a/tutorials/event-anomaly-detection/images/anomaly-detection.png b/tutorials/event-anomaly-detection/images/anomaly-detection.png new file mode 100644 index 0000000000000000000000000000000000000000..e60b4bad7ac73a8df9a681bc81edcc0019acf52f GIT binary patch literal 99595 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 AzW@LL literal 0 HcmV?d00001 diff --git a/tutorials/event-anomaly-detection/introduction.md b/tutorials/event-anomaly-detection/introduction.md new file mode 100644 index 0000000000..4c5751f685 --- /dev/null +++ b/tutorials/event-anomaly-detection/introduction.md @@ -0,0 +1,44 @@ +--- +position: 1 +title: Event Anomaly Detection +--- + +Welcome to the **Anomaly Detection** solution accelerator. + +This accelerator provides an introduction to detecting anomalies in Snowplow event data, specifically within **BigQuery** on **Google Cloud Platform (GCP)**. The focus is on identifying anomalies in a **time series dataset**, using event volume data stored in BigQuery. This can help detect potential tracking issues or sudden increases in failed events. + +This guide walks you through the steps required to: +- Load Snowplow event data into **BigQuery** +- Train an **ARIMA+** model for time series anomaly detection +- Identify statistically significant drops in event counts +- Visualize anomalies using **matplotlib** and **seaborn** + +![Application Output](images/anomaly-detection.png) + +## Requirements + +To use this accelerator, you need: +- **Access to a GCP project** (including the project ID) +- **BigQuery permissions** (read, write, and query access) +- *A Snowplow pipeline is not required*, as sample data is provided. + +This accelerator typically takes around **30 minutes** to complete. The notebook requires minimal computational resources with the provided sample dataset. + +## Get started + +This accelerator is available on **GitHub**: +- [GitHub repository](https://github.com/snowplow-industry-solutions/event-volume-anomaly-detection) + +You can clone this repository and run it locally on your PC or import it into a [Google Colab notebook](https://colab.research.google.com/). + +## Next steps + +Once you've completed this accelerator, you can: +- Adapt the model to detect anomalies in your own Snowplow event data +- Fine-tune the confidence threshold to reduce false positives +- Expand into detecting other types of anomalies such as missing properties or bot traffic + +By leveraging Snowplow’s granular event data, you can proactively monitor data quality. + +Ready to get started? [Jump into the notebook](https://github.com/snowplow-industry-solutions/event-volume-anomaly-detection/blob/main/anomaly_detection.ipynb) and start detecting anomalies! + diff --git a/tutorials/event-anomaly-detection/meta.json b/tutorials/event-anomaly-detection/meta.json new file mode 100644 index 0000000000..a70c74a67e --- /dev/null +++ b/tutorials/event-anomaly-detection/meta.json @@ -0,0 +1,5 @@ +{ + "title": "Event Anomaly Detection", + "label": "Solution accelerator", + "description": "How to build a real-time event anomaly detection system using Snowplow and BigQuery" +} From fabedb891de3642ea88bafddb3936b38bfa65af9 Mon Sep 17 00:00:00 2001 From: Trent Date: Mon, 24 Feb 2025 15:20:28 +0000 Subject: [PATCH 2/6] fixed broken link --- tutorials/event-anomaly-detection/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/event-anomaly-detection/introduction.md b/tutorials/event-anomaly-detection/introduction.md index 4c5751f685..c4b282c35b 100644 --- a/tutorials/event-anomaly-detection/introduction.md +++ b/tutorials/event-anomaly-detection/introduction.md @@ -40,5 +40,5 @@ Once you've completed this accelerator, you can: By leveraging Snowplow’s granular event data, you can proactively monitor data quality. -Ready to get started? [Jump into the notebook](https://github.com/snowplow-industry-solutions/event-volume-anomaly-detection/blob/main/anomaly_detection.ipynb) and start detecting anomalies! +Ready to get started? [Jump into the notebook](https://github.com/snowplow-industry-solutions/event-volume-anomaly-detection/tree/main/notebooks) and start detecting anomalies! From 0e18f3f8d5ebbb5d11a12d52f43b05949cab800f Mon Sep 17 00:00:00 2001 From: Trent Date: Mon, 24 Feb 2025 16:13:10 +0000 Subject: [PATCH 3/6] update to focus on event volumes --- tutorials/event-anomaly-detection/introduction.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tutorials/event-anomaly-detection/introduction.md b/tutorials/event-anomaly-detection/introduction.md index c4b282c35b..75887c8478 100644 --- a/tutorials/event-anomaly-detection/introduction.md +++ b/tutorials/event-anomaly-detection/introduction.md @@ -1,16 +1,16 @@ --- position: 1 -title: Event Anomaly Detection +title: Event Volume Anomaly Detection --- -Welcome to the **Anomaly Detection** solution accelerator. +Welcome to the **Event Volume Anomaly Detection** solution accelerator. -This accelerator provides an introduction to detecting anomalies in Snowplow event data, specifically within **BigQuery** on **Google Cloud Platform (GCP)**. The focus is on identifying anomalies in a **time series dataset**, using event volume data stored in BigQuery. This can help detect potential tracking issues or sudden increases in failed events. +This accelerator provides an introduction to detecting anomalies in Snowplow event volumes, specifically within **BigQuery** on **Google Cloud Platform (GCP)**. The focus is on identifying anomalies in **event volume data**, using data stored in BigQuery. This can help detect potential tracking issues or sudden increases in failed events by monitoring event volume trends. This guide walks you through the steps required to: - Load Snowplow event data into **BigQuery** - Train an **ARIMA+** model for time series anomaly detection -- Identify statistically significant drops in event counts +- Identify statistically significant drops or spikes in event volumes - Visualize anomalies using **matplotlib** and **seaborn** ![Application Output](images/anomaly-detection.png) @@ -34,7 +34,7 @@ You can clone this repository and run it locally on your PC or import it into a ## Next steps Once you've completed this accelerator, you can: -- Adapt the model to detect anomalies in your own Snowplow event data +- Adapt the model to detect other anomalies in your own Snowplow event data - Fine-tune the confidence threshold to reduce false positives - Expand into detecting other types of anomalies such as missing properties or bot traffic From 88d47470069e4a292bad59ef0faace71e4e620ac Mon Sep 17 00:00:00 2001 From: Trent Date: Mon, 24 Feb 2025 16:34:40 +0000 Subject: [PATCH 4/6] update to focus on event volumes --- tutorials/event-anomaly-detection/meta.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/event-anomaly-detection/meta.json b/tutorials/event-anomaly-detection/meta.json index a70c74a67e..0a90ef77aa 100644 --- a/tutorials/event-anomaly-detection/meta.json +++ b/tutorials/event-anomaly-detection/meta.json @@ -1,5 +1,5 @@ { - "title": "Event Anomaly Detection", + "title": "Event Volume Anomaly Detection", "label": "Solution accelerator", - "description": "How to build a real-time event anomaly detection system using Snowplow and BigQuery" + "description": "How to build a real-time event volume anomaly detection system using Snowplow and BigQuery" } From 09b07893f51e8e2d824735bd18901c709695ffe7 Mon Sep 17 00:00:00 2001 From: Trent Date: Mon, 24 Feb 2025 18:21:03 +0000 Subject: [PATCH 5/6] renamed folder --- .../images/anomaly-detection.png | Bin .../introduction.md | 0 .../meta.json | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename tutorials/{event-anomaly-detection => event-volume-anomaly-detection}/images/anomaly-detection.png (100%) rename tutorials/{event-anomaly-detection => event-volume-anomaly-detection}/introduction.md (100%) rename tutorials/{event-anomaly-detection => event-volume-anomaly-detection}/meta.json (100%) diff --git a/tutorials/event-anomaly-detection/images/anomaly-detection.png b/tutorials/event-volume-anomaly-detection/images/anomaly-detection.png similarity index 100% rename from tutorials/event-anomaly-detection/images/anomaly-detection.png rename to tutorials/event-volume-anomaly-detection/images/anomaly-detection.png diff --git a/tutorials/event-anomaly-detection/introduction.md b/tutorials/event-volume-anomaly-detection/introduction.md similarity index 100% rename from tutorials/event-anomaly-detection/introduction.md rename to tutorials/event-volume-anomaly-detection/introduction.md diff --git a/tutorials/event-anomaly-detection/meta.json b/tutorials/event-volume-anomaly-detection/meta.json similarity index 100% rename from tutorials/event-anomaly-detection/meta.json rename to tutorials/event-volume-anomaly-detection/meta.json From adaf794f6bb2ce0e5d47f00ee1b42afdd0949011 Mon Sep 17 00:00:00 2001 From: Trent Date: Mon, 3 Mar 2025 10:31:35 +0000 Subject: [PATCH 6/6] updated links to point to notebook directly --- tutorials/event-volume-anomaly-detection/introduction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/event-volume-anomaly-detection/introduction.md b/tutorials/event-volume-anomaly-detection/introduction.md index 75887c8478..b6de1b4205 100644 --- a/tutorials/event-volume-anomaly-detection/introduction.md +++ b/tutorials/event-volume-anomaly-detection/introduction.md @@ -27,7 +27,7 @@ This accelerator typically takes around **30 minutes** to complete. The notebook ## Get started This accelerator is available on **GitHub**: -- [GitHub repository](https://github.com/snowplow-industry-solutions/event-volume-anomaly-detection) +- [GitHub repository](https://github.com/snowplow-industry-solutions/event-volume-anomaly-detection/blob/main/notebooks/bigquery/anomaly_detection.ipynb) You can clone this repository and run it locally on your PC or import it into a [Google Colab notebook](https://colab.research.google.com/). @@ -40,5 +40,5 @@ Once you've completed this accelerator, you can: By leveraging Snowplow’s granular event data, you can proactively monitor data quality. -Ready to get started? [Jump into the notebook](https://github.com/snowplow-industry-solutions/event-volume-anomaly-detection/tree/main/notebooks) and start detecting anomalies! +Ready to get started? [Jump into the notebook](https://github.com/snowplow-industry-solutions/event-volume-anomaly-detection/blob/main/notebooks/bigquery/anomaly_detection.ipynb) and start detecting anomalies!