
# last_value
#### 功能描述
last_value函数用于取当前行所对应窗口的最后一条数据的值。
#### 使用限制
窗口函数的使用限制如下：
- 窗口函数只能出现在select语句中。
- 窗口函数中不能嵌套使用窗口函数和聚合函数。
- 窗口函数不能和同级别的聚合函数一起使用。
 
#### 语法格式
```
last_value(<expr>[, <ignore_nulls>]) over ([partition_clause] [orderby_clause] [frame_clause])
```
#### 参数说明
| 参数               | 是否必选 | 说明                                                            |
|:---|:---|:---|
| expr             | 是    | 待计算返回结果的表达式。                                                  |
| ignore_nulls     | 否    | BOOLEAN类型，表示是否忽略NULL值。默认值为False。当参数的值为True时，返回窗口中最后一条非NULL的值。 |
| partition_clause | 否    | 指定分区。分区列的值相同的行被视为在同一个窗口内。                                     |
| orderby_clause   | 否    | 指定数据在一个窗口内如何排序。                                               |
| frame_clause     | 否    | 用于确定数据边界。                                                     |
   
#### 返回值说明
参数的数据类型。
#### 示例
为便于理解函数的使用方法，本文为您提供源数据，基于源数据提供函数相关示例。创建表logs，并添加数据，命令示例如下：
```
create table logs(
  cookieid string,
  createtime string,
  url string 
)  
STORED AS parquet;
```
添加数据如下：
```
cookie1 2015-04-10 10:00:02 url2 
cookie1 2015-04-10 10:00:00 url1 
cookie1 2015-04-10 10:03:04 url3 
cookie1 2015-04-10 10:50:05 url6 
cookie1 2015-04-10 11:00:00 url7 
cookie1 2015-04-10 10:10:00 url4 
cookie1 2015-04-10 10:50:01 url5 
cookie2 2015-04-10 10:00:02 url22 
cookie2 2015-04-10 10:00:00 url11 
cookie2 2015-04-10 10:03:04 url33 
cookie2 2015-04-10 10:50:05 url66 
cookie2 2015-04-10 11:00:00 url77 
cookie2 2015-04-10 10:10:00 url44 
cookie2 2015-04-10 10:50:01 url55
```
示例：将所有记录根据cookieid分组，并按createtime升序排列，返回每组中的最后一行数据。命令示例如下
```
SELECT cookieid, createtime, url,
        LAST_VALUE(url) OVER(PARTITION BY cookieid ORDER BY createtime) AS last 
FROM logs;  
-- 返回结果： 
cookieid createtime         url last 
cookie1 2015-04-10 10:00:00 url1 url1 
cookie1 2015-04-10 10:00:02 url2 url2 
cookie1 2015-04-10 10:03:04 url3 url3 
cookie1 2015-04-10 10:10:00 url4 url4 
cookie1 2015-04-10 10:50:01 url5 url5 
cookie1 2015-04-10 10:50:05 url6 url6 
cookie1 2015-04-10 11:00:00 url7 url7 
cookie2 2015-04-10 10:00:00 url11 url11 
cookie2 2015-04-10 10:00:02 url22 url22 
cookie2 2015-04-10 10:03:04 url33 url33 
cookie2 2015-04-10 10:10:00 url44 url44 
cookie2 2015-04-10 10:50:01 url55 url55 
cookie2 2015-04-10 10:50:05 url66 url66 
cookie2 2015-04-10 11:00:00 url77 url77
```
**说明：** 截止到当前行的最后一个值，其实就是它本身。
