---
title: Workers Analytics Engine Changelog
image: https://edgetunnel-b2h.pages.dev/cf-twitter-card.png
---

> Documentation Index  
> Fetch the complete documentation index at: https://edgetunnel-b2h.pages.dev/changelog/llms.txt  
> Use this file to discover all available pages before exploring further. 

[Skip to content](#%5Ftop) 

# Changelog

New updates and improvements at Cloudflare.

[ Subscribe to RSS ](https://edgetunnel-b2h.pages.dev/changelog/rss/index.xml) [ View RSS feeds ](https://edgetunnel-b2h.pages.dev/fundamentals/new-features/available-rss-feeds/) 

Workers Analytics Engine

![hero image](https://edgetunnel-b2h.pages.dev/_astro/hero.CVYJHPAd_26AMqX.svg) 

Jan 07, 2026
1. ### [Workers Analytics Engine SQL now supports filtering using HAVING and LIKE](https://edgetunnel-b2h.pages.dev/changelog/post/2026-01-07-analytics-engine-support-for-like-and-having/)  
[ Workers Analytics Engine ](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/)[ Workers ](https://edgetunnel-b2h.pages.dev/workers/)  
You can now use the `HAVING` clause and `LIKE` pattern matching operators in [Workers Analytics Engine ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/).  
Workers Analytics Engine allows you to ingest and store high-cardinality data at scale and query your data through a simple SQL API.  
#### Filtering using `HAVING`  
The `HAVING` clause complements the `WHERE` clause by enabling you to filter groups based on aggregate values. While `WHERE` filters rows before aggregation, `HAVING` filters groups after aggregation is complete.  
You can use `HAVING` to filter groups where the average exceeds a threshold:  
```sql  
SELECT  
    blob1 AS probe_name,  
    avg(double1) AS average_temp  
FROM temperature_readings  
GROUP BY probe_name  
HAVING average_temp > 10  
```  
You can also filter groups based on aggregates such as the number of items in the group:  
```sql  
SELECT  
    blob1 AS probe_name,  
    count() AS num_readings  
FROM temperature_readings  
GROUP BY probe_name  
HAVING num_readings > 100  
```  
#### Pattern matching using `LIKE`  
The new pattern matching operators enable you to search for strings that match specific patterns using wildcard characters:

  * `LIKE` \- case-sensitive pattern matching
  * `NOT LIKE` \- case-sensitive pattern exclusion
  * `ILIKE` \- case-insensitive pattern matching
  * `NOT ILIKE` \- case-insensitive pattern exclusion  
Pattern matching supports two wildcard characters: `%` (matches zero or more characters) and `_` (matches exactly one character).  
You can match strings starting with a prefix:  
```sql  
SELECT *  
FROM logs  
WHERE blob1 LIKE 'error%'  
```  
You can also match file extensions (case-insensitive):  
```sql  
SELECT *  
FROM requests  
WHERE blob2 ILIKE '%.jpg'  
```  
Another example is excluding strings containing specific text:  
```sql  
SELECT *  
FROM events  
WHERE blob3 NOT ILIKE '%debug%'  
```  
#### Ready to get started?  
Learn more about the [HAVING clause](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/statements/#having-clause) or [pattern matching operators](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/operators/#pattern-matching-operators) in the Workers Analytics Engine SQL reference documentation.

Nov 12, 2025
1. ### [More SQL aggregate, date and time functions available in Workers Analytics Engine](https://edgetunnel-b2h.pages.dev/changelog/post/2025-11-12-analytics-engine-further-sql-enhancements/)  
[ Workers Analytics Engine ](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/)[ Workers ](https://edgetunnel-b2h.pages.dev/workers/)  
You can now perform more powerful queries directly in [Workers Analytics Engine ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/) with a major expansion of our SQL function library.  
Workers Analytics Engine allows you to ingest and store high-cardinality data at scale (such as custom analytics) and query your data through a simple SQL API.  
Today, we've expanded Workers Analytics Engine's SQL capabilities with several new functions:  
[**New aggregate functions:** ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/aggregate-functions/)

  * `countIf()` \- count the number of rows which satisfy a provided condition
  * `sumIf()` \- calculate a sum from rows which satisfy a provided condition
  * `avgIf()` \- calculate an average from rows which satisfy a provided condition  
[**New date and time functions:** ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/date-time-functions/)

  * `toYear()`
  * `toMonth()`
  * `toDayOfMonth()`
  * `toDayOfWeek()`
  * `toHour()`
  * `toMinute()`
  * `toSecond()`
  * `toStartOfYear()`
  * `toStartOfMonth()`
  * `toStartOfWeek()`
  * `toStartOfDay()`
  * `toStartOfHour()`
  * `toStartOfFifteenMinutes()`
  * `toStartOfTenMinutes()`
  * `toStartOfFiveMinutes()`
  * `toStartOfMinute()`
  * `today()`
  * `toYYYYMM()`  
#### Ready to get started?  
Whether you're building usage-based billing systems, customer analytics dashboards, or other custom analytics, these functions let you get the most out of your data. [Get started ](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/get-started/) with Workers Analytics Engine and explore all available functions in our [SQL reference documentation](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/).

Oct 02, 2025
1. ### [Workers Analytics Engine adds supports for new SQL functions](https://edgetunnel-b2h.pages.dev/changelog/post/2025-09-26-analytics-engine-sql-enhancements/)  
[ Workers Analytics Engine ](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/)[ Workers ](https://edgetunnel-b2h.pages.dev/workers/)  
You can now perform more powerful queries directly in [Workers Analytics Engine ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/) with a major expansion of our SQL function library.  
Workers Analytics Engine allows you to ingest and store high-cardinality data at scale (such as custom analytics) and query your data through a simple SQL API.  
Today, we've expanded Workers Analytics Engine's SQL capabilities with several new functions:  
[**New aggregate functions:** ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/aggregate-functions/)

  * `argMin()` \- Returns the value associated with the minimum in a group
  * `argMax()` \- Returns the value associated with the maximum in a group
  * `topK()` \- Returns an array of the most frequent values in a group
  * `topKWeighted()` \- Returns an array of the most frequent values in a group using weights
  * `first_value()` \- Returns the first value in an ordered set of values within a partition
  * `last_value()` \- Returns the last value in an ordered set of values within a partition  
[**New bit functions:** ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/bit-functions/)

  * `bitAnd()` \- Returns the bitwise AND of two expressions
  * `bitCount()` \- Returns the number of bits set to one in the binary representation of a number
  * `bitHammingDistance()` \- Returns the number of bits that differ between two numbers
  * `bitNot()` \- Returns a number with all bits flipped
  * `bitOr()` \- Returns the inclusive bitwise OR of two expressions
  * `bitRotateLeft()` \- Rotates all bits in a number left by specified positions
  * `bitRotateRight()` \- Rotates all bits in a number right by specified positions
  * `bitShiftLeft()` \- Shifts all bits in a number left by specified positions
  * `bitShiftRight()` \- Shifts all bits in a number right by specified positions
  * `bitTest()` \- Returns the value of a specific bit in a number
  * `bitXor()` \- Returns the bitwise exclusive-or of two expressions  
[**New mathematical functions:** ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/mathematical-functions/)

  * `abs()` \- Returns the absolute value of a number
  * `log()` \- Computes the natural logarithm of a number
  * `round()` \- Rounds a number to a specified number of decimal places
  * `ceil()` \- Rounds a number up to the nearest integer
  * `floor()` \- Rounds a number down to the nearest integer
  * `pow()` \- Returns a number raised to the power of another number  
[**New string functions:** ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/string-functions/)

  * `lowerUTF8()` \- Converts a string to lowercase using UTF-8 encoding
  * `upperUTF8()` \- Converts a string to uppercase using UTF-8 encoding  
[**New encoding functions:** ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/encoding-functions/)

  * `hex()` \- Converts a number to its hexadecimal representation
  * `bin()` \- Converts a string to its binary representation  
[**New type conversion functions:** ↗](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/type-conversion-functions/)

  * `toUInt8()` \- Converts any numeric expression, or expression resulting in a string representation of a decimal, into an unsigned 8 bit integer  
#### Ready to get started?  
Whether you're building usage-based billing systems, customer analytics dashboards, or other custom analytics, these functions let you get the most out of your data. [Get started ](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/get-started/) with Workers Analytics Engine and explore all available functions in our [SQL reference documentation](https://edgetunnel-b2h.pages.dev/analytics/analytics-engine/sql-reference/).

```json
{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://edgetunnel-b2h.pages.dev/changelog/product/workers-analytics-engine/#page","headline":"Workers Analytics Engine Changelog | Cloudflare Docs","url":"https://edgetunnel-b2h.pages.dev/changelog/product/workers-analytics-engine/","inLanguage":"en","image":"https://edgetunnel-b2h.pages.dev/cf-twitter-card.png","publisher":{"@type":"Organization","name":"Cloudflare","url":"https://www.cloudflare.com/"},"isPartOf":{"@type":"WebSite","@id":"https://edgetunnel-b2h.pages.dev/#website","name":"Cloudflare Docs","url":"https://edgetunnel-b2h.pages.dev/"}}
```
