Student guide: Data

The Data tab shows the rows behind the chart you are looking at, and Data health: what the app found in the file. Look here whenever a chart surprises you, and before you trust any chart of your own file.

This page also covers the Filters band and getting a file in, because together they decide what the Data tab shows.

1. Getting results in

Choose the source at the top right of the page.

Source What it does Use it when
Demo Loads the bundled example data: three years of duplicates, CRMs and blanks from two laboratories. Learning the app, or checking how a finding should look.
Upload Reads your Excel workbook (.xlsx, .xls) or CSV file, up to 50 MB, laid out as the templates. The app then opens the Overview. Analysing your own project’s QC.

Nothing is sent to a database. The file is read into memory for your session only, and nothing changes it.

The demo data

Sheet Rows Laboratories Covers
Duplicates (Precision) 46,104 ALS (165 despatches), SGS (3 despatches) Returned 16/11/2022 to 10/11/2025; five check stages at ALS.
Standards and blanks (Accuracy, Contamination) 39,919 ALS only (174 despatches) 20 company CRMs (ACA-01 to ACA-24, EXP-1 to EXP-3), about 45 lab standards, one blank (FB).

About 135 analytes, named element_method_units: Cu_MEICP41s_ppm is copper by the ME-ICP41s method in ppm; Cu_MEOG46_pct is the same element by an ore-grade method in percent. They are different analytes to the app, and should be: their precision and detection limits differ.

Preparing your own file

The app expects your database’s export in the layout of the templates. CSV/Excel Templates and SQL Views in the Filters band downloads them: a blank workbook for each QC type, SQL views that extract the data in that layout, and a PDF listing every field.

Duplicates sheet, one row per pair: LABCODE, DESPATCHNO, LABJOBNO, ASSAYNAME, CHECKSTAGE_CK, SENDDATE, RETURNDATE, ASSAYVALUE_OR (the original), ASSAYVALUE_CK (the duplicate), LOWERDETECTION, ORIG_SAMPLE, CHECK_SAMPLE.

Standards and blanks sheet, one row per CRM or blank result: LABCODE, DESPATCHNO, LABJOBNO, ASSAYNAME, STANDARDID, STANDARDTYPE, SENDDATE, RETURNDATE, ASSAYVALUE, STANDARDVALUE (the certified value), STANDARDDEVIATION (the certified SD), LOWERDETECTION, CHECKID.

Rules the app applies when it reads a file:

  • If ASSAYNAME is missing it is built from the element, method and units columns.
  • A column the app needs but can’t find stops the upload: Please upload a valid file using the provided template. Missing column(s): …
  • A workbook with both sheets fills the whole Overview. Select Sheet chooses the sheet the Charts, Data and Statistics tabs use; choosing a QC type picks a sheet that fits, and choosing a sheet switches the QC type to match.
  • Every new upload lands on the Overview, and a notification says what was checked: File checked: · N rows · … with a link to Data health.

How a result is read

Laboratories write results in several ways, and the app reads each the same way everywhere:

Written as Read as Why
<0.2 0.1: half the value (or the value itself, if the Rules say so). The usual database convention for a result below detection.
-0.2 Below detection too: half the row’s detection limit. Some databases write below-detection results as negatives.
>100 100. Above the method’s range; the number is the ceiling.
LNR, IS, NSS or other text Missing. Lost, insufficient or not submitted: there is no result.
0 Missing. A real result of exactly zero is never right; below detection is written as above.

Dates are read day-first (12/11/2025 is 12 November) unless the column shows otherwise, and Excel serial dates are understood. A date after tomorrow is read as missing. Why this matters: every chart orders results by date, and a result the app couldn’t read is a result missing from every check.

2. The Filters: telling the app which results to use

The Filters band sits under the tabs and applies to the Charts, Data and Statistics tabs. On the Overview it is greyed out, because the Overview covers all the data. On a narrow screen it folds to one line; tap it to open it.

QC type

QC type chooses what to look at, and the other filters change with it.

Choice The sheet The sample
Precision Duplicates The same material assayed twice.
Accuracy Standards and blanks, the standards A CRM with a certified value.
Contamination Standards and blanks, the blanks A sample with none of the element in it.

Dates and despatches

Select by chooses Date range or Despatch No.

  • Date range starts on the latest 12 months of the data. If the laboratory you pick has nothing in that range, it moves to that laboratory’s own latest 12 months and tells you.
  • Date to use for data extraction says which date the range applies to: Laboratory return (when the results came back) or Despatch send (when the samples left). Return date is the default, because that is when a laboratory problem shows itself.
  • Despatch N° lists the laboratory’s despatches; choose up to 20. Use it to look at the exact despatches a finding names.

Why a year by default: a QC chart of three years has so many points that a recent change is invisible. The Overview looks at everything; the charts start on the recent past.

Laboratory, suite, analyte, stage and CRM

Control What it does
Laboratory The laboratory whose results are charted. The demo has ALS and SGS.
Analysis Suite The laboratory’s method package. The list starts on the first suite, not on All Suites, so that results from different methods aren’t mixed; choose All Suites when you mean to pool them. Rows with no suite are kept whichever suite you pick.
Analyte The element, method and units. Only analytes with results for the laboratory, stage (or CRM) and dates are listed.
Sample check stage (Precision) The stage the duplicate was taken at: Field Prep Stage, Crushing Stage, Pulverising Stage and so on. Each stage has its own expected precision, so look at one at a time.
CRM type (Accuracy and Contamination) COMPANY_STD (your project’s CRMs), LAB_STD (the laboratory’s own standards) or COMPANY_BLANK. Accuracy starts on the first non-blank type; Contamination on the first blank type.
CRM (Accuracy and Contamination) Which CRM or blank. One at a time, except on the Box and whiskers and Z-Score charts, where you can choose several.

When a filter’s old value isn’t in the newly chosen data, it moves to the first value and tells you: Analyte “X” isn’t in this data for the current filters, so “Y” is shown. Watch for that notification: it means the chart is of a different analyte than you asked for.

Why one suite, one stage, one CRM: each is a different population with its own precision, bias and detection limit. Mixed together, a chart’s control lines are the average of two things and describe neither.

3. Data health: what the app found

The Data health bar at the top of the Data tab summarises the check of the file in one line:

DATA HEALTH · Demo data · 46,104 rows · 2 warnings

Open it to see each finding with its status (Warn or Note), the message, which sheet and group it is in, and a View rows button. Every message says what is odd, why it matters and what to check. For the demo duplicates:

Results below LLD in 12,697 rows: a result under the method’s lower detection limit is uncertain, and is normally reported as <LLD. Check the detection limit and how the lab reported these.

Nothing is dropped. Flagged rows stay in the charts; it is how they are read that the checks are about (section 1).

The checks, and why they exist

Check What it catches Why it matters
Missing values A blank in a key column: lab, despatch, analyte, date, detection limit, check stage or CRM. The row can’t be placed on every chart and check. Usually a gap in the export.
Results written as text, zero results LNR, n/a, 0. Read as missing. A 0 charted as a real result would be a huge relative difference or a wildly low CRM.
Results written as <, > or negative Read as section 1 says. A note, not a warning. So you know the convention applied.
Duplicate pairs with a missing result An original with no check result, or the reverse. The pair can’t give a difference.
Results above the upper detection limit The method’s range was exceeded. Such results read at the limit and aren’t measurements. CRM checks leave them out.
Results below LLD Below the detection limit (blanks excepted). Uncertain, and relative differences there mean nothing.
Dates that couldn’t be read, dates in the future, send after return, dates more than 12 months from the lab’s others Typing and export errors. Every chart orders by date; a wrong date puts the result in the wrong place or drops it.
Detection limits of 0 or less; upper limits of 0 or less Impossible limits. The threshold and the blank limit are multiples of the LLD. An upper limit of 0 is read as none.
CRM standard deviation 0 or less; certified value missing or 0 158 demo rows, e.g. EXP-3, ACA-06, ACA-20, have no SD. Bias is measured in certified SDs; without one the CRM can’t be judged. Check the certificate values in the export.
CRMs with more than one certified value The same CRM certified twice. The app can’t know which value to judge against.
CRMs certified above the upper detection limit 22 demo rows, e.g. ACA-01 for Cu_MEICP41s_ppm. Their results can only read at the limit. The CRM checks leave them out.
Check stages or CRM types the app doesn’t recognise A note. The Overview guesses a stage’s limit from its name; an unknown name gets the general default.
Analytes in two units with similar values Cu in ppm and Cu in percent with medians within a factor of 10. Two units are normal; similar values suggest a wrong unit.
Rows repeated exactly The same result twice. Counted twice everywhere.

View rows opens the rows behind a finding, as written in the file, with the row number in the sheet (the header is row 1) so you can fix them at the source. Download these rows (CSV) saves them; Download every flagged row (CSV) at the foot of the card saves them all. The file is named Analytical Results data health - - - .csv.

Why this comes before the charts: these are errors in the data, not in the laboratory, and they are the usual reason a chart looks wrong. They aren’t tolerances, so the Rules window can’t change them.

4. The table

Under Data health, the title says which sheet you are looking at: Precision Raw Data, Accuracy Raw Data or Contamination Raw Data. The table holds exactly the rows the current chart uses: the laboratory, suite, analyte, stage or CRM and dates from the Filters, after the upper-detection-limit removal if that is ticked. The chart’s Threshold factor is not applied here, so pairs the chart greys out are still listed.

QC type Columns
Precision DESPATCHNO, LABJOBNO, SENDDATE, RETURNDATE, CHECKSTAGE_CK, ASSAYNAME, ORIG_SAMPLE, ASSAYVALUE_OR, CHECK_SAMPLE, ASSAYVALUE_CK, LOWERDETECTION
Accuracy and Contamination DESPATCHNO, LABJOBNO, SENDDATE, RETURNDATE, ASSAYNAME, STANDARDID, CHECKID, ASSAYVALUE, STANDARDVALUE, STANDARDDEVIATION, LOWERDETECTION

Each column has a filter box above it, there is a search box for the whole table, and the page length is 10, 25, 50 or All. The buttons above the table Copy the rows, or download them as CSV, Excel or PDF, or Print them.

Example. With the demo’s defaults (ALS, ACA-Core, Ag_MEICP41s_ppm, Crushing Stage, the latest year) the table has 14 pairs. Row 10 is sample AC033246 at 53.4 ppm against its duplicate AC033247 at 65 ppm: a 20% difference at a high grade, which is why the Scatter chart for these filters shows one pair far from the X = Y line. Sort by ASSAYVALUE_OR to find it.

Why the table matters: a chart shows a point; the table shows which sample it was, in which lab job, on which date. That is what you need to query the laboratory or find the sample in the store.

Exercises

  1. Read the health check. Open the Data tab and the Data health bar on the demo data. How many rows have results below the detection limit, and what does the message tell you to check? Open View rows and note how the app shows the original values.
  2. Follow a filter change. On the Charts tab, change Laboratory to SGS and watch the notifications. Which filters moved to a new value, and why? (SGS has three despatches and a different suite.)
  3. Below detection. In the Rules window, change A result below detection, e.g. <0.2 from Half the value to The value as written. Which rows in the demo would read differently, and which chart would change the most: a Scatter of a high-grade analyte or a blanks chart?
  4. Find a pair. With the defaults, find the pair AC033246 / AC033247 in the table. What is its relative difference, by hand? (MPRD% = (a − b) / ((a + b) / 2) × 100.) Is it inside the Crushing Stage’s 20% limit?
  5. Your own file. Export your project’s duplicates with the SQL view from the templates download, upload the file, and read Data health before anything else. Which checks fire, and which are problems in the export rather than at the laboratory?