Build a crosstab
A Crosstab pivots lab results into a sample-by-analyte table: each row is a sample context, each column is an Analyte, and cells that exceed a screening limit are colored. Use it to read many results at once and spot exceedances across Locations.
- Role required: any signed-in user with view access to the projects or sites you want to analyze. The service intersects your request against your authorized scope.
- Prerequisites: committed Lab Results for the locations and analytes you want to pivot. To color exceedances, you also need a Screening Criteria Set; to control unit conversion and non-detect display, a Data Management Plan (DMP) on the selected projects.
Steps
-
Go to Data Analysis → Crosstab (
/data-analysis/crosstab). The page opens on Pick a project or site, then choose locations and analytes to generate the crosstab. with an Open Filters button. -
Select Open Filters to open the Analysis Filters panel, then set your scope and data in these sections:
Section Field What to enter Scope Scope by → Sites / Projects Use the Scope by toggle to pick your primary axis (Sites by default), then choose one or more below. The other axis appears under Refine to narrow within the scope — it lists only options that share data, so you can't create an empty combination. Only sites/projects with committed lab results are listed. Refine Tasks / Site Areas Optional. Narrow to project tasks or site areas. Data Lab Reports Optional. Restrict to specific Lab Reports. Data Locations Required. Pick one or more locations (columns and rows derive from these). Data Matrices Optional. Restrict to specific Matrices. Data Analytes Required. Pick one or more analytes to pivot into columns. Date Range Start Date / End Date Optional. Filters on the sample date. Locations and Analytes are required (marked with a
*) and start empty — a fresh scope selects nothing, so you choose what to pivot. Pick at least one of each, or use Select all in scope in the Data section header to select all locations and analytes at once. -
Apply a screening set to color exceedances. Under Data, open Screening and select one or more sets. Two checkboxes refine the comparison:
Control Effect Screen all matrices Widens matrix matching so a set's limits apply across matrices. Screen non-detect results Also screens non-detects, against the DMP-preferred limit (detection or reporting limit), or a reported EMPC where it applies. infoOnly Normal and Field Duplicate samples, plus DMP-summed (
Calculated) cells, are screenable. All other sample types — including Split, blanks, and lab QC — are never screened, and lab-QC and tentatively identified compound rows never appear in a crosstab. -
Open the Display section to refine the layout with two checkboxes, both checked by default:
Control Effect Show source rows alongside aggregated duplicates When checked, each synthetic aggregated-duplicate row appears together with the underlying primary and field-duplicate sample rows it was computed from. Clear it to show one reportable row per duplicate cluster. Group analyte columns by analysis method Groups analyte columns under a per-Method band, so an analyte measured by two methods gets its own column per method. Clear it for a flat, analyte-only layout. -
Select Generate. The button enables only once you have a scope, at least one Location, and at least one Analyte selected. The panel closes and the grid renders.
Result
The grid shows one row per sample context — grouped by Project, Site, Location, Sample, sample date, Matrix, and depth interval — and one column per analyte, unit, fraction, and reporting basis — a dry- or lipid-weight result gets its own column, labeled Dry Weight or Lipid Weight, rather than blending into the non-dry column. Location, Sample, Date, and Matrix are visible by default; use the Column Chooser toolbar button to also show Project, Site, Sample Type, Start Depth, End Depth, or Depth Unit.
When you select a screening set, a band spans the top of the grid carrying the full program name (Program — Set) in the set's color. Cells that exceed a screening level are colored by their highest exceedance; a cell that has an applicable criterion but couldn't be compared shows a hatch pattern and the tooltip Couldn't be screened (see the screening note above). Any advisory notices — row truncation, non-detect limit fallback, or a DMP-inconsistency notice when the selected projects do not all share one DMP (different DMPs, or some with a DMP and some without) — appear in a collapsed summary above the grid.
Select a cell to open the result-detail panel for that result. A cell may resolve to a single result, multiple results, a DMP summed (Calculated) result, or an aggregated duplicate. A detected result that reports only an EMPC renders its EMPC value rather than a blank cell, and an exceedance an EMPC drives is flagged distinctly from a firm-detect one.
A qualifier shown in a cell is the result's validated qualifier only; an unvalidated result contributes no qualifier, and a non-detect still reads as one from its < limit or ND notation. To see the raw lab qualifier a laboratory reported, use the Data Explorer, which keeps it in a separate column.
Focus the grid
A Hide filters toggle sits just above the grid, on both the Data Analysis crosstab and a lab report's crosstab. Select it to collapse the page title, the filter summary, and any warnings so the grid fills the full height — useful on a smaller screen, where the panels above can leave little room. Select Show filters to bring them back. The grid stays a fixed height and scrolls internally — wide tables scroll horizontally within the grid — so it doesn't shrink or grow as you change filters.
Export the crosstab
- Select the Export toolbar button.
- Choose Export to XLSX or Export to CSV. The file downloads as
Crosstab_yyyyMMdd(CSV adds.csv).
Both exports honor the grid's current view: an active search, column filter, or sort applies to the export exactly as it does on screen. XLSX paints exceedance cells with the screening colors; CSV includes the identity columns, the screening header rows, and the analyte columns.
Troubleshooting
| Symptom | Cause | Resolution |
|---|---|---|
| Generate stays disabled | No scope, no Location, or no Analyte selected | Select a Project or Site, at least one Location, and at least one Analyte — the panel names the missing item next to the disabled button, or use Select all in scope. |
| A project or site you expected isn't in the Scope list | The scope dropdowns list only projects and sites that have committed lab results | Confirm results have been committed for it; scopes with nothing to pivot are hidden. |
| No results found for the selected criteria. | The filters matched no screenable field results | Widen the date range, locations, or analytes; confirm results are committed for that scope. |
| Cells you expected aren't colored | No screening set applied, or the results aren't Normal/Field Duplicate | Apply a Screening set; remember blanks and lab QC are never screened. |
| Non-detects show no exceedance | Screen non-detect results is off | Check Screen non-detect results to compare non-detects against the DMP-preferred limit. |
| A cell shows a hatch pattern | An applicable criterion couldn't be compared for that cell | Hover for the tooltip and review the screening notice above the grid. |
| Notice: results truncated | The result set hit the row cap | Narrow the filters (fewer locations, analytes, or a shorter date range). |
| DMP rules skipped, with an inconsistency notice | The selected projects don't all share one DMP (different DMPs, or some with a DMP and some without) | Scope to projects that share one DMP so unit conversion and non-detect rules apply. |