From e30b29ba6ba82e7f4ad06912aed2d1a3d0e9fc8d Mon Sep 17 00:00:00 2001
From: aceforeverd <11715200+aceforeverd@users.noreply.github.com>
Date: Sat, 27 Jul 2024 06:22:00 +0000
Subject: [PATCH] docs(udf): upgrade udf list
---
docs/zh/openmldb_sql/udfs_8h.md | 1036 ++++++++++++++++++++++---------
1 file changed, 747 insertions(+), 289 deletions(-)
diff --git a/docs/zh/openmldb_sql/udfs_8h.md b/docs/zh/openmldb_sql/udfs_8h.md
index 9cfab05977f..7d1ee54139a 100644
--- a/docs/zh/openmldb_sql/udfs_8h.md
+++ b/docs/zh/openmldb_sql/udfs_8h.md
@@ -14,7 +14,9 @@ title: udfs/udfs.h
| **[acos](/openmldb_sql/Files/udfs_8h.md#function-acos)**()|
Return the arc cosine of expr. |
| **[add](/openmldb_sql/Files/udfs_8h.md#function-add)**()|
Compute sum of two arguments. |
| **[add_months](/openmldb_sql/Files/udfs_8h.md#function-add-months)**()|
adds an integer months to a given date, returning the resulting date. |
+| **[array_combine](/openmldb_sql/Files/udfs_8h.md#function-array-combine)**()|
array_combine(delimiter, array1, array2, ...) |
| **[array_contains](/openmldb_sql/Files/udfs_8h.md#function-array-contains)**()|
array_contains(array, value) - Returns true if the array contains the value. |
+| **[array_join](/openmldb_sql/Files/udfs_8h.md#function-array-join)**()|
array_join(array, delimiter) - Concatenates the elements of the given array using the delimiter. Any null value is filtered. |
| **[asin](/openmldb_sql/Files/udfs_8h.md#function-asin)**()|
Return the arc sine of expr. |
| **[at](/openmldb_sql/Files/udfs_8h.md#function-at)**()| |
| **[atan](/openmldb_sql/Files/udfs_8h.md#function-atan)**()|
Return the arc tangent of expr If called with one parameter, this function returns the arc tangent of expr. If called with two parameters X and Y, this function returns the arc tangent of Y / X. |
@@ -24,6 +26,7 @@ title: udfs/udfs.h
| **[avg_cate_where](/openmldb_sql/Files/udfs_8h.md#function-avg-cate-where)**()|
Compute average of values matching specified condition grouped by category key and output string. Each group is represented as 'K:V', separated by comma, and sorted by key in ascend order. |
| **[avg_where](/openmldb_sql/Files/udfs_8h.md#function-avg-where)**()|
Compute average of values match specified condition. |
| **[bigint](/openmldb_sql/Files/udfs_8h.md#function-bigint)**()| |
+| **[binary_label](/openmldb_sql/Files/udfs_8h.md#function-binary-label)**()|
Set the column signature to binary label. Example: |
| **[bool](/openmldb_sql/Files/udfs_8h.md#function-bool)**()|
Cast string expression to bool. |
| **[ceil](/openmldb_sql/Files/udfs_8h.md#function-ceil)**()|
Return the smallest integer value not less than the expr. |
| **[ceiling](/openmldb_sql/Files/udfs_8h.md#function-ceiling)**()| |
@@ -32,12 +35,14 @@ title: udfs/udfs.h
| **[character_length](/openmldb_sql/Files/udfs_8h.md#function-character-length)**()| |
| **[concat](/openmldb_sql/Files/udfs_8h.md#function-concat)**()|
This function returns a string resulting from the joining of two or more string values in an end-to-end manner. (To add a separating value during joining, see concat_ws.) |
| **[concat_ws](/openmldb_sql/Files/udfs_8h.md#function-concat-ws)**()|
Returns a string resulting from the joining of two or more string value in an end-to-end manner. It separates those concatenated string values with the delimiter specified in the first function argument. |
+| **[continuous](/openmldb_sql/Files/udfs_8h.md#function-continuous)**()|
Set the column signature to continuous feature. Example: |
| **[cos](/openmldb_sql/Files/udfs_8h.md#function-cos)**()|
Return the cosine of expr. |
| **[cot](/openmldb_sql/Files/udfs_8h.md#function-cot)**()|
Return the cotangent of expr. |
| **[count](/openmldb_sql/Files/udfs_8h.md#function-count)**()|
Compute number of values. |
| **[count_cate](/openmldb_sql/Files/udfs_8h.md#function-count-cate)**()|
Compute count of values grouped by category key and output string. Each group is represented as 'K:V' and separated by comma in outputs and are sorted by key in ascend order. |
| **[count_cate_where](/openmldb_sql/Files/udfs_8h.md#function-count-cate-where)**()|
Compute count of values matching specified condition grouped by category key and output string. Each group is represented as 'K:V' and separated by comma in outputs and are sorted by key in ascend order. |
| **[count_where](/openmldb_sql/Files/udfs_8h.md#function-count-where)**()|
Compute number of values match specified condition. |
+| **[csv](/openmldb_sql/Files/udfs_8h.md#function-csv)**()|
Return instance in CSV format. Example: |
| **[date](/openmldb_sql/Files/udfs_8h.md#function-date)**()|
Cast timestamp or string expression to date (date >= 1900-01-01) |
| **[date_format](/openmldb_sql/Files/udfs_8h.md#function-date-format)**()|
Formats the date value according to the format string. |
| **[datediff](/openmldb_sql/Files/udfs_8h.md#function-datediff)**()|
days difference from date1 to date2 |
@@ -46,6 +51,7 @@ title: udfs/udfs.h
| **[dayofweek](/openmldb_sql/Files/udfs_8h.md#function-dayofweek)**()|
Return the day of week for a timestamp or date. |
| **[dayofyear](/openmldb_sql/Files/udfs_8h.md#function-dayofyear)**()|
Return the day of year for a timestamp or date. Returns 0 given an invalid date. |
| **[degrees](/openmldb_sql/Files/udfs_8h.md#function-degrees)**()|
Convert radians to degrees. |
+| **[discrete](/openmldb_sql/Files/udfs_8h.md#function-discrete)**()|
Set the column signature to discrete feature. |
| **[distinct_count](/openmldb_sql/Files/udfs_8h.md#function-distinct-count)**()|
Compute number of distinct values. |
| **[double](/openmldb_sql/Files/udfs_8h.md#function-double)**()|
Cast string expression to double. |
| **[drawdown](/openmldb_sql/Files/udfs_8h.md#function-drawdown)**()|
Compute drawdown of values. |
@@ -54,9 +60,10 @@ title: udfs/udfs.h
| **[ew_avg](/openmldb_sql/Files/udfs_8h.md#function-ew-avg)**()|
Compute exponentially-weighted average of values. It's equivalent to pandas ewm(alpha={alpha}, adjust=True, ignore_na=True, com=None, span=None, halflife=None, min_periods=0) |
| **[exp](/openmldb_sql/Files/udfs_8h.md#function-exp)**()|
Return the value of e (the base of natural logarithms) raised to the power of expr. |
| **[farm_fingerprint](/openmldb_sql/Files/udfs_8h.md#function-farm-fingerprint)**()| |
-| **[first_value](/openmldb_sql/Files/udfs_8h.md#function-first-value)**()|
Returns the value of expr from the latest row (last row) of the window frame. |
+| **[first_value](/openmldb_sql/Files/udfs_8h.md#function-first-value)**()|
`first_value(expr[, isIgnoreNull])` - Returns the value of `expr` from the first row of the window frame. If `isIgnoreNull` is true, returns only non-null values. |
| **[float](/openmldb_sql/Files/udfs_8h.md#function-float)**()|
Cast string expression to float. |
| **[floor](/openmldb_sql/Files/udfs_8h.md#function-floor)**()|
Return the largest integer value not less than the expr. |
+| **[gcformat](/openmldb_sql/Files/udfs_8h.md#function-gcformat)**()|
Return instance in GCFormat format. Example: |
| **[get_json_object](/openmldb_sql/Files/udfs_8h.md#function-get-json-object)**()|
Extracts a JSON object from [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901)|
| **[hash64](/openmldb_sql/Files/udfs_8h.md#function-hash64)**()|
Returns a hash value of the arguments. It is not a cryptographic hash function and should not be used as such. |
| **[hex](/openmldb_sql/Files/udfs_8h.md#function-hex)**()|
Convert integer to hexadecimal. |
@@ -71,21 +78,27 @@ title: udfs/udfs.h
| **[int32](/openmldb_sql/Files/udfs_8h.md#function-int32)**()|
Cast string expression to int32. |
| **[int64](/openmldb_sql/Files/udfs_8h.md#function-int64)**()|
Cast string expression to int64. |
| **[is_null](/openmldb_sql/Files/udfs_8h.md#function-is-null)**()|
Check if input value is null, return bool. |
+| **[isin](/openmldb_sql/Files/udfs_8h.md#function-isin)**()|
isin(value, array) - Returns true if the array contains the value. |
| **[isnull](/openmldb_sql/Files/udfs_8h.md#function-isnull)**()| |
| **[join](/openmldb_sql/Files/udfs_8h.md#function-join)**()|
For each string value from specified column of window, join by delimeter. Null values are skipped. |
| **[json_array_length](/openmldb_sql/Files/udfs_8h.md#function-json-array-length)**()|
Returns the number of elements in the outermost JSON array. |
| **[lag](/openmldb_sql/Files/udfs_8h.md#function-lag)**()|
Returns value evaluated at the row that is offset rows before the current row within the partition. Offset is evaluated with respect to the current row. |
| **[last_day](/openmldb_sql/Files/udfs_8h.md#function-last-day)**()|
Return the last day of the month to which the date belongs to. |
+| **[last_value](/openmldb_sql/Files/udfs_8h.md#function-last-value)**()|
`last_value(expr[, isIgnoreNull])` - Returns the value of `expr` from the last row of the window frame. If `isIgnoreNull` is true, returns only non-null values. |
| **[lcase](/openmldb_sql/Files/udfs_8h.md#function-lcase)**()|
Convert all the characters to lowercase. Note that characters with values > 127 are simply returned. |
+| **[libsvm](/openmldb_sql/Files/udfs_8h.md#function-libsvm)**()|
Return instance in LIBSVM format. Example: |
| **[like_match](/openmldb_sql/Files/udfs_8h.md#function-like-match)**()|
pattern match same as LIKE predicate |
| **[list_except_by_key](/openmldb_sql/Files/udfs_8h.md#function-list-except-by-key)**()|
Return list of elements in list1 but keys not in except_str. |
| **[list_except_by_value](/openmldb_sql/Files/udfs_8h.md#function-list-except-by-value)**()|
Return list of elements in list1 but values not in except_str. |
| **[ln](/openmldb_sql/Files/udfs_8h.md#function-ln)**()|
Return the natural logarithm of expr. |
+| **[locate](/openmldb_sql/Files/udfs_8h.md#function-locate)**()|
Returns the position of the first occurrence of substr in str after position pos. The given pos and return value are 1-based. |
| **[log](/openmldb_sql/Files/udfs_8h.md#function-log)**()|
log(base, expr) If called with one parameter, this function returns the natural logarithm of expr. If called with two parameters, this function returns the logarithm of expr to the base. |
| **[log10](/openmldb_sql/Files/udfs_8h.md#function-log10)**()|
Return the base-10 logarithm of expr. |
| **[log2](/openmldb_sql/Files/udfs_8h.md#function-log2)**()|
Return the base-2 logarithm of expr. |
| **[lower](/openmldb_sql/Files/udfs_8h.md#function-lower)**()| |
| **[make_tuple](/openmldb_sql/Files/udfs_8h.md#function-make-tuple)**()| |
+| **[map](/openmldb_sql/Files/udfs_8h.md#function-map)**()|
map(key1, value1, key2, value2, ...) - Creates a map with the given key/value pairs. |
+| **[map_keys](/openmldb_sql/Files/udfs_8h.md#function-map-keys)**()|
map_keys(map) - Returns an unordered array containing the keys of the map. |
| **[max](/openmldb_sql/Files/udfs_8h.md#function-max)**()|
Compute maximum of values. |
| **[max_cate](/openmldb_sql/Files/udfs_8h.md#function-max-cate)**()|
Compute maximum of values grouped by category key and output string. Each group is represented as 'K:V' and separated by comma in outputs and are sorted by key in ascend order. |
| **[max_cate_where](/openmldb_sql/Files/udfs_8h.md#function-max-cate-where)**()|
Compute maximum of values matching specified condition grouped by category key and output string. Each group is represented as 'K:V' and separated by comma in outputs and are sorted by key in ascend order. |
@@ -99,7 +112,8 @@ title: udfs/udfs.h
| **[minimum](/openmldb_sql/Files/udfs_8h.md#function-minimum)**()|
Compute minimum of two arguments. |
| **[minute](/openmldb_sql/Files/udfs_8h.md#function-minute)**()|
Return the minute for a timestamp. |
| **[month](/openmldb_sql/Files/udfs_8h.md#function-month)**()|
Return the month part of a timestamp or date. |
-| **[nth_value_where](/openmldb_sql/Files/udfs_8h.md#function-nth-value-where)**()|
Returns the value of expr from the idx th row matches the condition. |
+| **[multiclass_label](/openmldb_sql/Files/udfs_8h.md#function-multiclass-label)**()|
Set the column signature to multiclass label. Example: |
+| **[nth_value_where](/openmldb_sql/Files/udfs_8h.md#function-nth-value-where)**()|
Returns the value of expr from the idx th row matches the condition. Index start from 1 or -1. |
| **[nvl](/openmldb_sql/Files/udfs_8h.md#function-nvl)**()| |
| **[nvl2](/openmldb_sql/Files/udfs_8h.md#function-nvl2)**()|
nvl2(expr1, expr2, expr3) - Returns expr2 if expr1 is not null, or expr3 otherwise. |
| **[pmod](/openmldb_sql/Files/udfs_8h.md#function-pmod)**()|
Compute pmod of two arguments. If any param is NULL, output NULL. If divisor is 0, output NULL. |
@@ -107,6 +121,7 @@ title: udfs/udfs.h
| **[power](/openmldb_sql/Files/udfs_8h.md#function-power)**()| |
| **[radians](/openmldb_sql/Files/udfs_8h.md#function-radians)**()|
Returns the argument X, converted from degrees to radians. (Note that π radians equals 180 degrees.) |
| **[regexp_like](/openmldb_sql/Files/udfs_8h.md#function-regexp-like)**()|
pattern match same as RLIKE predicate (based on RE2) |
+| **[regression_label](/openmldb_sql/Files/udfs_8h.md#function-regression-label)**()|
Set the column signature to regression label. Example: |
| **[replace](/openmldb_sql/Files/udfs_8h.md#function-replace)**()|
replace(str, search[, replace]) - Replaces all occurrences of `search` with `replace`|
| **[reverse](/openmldb_sql/Files/udfs_8h.md#function-reverse)**()|
Returns the reversed given string. |
| **[round](/openmldb_sql/Files/udfs_8h.md#function-round)**()|
Returns expr rounded to d decimal places using HALF_UP rounding mode. |
@@ -324,6 +339,33 @@ SELECT add_months('2012-01-31', 1);
* [`date`, `int32`]
* [`date`, `int64`]
+### function array_combine
+
+```cpp
+array_combine()
+```
+
+**Description**:
+
+array_combine(delimiter, array1, array2, ...)
+
+**Since**:
+0.9.2
+
+
+return array of strings for input array1, array2, ... doing cartesian product. Each product is joined with {delimiter} as a string. Empty string used if {delimiter} is null.
+
+Example:
+
+```sql
+
+select array_combine("-", ["1", "2"], ["3", "4"]);
+-- output ["1-3", "1-4", "2-3", "2-4"]
+```
+
+
+**Supported Types**:
+
### function array_contains
```cpp
@@ -359,6 +401,33 @@ select array_contains([2,2], 2) as c0;
* [array_string, `string`]
* [array_timestamp, `timestamp`]
+### function array_join
+
+```cpp
+array_join()
+```
+
+**Description**:
+
+array_join(array, delimiter) - Concatenates the elements of the given array using the delimiter. Any null value is filtered.
+
+**Since**:
+0.9.2
+
+
+Example:
+
+```sql
+
+select array_join(["1", "2"], "-");
+-- output "1-2"
+```
+
+
+**Supported Types**:
+
+* [array_string, `string`]
+
### function asin
```cpp
@@ -501,13 +570,13 @@ Compute average of values.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -541,13 +610,13 @@ Compute average of values grouped by category key and output string. Each group
Example:
-| value | catagory |
+| value | catagory |
| -------- | -------- |
-| 0 | x |
-| 1 | y |
-| 2 | x |
-| 3 | y |
-| 4 | x |
+| 0 | x |
+| 1 | y |
+| 2 | x |
+| 3 | y |
+| 4 | x |
```sql
@@ -586,13 +655,13 @@ Compute average of values matching specified condition grouped by category key a
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | true | x |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | true | x |
```sql
@@ -634,13 +703,13 @@ Compute average of values match specified condition.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -665,6 +734,31 @@ bigint()
alias to int64
+### function binary_label
+
+```cpp
+binary_label()
+```
+
+**Description**:
+
+Set the column signature to binary label. Example:
+
+**Since**:
+0.9.0
+
+
+```sql
+
+select csv(binary_label(true));
+-- output 1
+```
+
+
+**Supported Types**:
+
+* [`bool`]
+
### function bool
```cpp
@@ -855,6 +949,32 @@ select concat_ws("-", "1", 2, 3, 4, 5.6, 7.8, Timestamp(1590115420000L));
* [`any`, ...]
+### function continuous
+
+```cpp
+continuous()
+```
+
+**Description**:
+
+Set the column signature to continuous feature. Example:
+
+**Since**:
+0.9.0
+
+
+```sql
+
+select csv(continuous(1.5));
+-- output 1.500000
+```
+
+
+**Supported Types**:
+
+* [`bool`]
+* [`number`]
+
### function cos
```cpp
@@ -946,13 +1066,13 @@ Compute number of values.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -987,13 +1107,13 @@ Compute count of values grouped by category key and output string. Each group is
Example:
-| value | catagory |
+| value | catagory |
| -------- | -------- |
-| 0 | x |
-| 1 | y |
-| 2 | x |
-| 3 | y |
-| 4 | x |
+| 0 | x |
+| 1 | y |
+| 2 | x |
+| 3 | y |
+| 4 | x |
```sql
@@ -1032,13 +1152,13 @@ Compute count of values matching specified condition grouped by category key and
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | true | x |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | true | x |
```sql
@@ -1080,13 +1200,13 @@ Compute number of values match specified condition.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -1101,6 +1221,31 @@ SELECT count_where(value, value > 2) OVER w;
* [`list`, `list`]
* [`list`, `list`]
+### function csv
+
+```cpp
+csv()
+```
+
+**Description**:
+
+Return instance in CSV format. Example:
+
+**Since**:
+0.9.0
+
+
+```sql
+
+select csv(multiclass_label(6), continuous(1.5), category(3));
+-- output 6,1.500000,2681491882390849628
+```
+
+
+**Supported Types**:
+
+* [...]
+
### function date
```cpp
@@ -1351,6 +1496,55 @@ SELECT degrees(3.141592653589793);
* [`double`]
+### function discrete
+
+```cpp
+discrete()
+```
+
+**Description**:
+
+Set the column signature to discrete feature.
+
+**Parameters**:
+
+ * **input** Input column
+ * **bucket_size** (Optional) The result is within [0, bucket_size) Example: ```sql
+
+select csv(discrete(3), discrete(3, 100));
+-- output 2681491882390849628,28
+```
+
+
+**Since**:
+0.9.0
+
+
+
+**Supported Types**:
+
+* [`bool`]
+* [`bool`, `int32`]
+* [`bool`, `int64`]
+* [`date`]
+* [`date`, `int32`]
+* [`date`, `int64`]
+* [`int16`]
+* [`int16`, `int32`]
+* [`int16`, `int64`]
+* [`int32`]
+* [`int32`, `int32`]
+* [`int32`, `int64`]
+* [`int64`]
+* [`int64`, `int32`]
+* [`int64`, `int64`]
+* [`string`]
+* [`string`, `int32`]
+* [`string`, `int64`]
+* [`timestamp`]
+* [`timestamp`, `int32`]
+* [`timestamp`, `int64`]
+
### function distinct_count
```cpp
@@ -1374,13 +1568,13 @@ Compute number of distinct values.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 0 |
-| 2 |
-| 2 |
-| 4 |
+| 0 |
+| 0 |
+| 2 |
+| 2 |
+| 4 |
```sql
@@ -1450,14 +1644,14 @@ It requires that all values are non-negative. Negative values will be ignored.
Example:
-| value |
+| value |
| -------- |
-| 1 |
-| 8 |
-| 5 |
-| 2 |
-| 10 |
-| 4 |
+| 1 |
+| 8 |
+| 5 |
+| 2 |
+| 10 |
+| 4 |
```sql
@@ -1568,13 +1762,13 @@ It requires that values are ordered so that it can only be used with WINDOW (PAR
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -1637,12 +1831,14 @@ first_value()
**Description**:
-Returns the value of expr from the latest row (last row) of the window frame.
+`first_value(expr[, isIgnoreNull])` - Returns the value of `expr` from the first row of the window frame. If `isIgnoreNull` is true, returns only non-null values.
**Since**:
0.1.0
+NOTE before version 0.9.0, first_value returns the expr of latest row (last row), which is the semantic equivalent to `last_value` in standard SQL. The behavior is corrected in version 0.9.0.
+
Example:
```sql
@@ -1652,11 +1848,11 @@ window w as (partition by gp order by ts rows between 3 preceding and current ro
```
-| id | gp | ts | agg |
+| id | gp | ts | agg |
| -------- | -------- | -------- | -------- |
-| 1 | 100 | 98 | 98 |
-| 2 | 100 | 99 | 99 |
-| 3 | 100 | 100 | 100 |
+| 1 | 100 | 98 | 98 |
+| 2 | 100 | 99 | 98 |
+| 3 | 100 | 100 | 98 |
@@ -1722,6 +1918,31 @@ SELECT FLOOR(1.23);
* [`bool`]
* [`number`]
+### function gcformat
+
+```cpp
+gcformat()
+```
+
+**Description**:
+
+Return instance in GCFormat format. Example:
+
+**Since**:
+0.9.0
+
+
+```sql
+
+select gcformat(multiclass_label(6), continuous(1.5), category(3));
+-- output 6 | 1:0:1.500000 2:2681491882390849628
+```
+
+
+**Supported Types**:
+
+* [...]
+
### function get_json_object
```cpp
@@ -2150,6 +2371,41 @@ Check if input value is null, return bool.
* [`any`]
+### function isin
+
+```cpp
+isin()
+```
+
+**Description**:
+
+isin(value, array) - Returns true if the array contains the value.
+
+**Since**:
+0.9.1
+
+
+Example:
+
+```sql
+
+select isin(2, [2,2]) as c0;
+-- output true
+```
+
+
+**Supported Types**:
+
+* [`bool`, array_bool]
+* [`date`, array_date]
+* [`double`, array_double]
+* [`float`, array_float]
+* [`int16`, array_int16]
+* [`int32`, array_int32]
+* [`int64`, array_int64]
+* [`string`, array_string]
+* [`timestamp`, array_timestamp]
+
### function isnull
```cpp
@@ -2259,13 +2515,13 @@ The offset in window is `nth_value()`, not `[lag()](/openmldb_sql/Files/udfs_8h.
Example:
-| c1 | c2 |
+| c1 | c2 |
| -------- | -------- |
-| 0 | 1 |
-| 1 | 1 |
-| 2 | 2 |
-| 3 | 2 |
-| 4 | 2 |
+| 0 | 1 |
+| 1 | 1 |
+| 2 | 2 |
+| 3 | 2 |
+| 4 | 2 |
```sql
@@ -2292,7 +2548,8 @@ SELECT at(c1, 1) over w as co from t1 window w as(partition by c2 order by c1 ro
**Supported Types**:
-* [`list`, `int64`]
+* [`list`, `int64`]
+* [`list`, `int64`, `bool`]
### function last_day
@@ -2327,6 +2584,39 @@ select last_day(timestamp("2021-02-12"));
* [`int64`]
* [`timestamp`]
+### function last_value
+
+```cpp
+last_value()
+```
+
+**Description**:
+
+`last_value(expr[, isIgnoreNull])` - Returns the value of `expr` from the last row of the window frame. If `isIgnoreNull` is true, returns only non-null values.
+
+**Since**:
+0.9.0
+
+
+Example:
+
+```sql
+
+select id, gp, ts, last_value(ts) over w as agg from t1
+window w as (partition by gp order by ts rows between 3 preceding and current row);
+```
+
+
+| id | gp | ts | agg |
+| -------- | -------- | -------- | -------- |
+| 1 | 100 | 98 | 98 |
+| 2 | 100 | 99 | 99 |
+| 3 | 100 | 100 | 100 |
+
+
+
+**Supported Types**:
+
### function lcase
```cpp
@@ -2354,6 +2644,31 @@ SELECT LCASE('SQl') as str1;
* [`string`]
+### function libsvm
+
+```cpp
+libsvm()
+```
+
+**Description**:
+
+Return instance in LIBSVM format. Example:
+
+**Since**:
+0.9.0
+
+
+```sql
+
+select libsvm(multiclass_label(6), continuous(1.5), category(3));
+-- output 6 1:1.500000 2681491882390849628:1
+```
+
+
+**Supported Types**:
+
+* [...]
+
### function like_match
```cpp
@@ -2501,6 +2816,43 @@ SELECT LN(1);
* [`bool`]
* [`number`]
+### function locate
+
+```cpp
+locate()
+```
+
+**Description**:
+
+Returns the position of the first occurrence of substr in str after position pos. The given pos and return value are 1-based.
+
+**Parameters**:
+
+ * **substr**
+ * **str**
+ * **pos** define the begining search position of the str.
+
+* Negetive value is illegal and will return 0 directly;
+* If substr is "" and pos less equal len(str) + 1, return pos, other case return 0;
+
+
+Example:
+
+```sql
+
+select locate("wo", "hello world", 2);
+--output 7
+
+select locate("Wo", "hello world", 2);
+--output 0
+```
+
+
+**Supported Types**:
+
+* [`string`, `string`]
+* [`string`, `string`, `int32`]
+
### function log
```cpp
@@ -2630,6 +2982,58 @@ make_tuple()
* [...]
+### function map
+
+```cpp
+map()
+```
+
+**Description**:
+
+map(key1, value1, key2, value2, ...) - Creates a map with the given key/value pairs.
+
+**Since**:
+0.9.0
+
+
+Example:
+
+```sql
+
+select map(1, '1', 2, '2');
+-- {1: "1", 2: "2"}
+```
+
+
+**Supported Types**:
+
+* [...]
+
+### function map_keys
+
+```cpp
+map_keys()
+```
+
+**Description**:
+
+map_keys(map) - Returns an unordered array containing the keys of the map.
+
+**Since**:
+0.9.0
+
+
+Example:
+
+```sql
+
+select map_keys(map(1, '2', 3, '4'));
+-- [1, 3]
+```
+
+
+**Supported Types**:
+
### function max
```cpp
@@ -2653,13 +3057,13 @@ Compute maximum of values.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -2696,13 +3100,13 @@ Compute maximum of values grouped by category key and output string. Each group
Example:
-| value | catagory |
+| value | catagory |
| -------- | -------- |
-| 0 | x |
-| 1 | y |
-| 2 | x |
-| 3 | y |
-| 4 | x |
+| 0 | x |
+| 1 | y |
+| 2 | x |
+| 3 | y |
+| 4 | x |
```sql
@@ -2741,13 +3145,13 @@ Compute maximum of values matching specified condition grouped by category key a
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | true | x |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | true | x |
```sql
@@ -2789,13 +3193,13 @@ Compute maximum of values match specified condition.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -2861,12 +3265,12 @@ Compute the median of values.
Example:
-| value |
+| value |
| -------- |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -2903,13 +3307,13 @@ Compute minimum of values.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -2946,13 +3350,13 @@ Compute minimum of values grouped by category key and output string. Each group
Example:
-| value | catagory |
+| value | catagory |
| -------- | -------- |
-| 0 | x |
-| 1 | y |
-| 2 | x |
-| 3 | y |
-| 4 | x |
+| 0 | x |
+| 1 | y |
+| 2 | x |
+| 3 | y |
+| 4 | x |
```sql
@@ -2991,14 +3395,14 @@ Compute minimum of values matching specified condition grouped by category key a
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 1 | true | y |
-| 4 | true | x |
-| 3 | true | y |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 1 | true | y |
+| 4 | true | x |
+| 3 | true | y |
```sql
@@ -3040,13 +3444,13 @@ Compute minimum of values match specified condition.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -3146,6 +3550,34 @@ select month(timestamp(1590115420000));
* [`int64`]
* [`timestamp`]
+### function multiclass_label
+
+```cpp
+multiclass_label()
+```
+
+**Description**:
+
+Set the column signature to multiclass label. Example:
+
+**Since**:
+0.9.0
+
+
+```sql
+
+select csv(multiclass_label(6));
+-- output 6
+```
+
+
+**Supported Types**:
+
+* [`bool`]
+* [`int16`]
+* [`int32`]
+* [`int64`]
+
### function nth_value_where
```cpp
@@ -3154,7 +3586,7 @@ nth_value_where()
**Description**:
-Returns the value of expr from the idx th row matches the condition.
+Returns the value of expr from the idx th row matches the condition. Index start from 1 or -1.
**Parameters**:
@@ -3176,12 +3608,12 @@ select col1, cond, gp, nth_value_where(col1, 2, cond) over (partition by gp orde
```
-| col1 | cond | gp | agg |
+| col1 | cond | gp | agg |
| -------- | -------- | -------- | -------- |
-| 1 | true | 100 | NULL |
-| 2 | false | 100 | NULL |
-| 3 | NULL | 100 | NULL |
-| 4 | true | 100 | 4 |
+| 1 | true | 100 | NULL |
+| 2 | false | 100 | NULL |
+| 3 | NULL | 100 | NULL |
+| 4 | true | 100 | 4 |
@@ -3411,6 +3843,32 @@ select regexp_like('append', 'ap*end')
* [`string`, `string`]
* [`string`, `string`, `string`]
+### function regression_label
+
+```cpp
+regression_label()
+```
+
+**Description**:
+
+Set the column signature to regression label. Example:
+
+**Since**:
+0.9.0
+
+
+```sql
+
+select csv(regression_label(1.5));
+-- output 1.500000
+```
+
+
+**Supported Types**:
+
+* [`bool`]
+* [`number`]
+
### function replace
```cpp
@@ -3810,12 +4268,12 @@ Alias function: `std`, `stddev_samp`
Example:
-| value |
+| value |
| -------- |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -3852,12 +4310,12 @@ Compute population standard deviation of values, i.e., `sqrt( sum((x_i - avg)^2)
Example:
-| value |
+| value |
| -------- |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -4013,13 +4471,13 @@ Compute sum of values.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -4053,13 +4511,13 @@ Compute sum of values grouped by category key and output string. Each group is r
Example:
-| value | catagory |
+| value | catagory |
| -------- | -------- |
-| 0 | x |
-| 1 | y |
-| 2 | x |
-| 3 | y |
-| 4 | x |
+| 0 | x |
+| 1 | y |
+| 2 | x |
+| 3 | y |
+| 4 | x |
```sql
@@ -4098,13 +4556,13 @@ Compute sum of values matching specified condition grouped by category key and o
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | true | x |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | true | x |
```sql
@@ -4146,13 +4604,13 @@ Compute sum of values match specified condition.
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
+| 0 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
```sql
@@ -4262,13 +4720,13 @@ Compute top k of values and output string separated by comma. The outputs are so
Example:
-| value |
+| value |
| -------- |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
-| 4 |
+| 1 |
+| 2 |
+| 3 |
+| 4 |
+| 4 |
```sql
@@ -4319,11 +4777,11 @@ SELECT key, top1_ratio(key) over () as ratio FROM t1;
```
-| key | ratio |
+| key | ratio |
| -------- | -------- |
-| 1 | 1.0 |
-| 2 | 0.5 |
-| NULL | 0.5 |
+| 1 | 1.0 |
+| 2 | 0.5 |
+| NULL | 0.5 |
@@ -4360,15 +4818,15 @@ Compute average of values matching specified condition grouped by category key.
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | true | x |
-| 5 | true | z |
-| 6 | false | z |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | true | x |
+| 5 | true | z |
+| 6 | false | z |
```sql
@@ -4420,15 +4878,15 @@ Compute count of values matching specified condition grouped by category key. Ou
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | true | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | false | x |
-| 5 | true | z |
-| 6 | true | z |
+| 0 | true | x |
+| 1 | true | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | false | x |
+| 5 | true | z |
+| 6 | true | z |
```sql
@@ -4480,15 +4938,15 @@ Compute maximum of values matching specified condition grouped by category key.
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | true | x |
-| 5 | true | z |
-| 6 | false | z |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | true | x |
+| 5 | true | z |
+| 6 | false | z |
```sql
@@ -4540,15 +4998,15 @@ Compute minimum of values matching specified condition grouped by category key.
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | true | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | false | x |
-| 5 | true | z |
-| 6 | true | z |
+| 0 | true | x |
+| 1 | true | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | false | x |
+| 5 | true | z |
+| 6 | true | z |
```sql
@@ -4602,15 +5060,15 @@ For each group, ratio value is `value` expr count matches condtion divide total
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 2 | true | x |
-| 4 | true | x |
-| 1 | true | y |
-| 3 | false | y |
-| 5 | true | z |
-| 6 | true | z |
+| 0 | true | x |
+| 2 | true | x |
+| 4 | true | x |
+| 1 | true | y |
+| 3 | false | y |
+| 5 | true | z |
+| 6 | true | z |
```sql
@@ -4661,15 +5119,15 @@ Compute sum of values matching specified condition grouped by category key. Outp
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | true | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | false | x |
-| 5 | true | z |
-| 6 | true | z |
+| 0 | true | x |
+| 1 | true | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | false | x |
+| 5 | true | z |
+| 6 | true | z |
```sql
@@ -4721,15 +5179,15 @@ Compute average of values matching specified condition grouped by category key.
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 3 | false | y |
-| 4 | true | x |
-| 5 | true | z |
-| 6 | false | z |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 3 | false | y |
+| 4 | true | x |
+| 5 | true | z |
+| 6 | false | z |
```sql
@@ -4781,15 +5239,15 @@ Compute count of values matching specified condition grouped by category key. Ou
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | true | y |
-| 2 | true | x |
-| 3 | false | y |
-| 4 | true | x |
-| 5 | true | z |
-| 6 | true | z |
+| 0 | true | x |
+| 1 | true | y |
+| 2 | true | x |
+| 3 | false | y |
+| 4 | true | x |
+| 5 | true | z |
+| 6 | true | z |
```sql
@@ -4841,15 +5299,15 @@ Compute maximum of values matching specified condition grouped by category key.
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | false | y |
-| 2 | false | x |
-| 3 | true | y |
-| 4 | true | x |
-| 5 | true | z |
-| 6 | false | z |
+| 0 | true | x |
+| 1 | false | y |
+| 2 | false | x |
+| 3 | true | y |
+| 4 | true | x |
+| 5 | true | z |
+| 6 | false | z |
```sql
@@ -4901,15 +5359,15 @@ Compute minimum of values matching specified condition grouped by category key.
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | true | y |
-| 2 | true | x |
-| 3 | true | y |
-| 4 | false | x |
-| 5 | true | z |
-| 6 | true | z |
+| 0 | true | x |
+| 1 | true | y |
+| 2 | true | x |
+| 3 | true | y |
+| 4 | false | x |
+| 5 | true | z |
+| 6 | true | z |
```sql
@@ -4963,15 +5421,15 @@ For each group, ratio value is `value` expr count matches condtion divide total
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 2 | true | x |
-| 4 | true | x |
-| 1 | true | y |
-| 3 | false | y |
-| 5 | true | z |
-| 6 | true | z |
+| 0 | true | x |
+| 2 | true | x |
+| 4 | true | x |
+| 1 | true | y |
+| 3 | false | y |
+| 5 | true | z |
+| 6 | true | z |
```sql
@@ -5022,15 +5480,15 @@ Compute sum of values matching specified condition grouped by category key. Outp
Example:
-| value | condition | catagory |
+| value | condition | catagory |
| -------- | -------- | -------- |
-| 0 | true | x |
-| 1 | true | y |
-| 2 | false | x |
-| 3 | false | y |
-| 4 | true | x |
-| 5 | true | z |
-| 6 | true | z |
+| 0 | true | x |
+| 1 | true | y |
+| 2 | false | x |
+| 3 | false | y |
+| 4 | true | x |
+| 5 | true | z |
+| 6 | true | z |
```sql
@@ -5245,11 +5703,11 @@ Compute population variance of values, i.e., `sum((x_i - avg)^2) / n`
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 3 |
-| 6 |
+| 0 |
+| 3 |
+| 6 |
```sql
@@ -5286,11 +5744,11 @@ Compute population variance of values, i.e., `sum((x_i - avg)^2) / (n-1)`
Example:
-| value |
+| value |
| -------- |
-| 0 |
-| 3 |
-| 6 |
+| 0 |
+| 3 |
+| 6 |
```sql