首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滑动窗口与PipelineDB中的TTL

滑动窗口与PipelineDB中的TTL
EN

Stack Overflow用户
提问于 2017-12-12 12:29:03
回答 1查看 195关注 0票数 0

我是PipelineDB和流分析专业的新手,

我有这两个SQL命令;

代码语言:javascript
复制
CREATE CONTINUOUS VIEW timing_hashtags WITH (sw = '1 minutes')
AS SELECT h, minute(arrival_timestamp) as minuteOfArrival, COUNT(*) as quantity
FROM hashtag_stream GROUP BY h, minuteOfArrival;

代码语言:javascript
复制
CREATE CONTINUOUS VIEW timing_hashtagsTTL WITH (ttl = '1 minute', ttl_column = 'minuteOfArrival')
AS SELECT h, minute(arrival_timestamp) as minuteOfArrival, COUNT(*) as quantity
FROM hashtag_stream GROUP BY h, minuteOfArrival;

当我对两个连续视图运行以下查询时;

代码语言:javascript
复制
SELECT * FROM timing_hastags order by minuteOfArrival desc;

结果对timing_hastags和timing_hastagsTTL连续视图都是相同的;

有谁能帮我理解一下连续视图中"ttl“和"sw”操作符的用法之间的区别吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-14 19:52:41

我将在这里对每一个进行定义,希望能够澄清两者之间的区别:

TTL -向收割机提示,任何比此更早的行都可以在后台删除。TTL-过期的行在读取时仍然是可见的,如果收割机没有抽出时间移除它们。

滑动窗口-仅在读取时考虑此窗口中的数据。在读取时,指定窗口之外的数据将永远不可见。滑动窗口在内部使用TTL来过期旧行,并且它们还在读取时对滑动窗口进行最后的聚合。

有谁能帮我理解一下连续视图中"ttl“和"sw”操作符的用法之间的区别吗?

代码语言:javascript
复制
CREATE CONTINUOUS VIEW timing_hashtags WITH (sw = '1 minutes') 
  AS SELECT h, minute(arrival_timestamp) as minuteOfArrival, COUNT(*) as quantity 
FROM hashtag_stream GROUP BY h, minuteOfArrival;

每当滑动窗口CV包含时间戳列时,使用没有滑动窗口的TTL几乎总是更好。原因是最后1分钟的最终聚合将在读取时执行,这可能是不必要的,因为每一行已经在一分钟的级别上进行聚合。在内部,SW CV的粒度将高于1分钟(例如,每分钟有许多行),并在读取时的最后一分钟对这些行进行聚合。

从这个简历定义中删除minuteOfArrival可能会使SW语义更加清晰。即使没有minuteOfArrival,当你阅读简历时,你也只能在最后一分钟看到数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47772687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档