情况:
基表没有建立分区,创建物化视图加上 DISTRIBUTED BY HASH(record_time, id),发现物化视图不执行增量刷新,去掉就执行增量刷新,为什么?物化视图如下
引用
CREATE MATERIALIZED VIEW t_cabinet_back_order_detail_commodity_mv
– DISTRIBUTED BY HASH(record_time, id)
REFRESH ASYNC
START (‘2025-02-19 00:12:00’)
EVERY (INTERVAL 30 MINUTE)
AS
WITH order_details AS (
SELECT
tebod.id,
tcom.commodity_code,
tebod.record_time,
tc.cabinet_name,
tc.cabinet_code,
tc.channel_id,
CASE
WHEN tc.channel_id != 1 and tcom.commodity_name = ‘台菜’ THEN ‘特价蔬菜’
ELSE tcom.commodity_name
END AS commodity_name ,
CASE
WHEN tebod.commodity_sell_price = 1 THEN 1
WHEN cabinet_name = ‘浦商生鲜(航兆店)’ AND commodity_sell_count = 0 AND commodity_total_price = 0 THEN 1
ELSE ROUND(tebod.commodity_sell_count,2)
END AS commodity_sell_count ,
CASE
WHEN tebod.commodity_sell_price = 1 THEN NULL
WHEN cabinet_name = '浦商生鲜(航兆店)' AND commodity_sell_count = 0 AND commodity_total_price = 0 THEN NULL
ELSE ROUND(tebod.commodity_sell_price,2)
END AS commodity_sell_price,
CASE
WHEN cabinet_name = '浦商生鲜(航兆店)' AND commodity_sell_count = 0 AND commodity_total_price = 0 THEN ROUND(commodity_sell_price,1)
ELSE commodity_total_price
END AS commodity_total_price,
CASE
WHEN tebod.commodity_sell_price > 70 THEN '异常订单'
WHEN tebod.commodity_total_price > 100 THEN '异常订单'
WHEN tebod.commodity_sell_count = 1 and tebod.commodity_sell_price <= 70 THEN '计件'
WHEN tebod.commodity_sell_price = 1 and tebod.commodity_total_price <= 100 THEN '计件'
ELSE ''
END AS remark
FROM
t_electronic_back_order_detail AS tebod
INNER JOIN
t_cabinet AS tc ON tebod.cabinet_id = tc.id
INNER JOIN
t_commodity AS tcom ON tebod.commodity_code = tcom.commodity_code
WHERE
tebod.commodity_total_price IS NOT NULL
AND NOT (
tc.cabinet_name IN ('南季路菜柜', '浦商生鲜古棕路店')
AND tcom.commodity_name = '荷兰豆'
)
AND NOT (
tc.cabinet_name IN ('浦商生鲜古棕路店')
AND tcom.commodity_name = '长茄'
)
)
SELECT
id,
record_time ,
cabinet_name ,
cabinet_code ,
commodity_name ,
commodity_code ,
channel_id,
CASE
WHEN cabinet_name = ‘浦商生鲜(航兆店)’ AND commodity_sell_count = 0 AND commodity_total_price = 0 THEN 1
ELSE commodity_sell_count
END AS commodity_sell_count,
CASE
WHEN cabinet_name = ‘浦商生鲜(航兆店)’ AND commodity_sell_count = 0 AND commodity_total_price = 0 THEN NULL
WHEN commodity_sell_count = 1 THEN NULL
WHEN remark = ‘计件’ THEN NULL
ELSE commodity_sell_price
END AS commodity_sell_price,
CASE
WHEN cabinet_name = '浦商生鲜(航兆店)' AND commodity_sell_count = 0 AND commodity_total_price = 0 THEN ROUND(commodity_sell_price,1)
ELSE commodity_total_price
END AS commodity_total_price,
CASE
WHEN commodity_sell_count = 0 OR commodity_total_price = 0 THEN '异常订单'
WHEN commodity_sell_price > 70 THEN '异常订单'
WHEN commodity_total_price > 100 THEN '异常订单'
WHEN cabinet_name = '浦商生鲜(航兆店)' AND commodity_sell_count = 0 AND commodity_total_price = 0 THEN '计件'
ELSE remark
END AS remark
FROM order_details