我有一个表,每天为每个唯一身份用户记录一行,并在当天为该用户提供一些汇总统计信息,我需要生成一份报告,告诉我每天的数据,否。包括当天在内的过去30天内的唯一身份用户
例如。
我已经查看了一些相关问题,但它们并不是我所需要的 - 如果用户在过去30天内多天登录,他应该只被计算一次,所以我不能只计算DAU算过去30天了。
Bigquery SQL for sliding window aggregate
BigQuery SQL for 28-day sliding window aggregate (without writing 28 lines of SQL)
到目前为止,我的想法是:
但是我没有找到任何关于如何在UDF中执行另一个BigQuery查询的示例,或者它是否可能。
答案 0 :(得分:1)
我需要制作一份报告,告诉我每天,不。的 过去30天内的独特用户,包括当天。
下面应该这样做
using System;
namespace Something
{
namespace Finance
{
namespace Donations
{
public class Electronic1 : Donation
{
private PaymentGateway ThisPaymentGateway { get; set; } = new PaymentGateway();
public void RunController()
{
if (DonorType.ToUpper() == "IND" && (PaymentMethod.ToUpper() == "CREDIT CARD" || PaymentMethod.ToUpper() == "ECHECK"))
{
ThisPaymentGateway.Process(ref this);
}
}
}
}
}
}
它假定YourTable具有userID和dt字段(例如下面的代码)
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
你可以控制:
- 报告日期范围分别更改dt userID
2016-09-08 1
2016-09-08 2
...
和2016-08-08
- 通过更改2016-09-08
29
来确定汇总大小