CREATE OR REPLACE MACRO firsts(l) as ( WITH t as (SELECT unnest(l) as x, generate_subscripts(l, 1) as index), s as (SELECT x, min(index) as index FROM t GROUP BY x) SELECT list(x ORDER BY index) FROM s ) ;