> ## Documentation Index
> Fetch the complete documentation index at: https://cubed3-feat-druid-driver-streaming.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Daily, Weekly, Monthly Active Users (DAU, WAU, MAU)

> We want to know the customer engagement of our store. To do this, we need to use an Active Users metric.

## Use case

We want to know the customer engagement of our store. To do this, we need to use
an [Active Users metric](https://en.wikipedia.org/wiki/Active_users).

## Data modeling

Daily, weekly, and monthly active users are commonly referred to as DAU, WAU,
MAU. To get these metrics, we need to use a rolling time frame to calculate a
daily count of how many users interacted with the product or website in the
prior day, 7 days, or 30 days. Also, we can build other metrics on top of these
basic metrics. For example, the WAU to MAU ratio, which we can add by using
already defined `weekly_active_users` and `monthly_active_users`.

To calculate daily, weekly, or monthly active users we’re going to use the
[`rolling_window`](/reference/data-modeling/measures#rolling_window)
measure parameter.

<CodeGroup>
  ```yaml title="YAML" theme={null}
  cubes:
    - name: active_users
      sql: |
        SELECT user_id, created_at FROM public.orders

      measures:
        - name: monthly_active_users
          type: count_distinct
          sql: user_id
          rolling_window:
            trailing: 30 day
            offset: start

        - name: weekly_active_users
          type: count_distinct
          sql: user_id
          rolling_window:
            trailing: 7 day
            offset: start

        - name: daily_active_users
          type: count_distinct
          sql: user_id
          rolling_window:
            trailing: 1 day
            offset: start

        - name: wau_to_mau
          title: WAU to MAU
          type: number
          sql:
            "1.0 * {weekly_active_users} / NULLIF({monthly_active_users}, 0)"
          format: percent

      dimensions:
        - name: created_at
          type: time
          sql: created_at
  ```

  ```javascript title="JavaScript" theme={null}
  cube(`active_users`, {
    sql: `SELECT user_id, created_at
      FROM public.orders`,

    measures: {
      monthly_active_users: {
        sql: `user_id`,
        type: `count_distinct`,
        rolling_window: {
          trailing: `30 day`,
          offset: `start`
        }
      },

      weekly_active_users: {
        sql: `user_id`,
        type: `count_distinct`,
        rolling_window: {
          trailing: `7 day`,
          offset: `start`
        }
      },

      daily_active_users: {
        sql: `user_id`,
        type: `count_distinct`,
        rolling_window: {
          trailing: `1 day`,
          offset: `start`
        }
      },

      wau_to_mau: {
        title: `WAU to MAU`,
        sql: `1.0 * ${weekly_active_users} / NULLIF(${monthly_active_users}, 0)`,
        type: `number`,
        format: `percent`
      }
    },

    dimensions: {
      created_at: {
        sql: `created_at`,
        type: `time`
      }
    }
  })
  ```
</CodeGroup>

## Result

Query all four measures with a `timeDimensions` date range to get the active
user counts for any given day. For example, for a single day in 2020:

| MAU | WAU | DAU | WAU/MAU |
| --: | --: | --: | ------: |
|  22 |   4 |   0 |  18.18% |
