Can anyone give me some advice or information about this feature?

林挺滨 <lintingbi...@gmail.com> 于2021年10月14日周四 下午1:33写道:

> In our scenario, it is often necessary to calculate the user's aggregated
> indicators in the most recent period of time.
> For example, if I need to calculate the user's recharge amount in the most
> recent day, I can do it through the following SQL code.
> ---------------------------------------------------------------------
> CREATE TEMPORARY VIEW purchase as
> select user_id, purchase_price, __ts__
> from
> raw_purchase;
>
> CREATE TEMPORARY VIEW purchase_expire as
> select user_id, 0 as purchase_price,
> SESSION_ROWTIME (__ts__, INTERVAL '1' DAY + INTERVAL '1' SECOND) as __ts__
> from
> purchase as T
> GROUP BY SESSION (T.__ts__, INTERVAL '1' DAY + INTERVAL '1' SECOND),
> user_id, __ts__;
>
> CREATE TEMPORARY VIEW total_purchase as
> select * from purchase
> union all
> select * from purchase_expire;
>
> select user_id, SUM(purchase_price) OVER (
> PARTITION BY user_id
> ORDER BY __ts__
> RANGE BETWEEN INTERVAL '1' DAY PRECEDING AND CURRENT ROW
> )
> from total_purchase;
> -----------------------------------------
>
> If the "Over Aggregation CURRENT_TIMESTAMP" is supported, the above code
> can be replaced by the following simple code,and the simple code is easier
> to understand.
> -----------------------------------------
> select user_id, SUM(purchase_price) OVER (
> PARTITION BY user_id
> ORDER BY __ts__
> RANGE BETWEEN INTERVAL '1' DAY PRECEDING AND CURRENT_TIMESTAMP
> )
> from raw_purchase;
> -----------------------------------------
>
> I have seen the implementation of the RowTimeRangeBoundedPrecedingFunction
> class. It is very simple to add support for CURRENT_TIMESTAMP.
>


-- 
祝您  身体健康
         工作愉快!

林挺滨

Reply via email to