Skip to content

Assignment Tables

An Assignment Table records who saw which variant of which experiment, and when. Every running experiment in ABetterChoice resolves its exposures, traffic split, and primary-metric joins against an Assignment Table.

Where to find this in the console

Data Management → Tables lists every registered table. Rows where Type is Assignment Table are the ones described on this page. Click a row to open the table's detail page.

Assignment Table detail page showing Experiment Field, Partition Field, and Partition Field Type

Required form fields

Open New Table (or the detail page of an existing Assignment Table). When Table Type is Assignment Table, the form requires:

FieldNotes
Data WarehouseFixed at BigQuery for every project today.
DataSet IDThe BigQuery dataset that holds the source table.
Table IDThe BigQuery table to register; the dropdown is filtered by the chosen DataSet ID.
NameDisplay name in ABetterChoice. Defaults to Table ID.
OwnerDefaults to the current user and cannot be cleared. Add additional owners as needed.
Description (Optional)Free-text.
User ID FieldThe column ABetterChoice uses as the experiment subject identifier. It must match the corresponding column in your fact and user-property tables for joins to work.
Experiment FieldThe column that ties an exposure to a specific experiment (for example, exp_group_id).
Partition FieldThe column ABetterChoice uses to scan exposure data day by day.
Partition Field TypeOne of Date, Timestamp, Datetime. Choose the value that matches how the column actually stores time on the warehouse side.
Event Time Field (Optional)A separate column for the precise event time, when it differs from the partition column.

After all required fields are filled, the Schema panel renders the BigQuery columns with their detected types. Use the Refresh link if you change upstream columns mid-flow.

Partition Field Type options

ABetterChoice supports three partition styles for Assignment Tables:

  • Date — the column stores a calendar day (e.g. BigQuery DATE).
  • Timestamp — the column stores a precise instant (e.g. BigQuery TIMESTAMP).
  • Datetime — the column stores a wall-clock datetime without timezone (e.g. BigQuery DATETIME, or a STRING formatted as YYYY-MM-DD HH:MM:SS).

Pick the type that matches how the column physically stores time. ABetterChoice uses this declaration to write efficient partition-pruning predicates back into BigQuery.

What a real Assignment Table looks like

The Demo project 6666 registers abc_exp_exposure_date_partition as its Assignment Table. The form configuration is:

  • User ID Field = user_id
  • Experiment Field = exp_group_id
  • Partition Field = ds, Partition Field Type = Date

And its schema is short and explicit — exactly what an exposure log needs:

FieldTypeRole
dsdateMapped to Partition Field with Partition Field Type = Date.
user_idstringMapped to User ID Field.
exp_group_idstringMapped to Experiment Field; ties an exposure to a specific experiment group / variant.
exposure_timestringAvailable as Event Time Field if you need event-level precision.

You don't have to match these column names — only the field roles you map in the form. Names are conventions, the role bindings are the contract.

Editing and archiving

The detail page is read-mostly: most fields show their current value and the Update button stays disabled until you actually change something. The only destructive action is Archive from the list page's Actions column. See Table Lifecycle for what Archive does to dependent experiments.