跳到主要内容
版本:6.6.0

时序UDF的介绍和使用方法

时序UDF函数列表

类型

函数

参数

输出数据类型

说明

构建查询表字段   (ETL用)

date_range_build_v2

(struct_array)

dateRangStruct

无压缩时间序列值。参数中 struct_array 数组,需要通过 collect_list(struct(date, value)) 等函数来聚合得到。

date_text_range_build_v2

(struct_array)

dateTextRangStruct

date_range_zipper

(dateRangStruct)

dateRangStruct

相邻等值压缩的时间序列值。对缺省日期添加一条值为 null 的记录并压缩(若有缺省日期且前一个日期值不为 null,则添加与前一个日期相邻日期且值为 null 的记录,当前日期是否压缩与新添记录做比较;同时对相邻等值记录进行去重,仅保留第一条)。

date_text_range_zipper

(dateTextRangStruct)

dateTextRangStruct

date_range_merge

(dateRangStruct_1, dateRangStruct_2)

dateRangStruct

合并时间序列,合并后不压缩相邻等值。

date_text_range_merge

(dateTextRangStruct_1, dateTextRangStruct_2)

dateTextRangStruct

date_range_period_to_date

(dateRangStruct, period:string)

dateRangStruct

period: 'week','month','year'                                                1. 原始日期保留,值按指定周期累加;2. 为缺省周期补齐期初日期,值补零;同时对补齐的相邻等值进行压缩,仅保留第一条。适用于周期内累计值的计算和查找,例如周/月/年累计销售额。

查找数据  (卡片用)

date_range_lookup

(dateRangStruct, lookup_date)

Number value

滚动向上查找,即无对应日期数据就向前查找最近日期的数据,适合库存类数据或者会员状态的查找。

date_text_range_lookup

(dateTextRangStruct, lookup_date)

String value

date_range_get

(dateRangStruct, lookup_date)

Number value

精确查找,适合销售类数据查找;找不到则返回null。

date_text_range_get

(dateTextRangStruct, lookup_date)

String value

案例:使用时序UDF查询库存

在ETL中使用 date_range_build_v2 函数构建库存查询字段,在卡片中使用 date_range_lookup滚动向上查找库存量。

实现步骤

1. 在ETL里处理好库存查询和MTD库存查询这两个数据。

1)库存查询:

date_range_build_v2(collect_list(struct(`日期`,`库存数`))) as `库存查询`

2)MTD库存查询

date_range_period_to_date([库存查询],'month')

ETL预览效果:

2. 在卡片里新建库存、精确查找和MTD库存查询这三个数据。

1)库存

date_range_lookup([库存查询],to_date([DYNAMIC_PARAMS.查询日期]))

2)库存查询-精确查找

date_range_get([库存查询],to_date([DYNAMIC_PARAMS.查询日期]))

3)MTD库存查询

date_range_lookup([MTD库存查询],to_date([DYNAMIC_PARAMS.查询日期]))

卡片效果: