批处理的确是可以解决这类问题,只不过不是实时的了,主要是想使用flink-sql解决这类报表问题; 另外问一句, flink-sql 有打算解决这类问题吗?我感觉这个场景还挺多的呢 维表 left join 一张流表, 维表全量数据关联流表,既能获取到实时流表的统计数据,又能保证维表的数据是一个实时更新(或者定期更新)的状态
在 2020-10-27 17:24:05,"Jark Wu" <imj...@gmail.com> 写道: >我觉得这个更像是一个周期性调度的批处理需求。因为你流处理,只能一直读取员工表的增量,没法每天读个全量。 >是不是用 flink batch + 调度更好一点呢? > >Best, >Jark > >On Tue, 27 Oct 2020 at 16:08, 夜思流年梦 <liaobiao...@163.com> wrote: > >> 目前在准备搞实时数仓:碰到一个问题: >> 比如统计一个所有员工所有的业绩的报表,这个报表需要关联1个员工维表,4个业绩相关流表; >> 如果是正常SQL的话是这样join : >> >> >> 维表 left join 流表 1 >> left join 流表 2 >> left join 流表 3 >> left join 流表 4 >> >> >> 因为flink-sql 的temporal join 不支持 维表在左边 left join 流表, >> >> >> 故只能 流表在左,维表在右来join >> 即:select * from table a left join dim_XXX FOR SYSTEM_TIME AS OF >> a.proctime as c on a.memberId=c.rowkey >> >> >> 但是这个存在的问题是那些今天没有业绩的员工就没有统计数据,如果只是join一张流表,那么我可以把没有数据的员工在出报表时补空数据,现在的情况是要join4 >> 张流表,那么必须得四张流表都有数据的员工才会有数据,这个就是问题了:最终的报表只有4个流表都有数据的员工。 >> >> >> 上次问过一次,上次回答的是双流join,双流join的问题也是一样,只有两者都有数据才会得到最终结果,更何况是员工维表,基本上变化很少。因为有点找不到上次那个邮件了,所以再问一下,这种场景(维表在左 >> left join 流表)有没有比较好的解决方案 >> >> >> >> >> >> >> >>