首页 > 解决方案 > SQL查询以跟踪新订单或旧订单中的余额变化,没有日期

问题描述

我有一个类似于以下记录的表

order_id order_balance
34 400
35 200
36 100

一旦插入了 order_id 即 order_id = 34。当 order_balance 更改时,不会插入新记录(不是追加),余额本身会在同一记录中更新。所以说order_id=34 的余额明天变为300。明天看表时。

order_id = 34 的记录将如下所示:

order_id order_balance
34 300

所以我想建立一个表来跟踪 order_ids 和 order_balances 是新插入的,或者在最后一天(或时间段,可能是小时、天、分钟等)发生了余额变化。我正在使用 pyspark 和 spark sql。

我的第一个想法是有一个表格来记录昨天的余额,然后将它们与今天的余额进行比较。但是,这将是 spark 作业的两次单独运行,并且需要我在 spark 中的作业运行之间保留该表。这甚至可能吗?

标签: sqlapache-spark-sqlbatch-processing

解决方案


您是否尝试过在插入/更新后触发?然后它将根据您想要的规则插入或更新新的“control_table”。

或者,如果我理解正确,你可以有这样的视图:

CREATE VIEW v_changed_orders_last_day AS
SELECT 
    order_id, 
    order_balance, 
    order_updated_date
FROM orders
WHERE order_updated_date IS NULL 
   OR order_updated_date >= sysdate()-1;

推荐阅读