0

我正在使用 Vertica 的 MATCH 子句,Vertica SQL 参考手册将其描述为“一个 SQL 扩展,可让您筛选大量历史数据以搜索事件模式,MATCH 子句提供用于分析分区和排序的子类,并匹配来自结果表基于您定义的模式。”

在程序员指南的示例中,示例中RESULTS ALL ROWS出现了一个短语,如下所示:

SELECT uid,
       sid,
       ts,
       refurl,
       pageurl,
       action,
       event_name(),
       pattern_id(),
       match_id()
FROM clickstream_log
MATCH
  (PARTITION BY uid, sid ORDER BY ts
   DEFINE
     Entry AS RefURL NOT ILIKE '%website2.com%' AND PageURL ILIKE '%website2.com%',
     Onsite AS PageURL ILIKE '%website2.com%' AND Action='V',
     Purchase AS PageURL ILIKE '%website2.com%' AND Action = 'P'
   PATTERN
     P AS (Entry Onsite* Purchase)
   RESULTS ALL ROWS);

但是,我找不到做什么的定义RESULTS ALL ROWS。令人不安的是,它会以某种微妙的方式影响输出。(意思是,需要很多行才能产生差异。)

有人知道这句话的实际作用吗?

4

1 回答 1

1

我怀疑这是一个遗留声明。在 v6.1 中,它已被替换为ROW MATCH (ALL EVENTS | FIRST EVENT)

定义如何将单个行的多个事件评估为真。

如果您使用 ROWS MATCH ALL EVENTS(默认),如果单行的多个事件评估为 true,HP Vertica 将返回以下运行时错误:

错误:模式事件必须互斥

提示:尝试使用 ROWS MATCH FIRST EVENT 对于 ROWS MATCH FIRST EVENT,如果单个行的多个事件计算结果为真,HP Vertica 会选择 SQL 语句中首先定义的事件作为它用于该行的事件。

于 2013-09-21T12:21:41.623 回答