在BigQuery中计算余额或重写SQL脚本,可以尝试使用以下查询:
WITH Transactions AS (
SELECT
AccountId,
TransactionDate,
Amount
FROM
project.dataset.transactions
),
Balances AS (
SELECT
AccountId,
TransactionDate,
SUM(Amount) OVER (PARTITION BY AccountId ORDER BY TransactionDate) AS Balance
FROM
Transactions
)
SELECT
AccountId,
TransactionDate,
Balance
FROM
Balances;
这个查询使用了两个公用表表达式(CTE),即Transactions和Balances。Transactions CTE 包含了原始数据,即交易日期,帐户 ID,和交易金额;而Balances CTE 则使用了窗口函数OVER及PARTITION,按照帐户ID和日期作为分区关键字,对每个帐户的交易金额进行累加并计算余额。
如果想在这个查询中加入其他过滤条件,例如只查询特定的帐户或日期范围内的数据,可以使用WHERE语句。
参考文献:https://cloud.google.com/blog/products/data-analytics/how-to-write-efficient-sql-in-bigquery