Skip to content

Statistics required-field matrix

Generated from spec/statistics_matrix.py - do not edit by hand. Run just docs to regenerate. SPEC 2.2.3 is the normative table this page mirrors; this page exists so a third-party producer can diff its own emission logic against something checked cell for cell, rather than reconstructing the matrix from prose that can silently move underneath it.

Every classification but unsupported requires eight base fields, listed once here rather than in every row: sql_type, nullable, null_count, null_rate, cardinality, cardinality_ratio, cardinality_method, classification. unsupported requires only the first four - cardinality, cardinality_ratio and cardinality_method are FORBIDDEN on it instead of required, so its row lists its actual required set in full rather than a diff against the base. rows_scanned appears in neither column below - it is conditioned on the file's own scope block, not on a classification.

A field absent from both columns for a classification is a footnoted case: SPEC 2.2.3's own footnotes (marked with a symbol) subtract a required field or add an exception under a stated condition (an all-null column, redaction, a sql_type without day granularity). This page carries only the unconditional rows; read the footnote text in SPEC for the conditional ones.

ClassificationRequired beyond the base 8Forbidden
booleanvalues, values_coveragedistribution, empty_count, frequencies, freshness, length, mean, negative_count, normalized_cardinality, percentiles, quantized_count, range, sum, unrepresentable, zero_count
json-distribution, empty_count, frequencies, freshness, length, mean, negative_count, normalized_cardinality, percentiles, quantized_count, range, redacted, sketch, sum, unrepresentable, values, values_coverage, values_coverage_method, zero_count
foreign_key_candidatedistribution, length, values, values_coverageempty_count, frequencies, freshness, mean, negative_count, percentiles, quantized_count, range, sum, unrepresentable, zero_count
categoricaldistribution, length, values, values_coverageempty_count, frequencies, freshness, mean, negative_count, percentiles, quantized_count, range, sum, unrepresentable, zero_count
temporaldistribution, frequencies, freshness, percentiles, quantized_count, range, valuesempty_count, length, mean, negative_count, normalized_cardinality, sum, values_coverage, values_coverage_method, zero_count
numericdistribution, frequencies, mean, negative_count, percentiles, quantized_count, range, sum, values, zero_countempty_count, freshness, length, normalized_cardinality, unrepresentable, values_coverage, values_coverage_method
textdistribution, empty_count, length, values, values_coveragefrequencies, freshness, mean, negative_count, percentiles, quantized_count, range, sum, unrepresentable, zero_count
unsupportedclassification, null_count, null_rate, nullable, sql_type (fewer than the base 8)cardinality, cardinality_method, cardinality_ratio, distribution, empty_count, frequencies, freshness, inferred, length, mean, negative_count, normalized_cardinality, percentiles, quantized_count, range, redacted, sketch, sum, unrepresentable, values, values_coverage, values_coverage_method, zero_count