这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
MATCH 子句函数
与 MATCH 子句 一起使用,此部分的函数返回关于查找或返回的模式的附加数据。例如,可以使用这些函数返回表示与输入行匹配的事件或模式名的值、匹配的序列名或匹配模式实例的全分区唯一标识符。
如果您想在点击流分析中根据用户的 Web 浏览行为(页面点击)确定用户的操作,那么模式匹配就尤其有用。典型的在线点击流漏斗是:
公司主页 -> 产品主页 -> 搜索 -> 结果 -> 在线购买
您可以使用以上点击流漏斗,在用户的 Web 点击序列中搜索匹配并标识该用户:
-
登录了公司主页。
-
导航至产品页面。
-
运行查询。
-
单击搜索结果中的链接。
-
购买。
有关使用此点击流模型的示例,请参阅 事件系列模式匹配。
注意
GROUP BY 和 PARTITION BY 表达式不支持窗口函数。
1 - EVENT_NAME
返回一个 VARCHAR 值,表示与行匹配事件的名称。
语法
EVENT_NAME()
注意
模式匹配函数必须用在 MATCH 子句 语法中;例如,如果单独调用 EVENT_NAME(),Vertica 将返回以下错误消息:
=> SELECT event_name();
ERROR: query with pattern matching function event_name must include a MATCH clause
示例
以下语句分析了用户在 "website2.com" 的浏览历史并标识了用户从另一网站(进入)登录 website2.com
以及在做出购买之前(购买)浏览任意数量的其他页面(站内)的模式。该查询还将输出 EVENT_NAME() 的结果值,即与行匹配的事件的名称。
SELECT uid,
sid,
ts,
refurl,
pageurl,
action,
event_name()
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)
ROWS MATCH FIRST EVENT);
uid | sid | ts | refurl | pageurl | action | event_name
-----+-----+----------+----------------------+----------------------+--------+------------
1 | 100 | 12:00:00 | website1.com | website2.com/home | V | Entry
1 | 100 | 12:01:00 | website2.com/home | website2.com/floby | V | Onsite
1 | 100 | 12:02:00 | website2.com/floby | website2.com/shamwow | V | Onsite
1 | 100 | 12:03:00 | website2.com/shamwow | website2.com/buy | P | Purchase
2 | 100 | 12:10:00 | website1.com | website2.com/home | V | Entry
2 | 100 | 12:11:00 | website2.com/home | website2.com/forks | V | Onsite
2 | 100 | 12:13:00 | website2.com/forks | website2.com/buy | P | Purchase
(7 rows)
另请参阅
2 - MATCH_ID
将成功模式匹配作为 INTEGER 值返回。返回值是分区中匹配所在的序号位置。
语法
MATCH_ID()
注意
模式匹配函数必须用在 MATCH 子句 语法中;例如,如果单独调用 MATCH_ID(),Vertica 将返回以下错误消息:
=> SELECT match_id();
ERROR: query with pattern matching function match_id must include a MATCH clause
示例
下面的语句在 website2.com
网站上分析用户的浏览历史,并确定用户从另一个网站( website2.com
子句中的Entry
)到达 MATCH
,以及订购(购买)之前浏览的其他页面(Onsite
)数的模式。查询同时也输出表示匹配序号的 MATCH_ID() 的值。
SELECT uid,
sid,
ts,
refurl,
pageurl,
action,
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)
ROWS MATCH FIRST EVENT);
uid | sid | ts | refurl | pageurl | action | match_id
----+-----+----------+----------------------+----------------------+--------+------------
1 | 100 | 12:00:00 | website1.com | website2.com/home | V | 1
1 | 100 | 12:01:00 | website2.com/home | website2.com/floby | V | 2
1 | 100 | 12:02:00 | website2.com/floby | website2.com/shamwow | V | 3
1 | 100 | 12:03:00 | website2.com/shamwow | website2.com/buy | P | 4
2 | 100 | 12:10:00 | website1.com | website2.com/home | V | 1
2 | 100 | 12:11:00 | website2.com/home | website2.com/forks | V | 2
2 | 100 | 12:13:00 | website2.com/forks | website2.com/buy | P | 3
(7 rows)
另请参阅
3 - PATTERN_ID
返回匹配模式实例的全分区唯一标识符整数值。
语法
PATTERN_ID()
注意
模式匹配函数必须用在 MATCH 子句 语法中;例如,如果单独调用 PATTERN_ID(),Vertica 将返回以下错误消息:
=> SELECT pattern_id();
ERROR: query with pattern matching function pattern_id must include a MATCH clause
示例
以下语句分析了用户在 website2.com 的浏览历史并标识了用户从另一网站(进入)登录 website2.com 以及在做出购买之前(购买)浏览任意数量的其他页面(站内)的模式。查询也输出了 PATTERN_ID() 的值,表示匹配模式实例的全分区标识符。
SELECT uid,
sid,
ts,
refurl,
pageurl,
action,
pattern_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)
ROWS MATCH FIRST EVENT);
uid | sid | ts | refurl | pageurl | action | pattern_id
----+-----+----------+----------------------+----------------------+--------+------------
1 | 100 | 12:00:00 | website1.com | website2.com/home | V | 1
1 | 100 | 12:01:00 | website2.com/home | website2.com/floby | V | 1
1 | 100 | 12:02:00 | website2.com/floby | website2.com/shamwow | V | 1
1 | 100 | 12:03:00 | website2.com/shamwow | website2.com/buy | P | 1
2 | 100 | 12:10:00 | website1.com | website2.com/home | V | 1
2 | 100 | 12:11:00 | website2.com/home | website2.com/forks | V | 1
2 | 100 | 12:13:00 | website2.com/forks | website2.com/buy | P | 1
(7 rows)
另请参阅