BigQuery:是否可以在 UDF 中执行另一个查询?

BigQuery : is it possible to execute another query inside an UDF?

我有一个 table 每天为每个唯一用户记录一行,以及该用户当天的一些汇总统计信息,我需要生成一份报告,告诉我每一天,没有.过去 30 天(包括那一天)的唯一身份用户数。

例如。

我查看了一些相关问题,但它们并不是我所需要的 - 如果用户在过去 30 天内多次登录,他应该只被计算一次,所以我不能只求和过去 30 天的 DAU 计数。

Bigquery SQL for sliding window aggregate

BigQuery SQL for 28-day sliding window aggregate (without writing 28 lines of SQL)

到目前为止,我的想法是:

但我还没有找到任何关于如何在 UDF 中执行另一个 BigQuery 查询的示例,或者如果可能的话。

I need to produce a report that tells me for each day, the no. of unique users in the last 30 days including that day.

下面应该这样做

SELECT
  calendar_day, 
  EXACT_COUNT_DISTINCT(userID) AS unique_users
FROM (
  SELECT calendar_day, userID
  FROM YourTable
  CROSS JOIN (
    SELECT DATE(DATE_ADD('2016-08-08', pos - 1, "DAY")) AS calendar_day
    FROM (
         SELECT ROW_NUMBER() OVER() AS pos, *
         FROM (FLATTEN((
         SELECT SPLIT(RPAD('', 1 + DATEDIFF('2016-09-08', '2016-08-08'), '.'),'') AS h
         FROM (SELECT NULL)),h
    )))
  ) AS calendar
  WHERE DATEDIFF(calendar_day, dt) BETWEEN 0 AND 29 
)
GROUP BY calendar_day
ORDER BY calendar_day DESC

假设 YourTable 有 userID 和 dt 字段(如下例)

dt          userID   
2016-09-08       1   
2016-09-08       2   
...

你可以控制:
- 通过分别更改 2016-08-082016-09-08
来报告日期范围 - 通过在 BETWEEN 0 AND 29

中更改 29 来聚合大小