On this page

Pipeline Overview

Understand what we're running on your warehouse

This page gives a high-level overview of the pipeline Statsig Warehouse Native runs on your warehouse.

Main steps

The main steps in the pipeline are:

  • Identifying users' first exposures
  • Annotating Metric Sources with exposure data
  • Creating metric-user-day level staging data
  • Running intermediate rollups for better performance
  • Calculating group-level summary Statistics

Pipeline View

Types of DAGs

Statsig lets you run your pipeline in a few different ways:

  • A Full Refresh totally restates the experiment's data and calculates it from scratch. This is useful for starting an experiment, or if underlying data has changed
  • An Incremental Refresh appends new data to your experiment data. This reduces the cost of running scheduled updates to your results
  • A Metric refresh allows you to update a specific metric in case you changed a definition, or want to add new metrics to your analysis

Artifacts and entity relationships

Statsig generates and stores the following tables in your warehouse per-experiment. You have full access to these data sources for your own analysis, models, or visualizations. For experiments, experiment_id is the name of the experiment; for Feature Gates, experiment_id is the name of the gate along with the specific rule ID (for example, chatbot_llm_model_switch_31e9jwlgO1bSSznKntb2gp_exposures_summary)

This is not an exhaustive list, but it includes most of the core result and staging tables useful for your own analysis.

These are internal tables and will change as the product evolves. Changes will be documented here.

The high-level relationships and contents of these tables appear in the entity relationship diagram below. Refer to the Main steps diagram above for scheduling details.

WHN ER Diagram

Other jobs

Alongside and inside this main flow, Statsig also:

  • Run Health Checks and a Summary View for exposures
  • Calculate top dimensions for dimensional metrics
  • Calculate funnel steps
  • Run CUPED and Winsorization procedures during the group-level summaries to reduce variance and outlier influence
  • Calculate inputs to the Delta Method to avoid bias on Ratio and Mean metrics

Statsig generates experiment-level tables, making it easy to run follow-up analyses on specific experiments.

Visibility

Select the history icon on your pulse results to see the jobs and IDs Statsig ran for each pulse reload, along with compute time and cost.

This information is also visible in your warehouse's own history and usage management. Having the costs in the console is useful for cross-functional experimentation teams running the analysis.

Exposure export table

Statsig dedupes and records production exposures into the forwarded exposures table configured in your warehouse Data Connection. This table contains each user's first exposure to an experiment. For feature gates, Statsig dedupes and records exposures for partial rollouts (for example, 5% or 50% rollouts, but not 0% or 100% rollouts).

Statsig populates user_dimensions in the daily deduplicated export. Fast-forwarded exposure rows can omit some fields in this object until the next daily load.

Common fields in user_dimensions

user_dimensions contains user attributes captured alongside the first exposure. The exact shape can vary by SDK and project configuration, but these are some of the most common fields you may see:

Additional non-null fields from the SDK user object may also appear in user_dimensions. Custom IDs are typically exported as dedicated top-level columns in the exposure table rather than being queried from this object.

Statsig uses input fields such as deviceOS and systemName to derive the exported os field. If you want to analyze operating system on forwarded exposures, query user_dimensions.os.

Event export table

If you log custom events through a Statsig SDK, Statsig also forwards those events into a configurable table in your warehouse. This is the table used when Warehouse Native customers rely on Statsig SDK logging for outcome events.

  • Use user_object for user fields associated with the event.
  • Use statsig_metadata for SDK and exposure-processing metadata.
  • Use company_metadata for the event metadata payload you logged.

Common fields in user_object

user_object contains user fields associated with the event. It often includes the same common fields as user_dimensions, plus any additional non-null fields sent on the SDK user object.

Common fields in statsig_metadata

statsig_metadata contains SDK-level and exposure-processing metadata associated with the event. These are some of the most common customer-facing fields:

Other SDK debugging and exposure-processing metadata may also appear in statsig_metadata.

What goes in company_metadata

company_metadata stores the metadata payload logged with the event. This object doesn't have a fixed schema and varies based on the event and your SDK usage. Most event-specific business context, such as price, currency, category, plan, screen, route, or nested objects like cart, items, and context, will appear here.

Was this helpful?