Skip to content

Changelog

New updates and improvements at Cloudflare.

Workers Analytics Engine
hero image
  1. You can now use the HAVING clause and LIKE pattern matching operators in Workers 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:

    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:

    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:

    SELECT *
    FROM logs
    WHERE blob1 LIKE 'error%'

    You can also match file extensions (case-insensitive):

    SELECT *
    FROM requests
    WHERE blob2 ILIKE '%.jpg'

    Another example is excluding strings containing specific text:

    SELECT *
    FROM events
    WHERE blob3 NOT ILIKE '%debug%'

    Ready to get started?

    Learn more about the HAVING clause or pattern matching operators in the Workers Analytics Engine SQL reference documentation.

  1. You can now perform more powerful queries directly in Workers 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:

    • 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:

    • 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 with Workers Analytics Engine and explore all available functions in our SQL reference documentation.

  1. You can now perform more powerful queries directly in Workers 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:

    • 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:

    • 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:

    • 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:

    • lowerUTF8() - Converts a string to lowercase using UTF-8 encoding
    • upperUTF8() - Converts a string to uppercase using UTF-8 encoding

    New encoding functions:

    • hex() - Converts a number to its hexadecimal representation
    • bin() - Converts a string to its binary representation

    New 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 with Workers Analytics Engine and explore all available functions in our SQL reference documentation.