12 lines
521 B
SQL
12 lines
521 B
SQL
{#
|
|
safe_numeric(col)
|
|
Casts a string column to numeric, treating any non-numeric value as NULL.
|
|
Handles all EES suppression codes (z, c, x, q, u, etc.) without needing
|
|
an explicit list — any string that doesn't look like a number becomes NULL.
|
|
A trailing percent sign is accepted: DfE's 2023/24 KS2 information file
|
|
writes percentages as "34%" (audit C2).
|
|
#}
|
|
{% macro safe_numeric(col) -%}
|
|
CASE WHEN {{ col }} ~ '^-?[0-9]+(\.[0-9]+)?%?$' THEN rtrim({{ col }}, '%')::numeric ELSE NULL END
|
|
{%- endmacro %}
|