One Hot Encoder
SELECT
age,
IF(sex = 'female', 0, 1) as gender,
bmi,
children,
IF(smoker = false, 0, 1) AS smoker,
IF(region = 'northeast', 1, 0) AS region_northeast,
IF(region = 'northwest', 1, 0) AS region_northwest,
IF(region = 'southeast', 1, 0) AS region_southeast,
IF(region = 'southwest', 1, 0) AS region_southwest,
charges
FROM Shop.Insurance;
One Hot Encoder with EXECUTE IMMEDIATE
DECLARE regions ARRAY DEFAULT (SELECT ARRAY_AGG(DISTINCT region) FROM `Shop.Insurance`);
EXECUTE IMMEDIATE '''
SELECT
age,
IF(sex = "female", 0, 1) as gender,
bmi,
children,
IF(smoker = false, 0, 1) AS smoker,''' ||
(SELECT STRING_AGG("IF(region='" || reg || "', 1, 0) AS region_" || reg) FROM UNNEST(regions) reg)
|| ''',charges
FROM Shop.Insurance LIMIT 10
''';