是否可以将数据存储在表中,然后将其转换为SQL查询或UDF(例如javascript eval())?
用例是,我有一个客户列表,其中每个客户的收入计算方式大不相同,并且随着时间的推移会发生变化。因此,我希望有一个查找表,可以使用用于计算该图的公式对其进行更新,而不必编写数百个查询(每个客户端一个),而且还必须维护这些查询。
我试图考虑是否有一种方法可以使标准公式具有足够的灵活性,但不幸的是,我真的认为这不可能。
答案 0 :(得分:3)
当然! BigQuery可以定义和使用JS UDF。好消息是eval()
可以正常工作:
CREATE TEMP FUNCTION calculate(x FLOAT64, y FLOAT64, formula STRING)
RETURNS FLOAT64
LANGUAGE js AS """
return eval(formula);
""";
WITH table AS (
SELECT 1 AS x, 5 as y, 'x+y' formula
UNION ALL SELECT 2, 10, 'x-y'
UNION ALL SELECT 3, 15, 'x*y'
)
SELECT x, y, formula, calculate(x, y, formula) result
FROM table;