Introduction and Usage of Time Series UDF
Time Series UDF Function List
Type | Function | Parameters | Output Data Type | Description |
Build Query Table Fields (ETL Use) | date_range_build_v2 | (struct_array) | dateRangStruct | Uncompressed time series values. The struct_array parameter needs to be aggregated using functions like collect_list(struct(date, value)). |
date_text_range_build_v2 | (struct_array) | dateTextRangStruct | ||
date_range_zipper | (dateRangStruct) | dateRangStruct | Adjacent equal value compressed time series values. Adds a record with null value for missing dates and compresses (if there are missing dates and the previous date value is not null, adds a record with adjacent date to the previous date and null value, current date compression is compared with the newly added record; simultaneously removes duplicate adjacent equal value records, keeping only the first one). | |
date_text_range_zipper | (dateTextRangStruct) | dateTextRangStruct | ||
date_range_merge | (dateRangStruct_1, dateRangStruct_2) | dateRangStruct | Merge time series, no compression of adjacent equal values after merging. | |
date_text_range_merge | (dateTextRangStruct_1, dateTextRangStruct_2) | dateTextRangStruct | ||
date_range_period_to_date | (dateRangStruct, period:string) | dateRangStruct | period: 'week','month','year' 1. Original dates are preserved, values are accumulated by specified period; 2. Fill beginning dates for missing periods, values are filled with zeros; simultaneously compress adjacent equal values for filled periods, keeping only the first one. Suitable for calculating and finding cumulative values within periods, such as weekly/monthly/yearly cumulative sales. | |
Lookup Data (Card Use) | date_range_lookup | (dateRangStruct, lookup_date) | Number value | Rolling upward lookup, i.e., if no corresponding date data, look for the nearest previous date data, suitable for inventory data or member status lookup. |
date_text_range_lookup | (dateTextRangStruct, lookup_date) | String value | ||
date_range_get | (dateRangStruct, lookup_date) | Number value | Exact lookup, suitable for sales data lookup; returns null if not found. | |
date_text_range_get | (dateTextRangStruct, lookup_date) | String value |
Case Study: Using Time Series UDF to Query Inventory
Use the date_range_build_v2 function in ETL to build inventory query fields, and use date_range_lookup for rolling upward lookup of inventory quantities in cards.
Implementation Steps
1. Process inventory query and MTD inventory query data in ETL
- Inventory query:
date_range_build_v2(collect_list(struct(`Date`,`Inventory`))) as `Inventory Query`

- MTD inventory query
date_range_period_to_date([Inventory Query],'month')

ETL preview effect:

2. Create inventory, exact lookup, and MTD inventory query data in the card
- Inventory
date_range_lookup([Inventory Query],to_date([DYNAMIC_PARAMS.Query Date]))

- Inventory Query - Exact Lookup
date_range_get([Inventory Query],to_date([DYNAMIC_PARAMS.Query Date]))

- MTD Inventory Query
date_range_lookup([MTD Inventory Query],to_date([DYNAMIC_PARAMS.Query Date]))

Card Effect:
