在bigquery中评估存储为字符串的公式

时间:2018-04-18 10:26:36

标签: string date google-bigquery

我在bigquery中有一个表,其中有一列存储不同的日期公式,如DATE_ADD(CURRENT_DATE,INTERVAL 1 DAY),DATE_ADD(CURRENT_DATE,INTERVAL 7 DAY),根据不同行中的要求。我想使用此表来使用这些公式在另一个表中计算end_date。在当前表中,列类型是字符串。是否有任何方法可以计算bigquery中的公式,该公式作为字符串存储在另一个表中?

1 个答案:

答案 0 :(得分:1)

如果您需要处理任意表达式,请考虑将公式存储为Javascript表达式。然后,您可以使用JS UDF和eval()在查询执行时解析它们。

不要忘记在它们周围放置一个try-catch(并返回NULL或某种错误记录) - 否则如果有人在某处输入了无效的表达式,那么整个查询都会失败。

要在eval'd表达式和UDF包装器之间传递信息,您可以使用全局范围的变量。

https://cloud.google.com/bigquery/docs/reference/standard-sql/user-defined-functions

如果你有一组有限的不同表达式,你也可以考虑制作一个表驱动的表达式解析器。这可能会将像LAST_WEEK这样的字符串映射到NOW()的实际值 - 7天等等。一个CASE语句就足够了。

https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#conditional-expressions