在一个项目中,我在Postgres中使用公用表表达式(CTE)来表示表上的递归表达式.递归表达式计算父项下的所有子行.
我正在使用带有查询构建器的Laravel框架来编写此查询.我想避免原始查询.我正在寻找一种在查询构建器语法中链接CTE的方法,但我最终得到了一个原始查询(DB::select('raw query here')).
有没有办法可以链接CTE部分?如下伪代码:
DB::statement('WITH RECURSIVE included_parts(sub_part, part, quantity) AS (
SELECT sub_part, part, quantity FROM parts WHERE part = 'our_product'
UNION ALL
SELECT p.sub_part, p.part, p.quantity
FROM included_parts pr, parts p
WHERE p.part = pr.sub_part')
->select('subpart')
->table('included_parts')
->join('bar', 'foo.id', '=', 'bar.foo_id')
->etc etc more query expressions
Run Code Online (Sandbox Code Playgroud) 将流与静态数据集合并是结构化流的一个重要功能。但是,每一批数据集都会从数据源中刷新。由于这些源并不总是那么动态,因此在指定的时间段(或批处理数量)中缓存静态数据集会提高性能。在指定的周期/批次数后,将从源重新加载数据集,否则从缓存中检索数据集。
在Spark流中,我使用缓存的数据集对此进行了管理,并在指定数量的批处理运行后取消了持久化,但是由于某种原因,它不再适用于结构化流。
有什么建议可以使用结构化流媒体吗?