# Unit Count (Latest Value) Metrics

## Use cases

Unit count (latest value) metrics flag whether a unit participated on the last observed day, which makes them useful for measuring state. For example, use them to determine whether a test variant has more active subscribers or active users than the control group.

## Calculation

At the unit level, unit count metrics create a 1/0 flag for if they participated on a given day. Statsig carries the flag forward to the current date if data is behind.

At the group level, Statsig calculates the mean as the SUM of the unit-level flags, divided by the count of UNIQUE UNITS exposed to the experiment.

The SQL for this calculation:

```sql expandable
-- Unit Level
SELECT
  unit_id,
  group_id,
  if(passes_filter, 1, 0) as value
FROM (
    SELECT
        source_data.*,
        exposures_data.group_id,
        source_data.date = MAX(source_data.date) over (partition by source_data.unit_id) as is_latest_date
    FROM source_data
    JOIN exposure_data
    ON
      -- Only include users who saw the experiment
      source_data.unit_id = exposure_data.unit_id
      -- Only include data from after the user saw the experiment
      -- In this case exposure_data is already deduped to the "first exposure"
      AND source_data.timestamp >= exposure_data.timestamp
)
WHERE is_latest_date = 1
GROUP BY
  source_data.unit_id,
  exposure_data.group_id;

-- Experiment
SELECT
  group_id,
  COUNT(distinct unit_id) total_units
FROM exposure_data
GROUP BY group_id;

-- Group Level
SELECT
  group_id,
  SUM(value)/SUM(total_units) as mean
FROM unit_data
JOIN group_data
USING (group_id)
GROUP BY group_id;
```

## Options

* Metric Breakdowns: configure Metadata Columns to group results by for dimensional views in pulse results.
* Multi Source: build metrics from multiple metric sources, equivalent to a UNION in SQL. Useful when the same measure exists in sharded or disparate tables.
* Rollup Mode: controls the specific way that Statsig aggregates Unit Count metrics.
