π‘ What is a Flexible Table?
A Flexible Table is a configurable data visualization that lets you slice, group, and format clinical trial data. It works similar to a spreadsheet, but is automatically populated with data from Rivia rather than updated manually. This means the table stays up to date as more data is pulled into Rivia. You can configure it by defining columns that represent specific data points, including calculated fields using formulas for added flexibility and insight.
π― Goal
In this guide, you will learn how to use the core functionalities of Flexible Tables to quickly build custom, comprehensive, and insightful tables.
Step 1. Create from scratch a Flexible Table
Inside a dashboard, from the +Add Panel button, click on Flexible Table.
You can then select from one of our templates or Start from Scratch.
Step 2. Add Columns
You can add columns by clicking on the + sign in the header of the table.
This will show you the type of columns you can add. The type determines where column data comes from:
Column Type | Source | Example |
Event Data | A field from a clinical domain (Adverse Event, Laboratory, etc...) | Show Preferred Terms for the adverse events in the data |
Patient Info | Subject demographics | Show the Age of the patients |
Formula | A custom computed expression in spreadsheet-like format | IF(x.properties.value > 100, 'High', 'Low') |
Manual | Manual Data added by the user | Leave a comment in the field |
π‘Pro Tip!
Only Event Data columns determine which records are pulled into the table. Patient Info and Formula columns simply process data that is already there. As a result, if no Record Data columns are selected, Patient Info and Formula columns will not display any data.
Step 3. Add Data to your Column
After selecting your Event Data column, you will enter the column editor. Here, you can define the column name, choose the data domain, and select the property you want to display.
Step 4. Filter your Column
The global table-level filters are accessible at the top of the Flexible Table editor, and allows you to filter out records altogether. Records that do not satisfy the filter will not be pulled into the table at all.
Nevertheless, you can also filter a specific data column using the Data Filter. Column filtering is used to filter out values from the column alone, meaning that cells that don't match the filter will be blanked out, but records might still appear if these satisfy the global table-level filters.
Step 5. Group the Data
With Flexible Tables, you can group records by any property or formula displayed in the columns you created. Records are bucketed by the column's data, such that records with the same data end up in the same group.
After grouping you will see that aggregate values are computed in a group header row. By default, this will show the counts, however you can change the aggregation formula between maximum, average, and many more aggregation methods. This will be possible from the Column Editor > Aggregation.
π‘Pro tip!
You can nest multiple grouping levels to create a hierarchy (e.g., SOC β Preferred Term β individual entries)
Step 6. Segment the Data Columns
Segmentation splits a single column into sub-columns. This is useful when you want to see the same measurement broken out by visit, category, or any other property. This will be possible from the Column Editor > Segmentation.
Step 7. Sort the Table by Column Values
You can sort rows in Flexible Tables by:
Column values - sort the raw or computed cell values (e.g., to see earlier records first).
Aggregate values - sort group headers by their aggregated result (e.g., sort SOC groups by the most frequent).
Multiple sort levels are supported, and are applied in order.
Step 8. Formatting and Display
You can use simple and conditional formatting on your columns to highlight interesting data or to display data in different formats. With format, you can transform:
Display templates: how a value is shown (e.g., display a date in your preferred format or truncate numbers to 2 decimal places). These are configured in the Column settings.
Conditional formatting: apply style rules (bold, color, background) when a condition is met (e.g., value > 100 β red background). These are configured in the Column settings.
Row formatting: apply styles to the rows of the table for better readability (e.g., alternating row colors, different background color for header rows). This is configured from the global Settings button in the top right of the Flexible Table.
Step 9. Formulas
Formulas are a lightweight expression language that allow you to perform custom computation on all of your data in real-time. Just edit one column and explore the formula syntax with our helper.
Step 10. Manual Data Fields
Manual columns are editable, customizable individual fields. You can choose from four different field types:
Text: Freely enter any word or phrase
Checkbox: Mark each field with a check
Rating: Assign a rating from 0β5
Dropdown: Create custom options and select one from a dropdown menu
π Youβre all set!
You can now use our Flexible Tables!
βΉοΈ Appendix: Technical Notes
Given a configuration of columns, the Flexible Table:
Pulls SDTM records according to the Record Data columns
filterFormulaand the global filtersEach record is processed to compile the cells of all columns according to their
dataFormulaandsegmentFormula. This constitutes the record rows.The rows are grouped based on the grouping fields according to their
groupingFormulaand the hierarchy is built, adding the group rows with aggregates that are computed according to theaggregationFormula.Finally, when the records are being pulled to be displayed, we compute the
displayFormatto show the cells.
Formulas are a domain-specific expression language evaluated on the backend. They have access to:
Variables:
x.domain,x.identifier,x.eventId,x.study- event metadatax.properties.*β domain-specific event fields (e.g.,x.properties.LBTEST)x.subject.*β subject demographics (e.g., x.subject.age, x.subject.sex)col['columnId'],agg['columnId']- reference other columns' values or aggregates (for view filters, display templates)
Functions:
Logical:
IF()Cohort:
IN_COHORT(),COHORT_COUNT()Set:
IN_SET(),NOT_IN_SET(),CONTAINS_ANY()Transform:
TRUNCATE_DECIMAL(), PARSE_DATE(), RANGE_SPLIT(), NTH_IN_ORDER()Aggregation:
COUNT(), SUM(), AVG(), MIN(), MAX(), COUNT_UNIQUE(), VARIANCE(), STDDEV()



![Screen Recording 2026-05-06 at 09.01.00.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2355614572/9a81c4a612ac4693dc64a695d049/ezgif-4fd9ef7e7f4c1feb.gif?expires=1778176800&signature=500cb63f19c182c700ced4085daf77e891c7ef99930503914a2537590e7cf613&req=diMiE89%2FmYRYW%2FMW3nq%2BgXcq9%2F6othJvcDsT9g17SlxNqt1NYlxkw0teqzu8%0Arj4CBHkeb%2FjgJm4NYDDgFcVqAPw%3D%0A)
![Screen Recording 2026-03-26 at 15.48.45.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2204422559/6a8d1895c8edec6e9a0a740b5eef/ezgif-57d11448d35a6c0a.gif?expires=1778176800&signature=0ffdebce7ee264a9bec7405d89a7227f2ea1d42e71415f5448eb6f90d113f1cf&req=diInEs18n4RaUPMW3nq%2BgdYD%2FLOhMsr5W4rYRB955su9VVph4jLoBQJ5SbOV%0A4PvxAZhZ5bUpHjpSzyZpYPvT60Q%3D%0A)
![Screen Recording 2026-03-30 at 10.17.41.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2218751708/cef1fb630e7fdba7ac0b7412bad4/ezgif-47082ce00e7e5813.gif?expires=1778176800&signature=0d8a95893e60b290c7b737363f5aa32f4ceca5ad3802fac7e684cb1806ab7da9&req=diImHs57nIZfUfMW3nq%2BgaX0TIiXgpigevS6q%2FJFefB7X3Hu6E%2B1A23o8c5R%0AUoxo8XCGp7AYQqd%2FR6klAqIiXfk%3D%0A)
![Screen Recording 2026-03-27 at 09.17.32.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2207469960/914b5747bed5fed498cf2e48454a/ezgif-6ba78919d7624203.gif?expires=1778176800&signature=a3c62b593c8d8881ffd59ae359131fe6cd056e48cc75c045ab0daecbd4d9d9c4&req=diInEc14lIhZWfMW3nq%2BgVOvSjckI3Cnw2iYlvlrdd2Lmc1JRTqqjUkG9%2BQv%0AyCXCSOptHId%2Bbpj4mId7Kbv7u38%3D%0A)
![Screen Recording 2026-03-27 at 09.39.17.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2207517886/0d85a5d8d7cdad6ed23b94c6b0da/ezgif-6510f989663a4e68.gif?expires=1778176800&signature=b169e5504e35110c9a994144e29ce44c648e8c1814058b1231f9c146f3fdbb61&req=diInEcx%2FmolXX%2FMW3nq%2BgR2scwx698NoL73h00F2tesHg8RDe3aqyFlnlXPq%0AMwCuYHlLhn93AgI1TvIcFpEfRoQ%3D%0A)
![Screen Recording 2026-03-27 at 09.46.34.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2207533231/33aac3a2cf31d9cb7214b599194a/ezgif-6e8c903ae5dd8bc6.gif?expires=1778176800&signature=d5414e17a8c1e7b1916ae9a8cb13910ccfd2d1b4f25a94a315f14c5d0f58fc09&req=diInEcx9noNcWPMW3nq%2BgT6Q9hEUTCUBQOLSAGWmeam%2BFFFEIR8tTkc02FoA%0AXz33Ksh2wLYK%2Bze2xpuXTi%2BdoWU%3D%0A)
![Screen Recording 2026-03-27 at 09.52.54.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2207553604/1f5fd97076f1790319e674b96ddf/ezgif-16316281775606ae.gif?expires=1778176800&signature=a19fd4899dd665404d6bfae1be0887b62a9b88dc4ed3262cb2314ca9e5093004&req=diInEcx7nodfXfMW3nq%2BgSlkG5XiIscepHxhS%2B6dV1TPZ4H%2FO4yVU54j5tjq%0AnQ17A3%2FIV2f8jLO5Qq%2FwHgfX7cQ%3D%0A)
![Screen Recording 2026-03-27 at 09.58.23.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2207578306/b379b090e45c806a27468714fb35/ezgif-8af3ab6b3eb8f719.gif?expires=1778176800&signature=e811db7155115f73341e5828f88dfd2e1a024d0332afe98b4150c26a75d5e3b9&req=diInEcx5lYJfX%2FMW3nq%2BgecLV3RLWlVI%2FnmD7i%2F7CCeyLkqHIQy4mG8%2FLpH%2B%0A4EY4FDtCONRnY8xt%2Fh03xiYSYTw%3D%0A)
![Screen Recording 2026-03-27 at 10.08.50.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2207587956/4d3e6d9870cc77aa47a130099aa7/ezgif-7d496c054df8b393.gif?expires=1778176800&signature=cabb3aba3654429a2635948ecdc7a61251ccae2452a4b0d86d8e00cc9ec05688&req=diInEcx2mohaX%2FMW3nq%2BgR9oewRfMUy4JnIvSax3lpebb20ubiaYm2GaBgT6%0AZ3lWrWQb3sfkeXBz%2BSZGayLDIcY%3D%0A)
![Screen Recording 2026-03-27 at 10.14.09.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2207606546/f8c5572ba6fa13f419747e226ff4/ezgif-1c8c37d4578f1dbe.gif?expires=1778176800&signature=dbdb26cd43a53d297c6209eef0a0a7e40cef740635e744493673b5eb205b175b&req=diInEc9%2Bm4RbX%2FMW3nq%2BgVLTT2usxcLcPKCd3oNK5A%2F7qOOa8U%2B%2BEgEGbIqL%0AccKNJKZUfRg4YH5cnp9NUrvC31c%3D%0A)
![Screen Recording 2026-05-06 at 09.43.49.mov [video-to-gif output image]](https://downloads.intercomcdn.com/i/o/ooxpow58/2355721343/d29b0416d96462d8ba5bd9bb994d/ezgif-4015f3c4592c6b73.gif?expires=1778138100&signature=6c2356320f904cf6fd1484f88b7a3480f6b771c0005d89ba52ea3f91a87c7b92&req=diMiE858nIJbWvMW1HO4zdSl0ag3SN0xJPB1av2qCOXQqhyPgXWPlbHsoFqd%0A%2FEjURNy0p9Of%2FOFl9b0%3D%0A)