使用row参数对所有行执行SQL函数

时间:2018-06-25 14:35:37

标签: sql google-bigquery

我有一个表,该表包含3列我关心的列:NameIdParentId。我想找出Id有多少个孩子,这些孩子需要我逐行浏览。

这是我到目前为止所拥有的:

CREATE TEMPORARY FUNCTION numChildren(givenId INT64)
  RETURNS INT64
  AS ((SELECT count(*) FROM `playground.table` WHERE ParentId = givenId));

SELECT numChildren(Id) OVER() as Test FROM `playground.table`

我得到的确切错误是:Error: Function USER_DEFINED_FUNCTIONS:NUMCHILDREN does not support an OVER clause at [5:8]

我想遍历每一行,将Id传递到函数中,然后获取以Id作为ParentId的行数。

我要这样做正确吗?我是否必须使用API​​进行这样的查询?

1 个答案:

答案 0 :(得分:2)

只需如下删除OVER()

CREATE TEMPORARY FUNCTION numChildren(givenId INT64)
RETURNS INT64
  AS ((SELECT count(*) FROM `playground.table` WHERE ParentId = givenId));

SELECT numChildren(Id) as Test FROM `playground.table`