在开发的过程中,需要根据不同的情况,使用不同的公式计算指标值。因为业务需求可能会更改公式,所以要求将公式写成可配置的。
那么我们存储公式的时候,是使用字符串格式存储的。
比如‘a+b*c’,这样的公式是没法直接执行的,需要将公式中的变量替换后,然后计算这个公式的值,字符串也不能直接执行。
想要在sql中执行这个公式,就要使用类似动态sql的方式执行。于是写了下面的函数,来获取指标的值。
CREATE OR REPLACE FUNCTION fuel_data.eval_expression(expr TEXT)
RETURNS NUMERIC AS $$
DECLARE
result NUMERIC;
BEGIN
EXECUTE 'SELECT ' || expr INTO result;
RETURN result;
END;
$$ LANGUAGE plpgsql;
