我在 ksqldb 上进行了以下查询,如果我使用“EMIT CHANGES”,它确实可以工作,但如果将其更改为“EMIT FINAL”,它在窗口结束后不会返回任何值
CREATE TABLE sspc_3536660_v4 as select sspc,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_ds_cir_fulfillment' THEN value ELSE NULL END)AS sspc_ds_cir_fulfillment,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_ds_cir_current' THEN value ELSE NULL END )AS sspc_ds_cir_current,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_ds_cir_fulfillment_ratio' THEN value ELSE NULL END)AS sspc_ds_cir_fulfillment_ratio,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_ds_cir_demand_bytes' THEN value ELSE NULL END )AS sspc_ds_cir_demand_bytes,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_us_cir_fulfillment_ratio' THEN value ELSE NULL END)AS sspc_us_cir_fulfillment_ratio,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_ds_cir_demand_kbps' THEN value ELSE NULL END )AS sspc_ds_cir_demand_kbps,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_us_cir_demand_kbps' THEN value ELSE NULL END)AS sspc_us_cir_demand_kbps,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_us_cir_fulfillment' THEN value ELSE NULL END )AS sspc_us_cir_fulfillment,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_us_cir_demand_bytes' THEN value ELSE NULL END )AS sspc_us_cir_demand_bytes,
>LATEST_BY_OFFSET(CASE WHEN metric ='sspc_us_cir_current' THEN value ELSE NULL END)AS sspc_us_cir_current,
>count(*) as ct
>from Sspc_Usage_Stats_Transposedv3
>WINDOW TUMBLING (SIZE 5 MINUTES , GRACE PERIOD 1 MINUTES ) where sspc=3536660
>group by sspc emit final ;
有人可以给个提示吗?
EMIT FINAL
是数据驱动的,即仅当“流时间”提前超过窗口关闭时间时,它才会发出结果。 “流时间”取决于观察到的输入记录的时间戳,因此,如果您停止发送输入记录,“流时间”不会进一步前进。
因此,如果您停止发送数据,最后一个窗口可能永远不会关闭,因此您永远不会看到它的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)