Этот запрос дает вам евклидовы координаты нормального распределения с центром в 0. Вы можете отрегулировать как среднее (средняя переменная), так и sd (дисперсионная переменная) и значения по оси x (GENERATE_ARRAY(beginning,end,step)
):
CREATE TEMPORARY FUNCTION normal(x FLOAT64)
RETURNS FLOAT64
LANGUAGE js AS """
var mean=0;
var variance=1;
var x0=1/(Math.sqrt(2*Math.PI*variance));
var x1=-Math.pow(x-mean,2)/(2*Math.pow(variance,2));
return x0*Math.pow(Math.E,x1);
""";
WITH numbers AS
(SELECT x FROM UNNEST(GENERATE_ARRAY(-10, 10,0.5)) AS x)
SELECT x, normal(x) as normal
FROM numbers;
Для этого я использовал «Пользовательские функции» [1] .Они используются, когда вы хотите иметь другое выражение SQL или когда вы хотите использовать Java Script (как я сделал).
ПРИМЕЧАНИЕ: я использовал функцию плотности вероятности нормального распределения, если вы хотите использовать другую, вам нужно изменить переменные x0, x1 и return (я написал их отдельно, чтобы было понятнее).