函数名 | 功能描述 |
GENERATE_SERIES | GENERATE_SERIES 用于生成一个连续的整数序列,并将序列展开为多行。该函数常用于构造测试数据、根据起止值展开连续编号、补齐序列,或将区间字段展开为多行。 |
JSON_TUPLE | JSON_TUPLE 用于从 JSON 字符串中一次性提取多个字段,并以多列形式返回。相比多次调用单字段 JSON 提取函数,JSON_TUPLE 更适合从同一个 JSON 字符串中提取多个字段的场景。常用于解析日志中的 JSON 字段、提取埋点事件属性,或将半结构化 JSON 内容转换为关系型列。 |
MULTI_KEYVALUE | MULTI_KEYVALUE 用于从 Key-Value 格式字符串中一次性提取多个 Key 对应的 Value,并以多列形式返回。它可以看作 KEYVALUE 的多字段版本。当需要从同一个字符串中提取多个 Key 时,使用 MULTI_KEYVALUE 可以避免重复解析同一字段。常用于日志扩展字段解析、URL 查询参数解析、埋点属性解析等场景。 |
STRING_SPLIT | STRING_SPLIT 用于按照指定分隔符拆分字符串,并将拆分后的子字符串展开为多行。该函数常用于拆分逗号分隔的标签、将多值字段展开为多行,或将字符串列表转换为行级数据,便于后续过滤、关联或聚合。 |
SELECT valueFROM LATERAL TABLE(GENERATE_SERIES(start, stop)) AS T(value);
参数 | 类型 | 是否必填 | 说明 |
start | BIGINT / INT | 是 | 序列起始值,包含该值。 |
stop | BIGINT / INT | 是 | 序列结束值,包含该值。 |
返回列 | 类型 | 说明 |
用户指定列名 | BIGINT | 生成的序列值。列名由 LATERAL TABLE ... AS T(value) 中的别名指定。 |
SELECT valueFROM LATERAL TABLE(GENERATE_SERIES(1, 5)) AS T(value);
value |
1 |
2 |
3 |
4 |
5 |
SELECT valueFROM LATERAL TABLE(GENERATE_SERIES(start, stop)) AS T(value);
参数 | 类型 | 是否必填 | 说明 |
start | BIGINT / INT | 是 | 序列起始值,包含该值。 |
stop | BIGINT / INT | 是 | 序列结束值,包含该值。 |
返回列 | 类型 | 说明 |
用户指定列名 | BIGINT | 生成的序列值。列名由 LATERAL TABLE ... AS T(value) 中的别名指定。 |
SELECT valueFROM LATERAL TABLE(GENERATE_SERIES(1, 5)) AS T(value);
value |
1 |
2 |
3 |
4 |
5 |
SELECTkv.value1,kv.value2FROM source_table AS s,LATERAL TABLE(MULTI_KEYVALUE(s.ext, '&', '=', 'key1', 'key2')) AS kv(value1, value2);
参数 | 类型 | 是否必填 | 说明 |
str | STRING | 是 | 待解析的 Key-Value 字符串。 |
split1 | STRING | 是 | 一级分隔符,用于分隔多个 Key-Value 片段。 |
split2 | STRING | 是 | 二级分隔符,用于分隔 Key 和 Value。 |
key_name1 | STRING | 是 | 需要提取的第一个 Key 名称。 |
key_name2, key_name3, ... | STRING | 否 | 需要继续提取的其他 Key 名称。 |
返回列 | 类型 | 说明 |
用户指定列名 | STRING | 每个 Key 对应一个返回列。列名由 LATERAL TABLE ... AS alias(...) 指定。 |
SELECTuid,os,versionFROM LATERAL TABLE(MULTI_KEYVALUE('uid=10001;os=ios;version=1.2.0', ';', '=', 'uid', 'os', 'version')) AS T(uid, os, version);
uid | os | version |
10001 | ios | 1.2.0 |
SELECTt.valueFROM LATERAL TABLE(STRING_SPLIT(str, delimiter)) AS t(value);
参数 | 类型 | 是否必填 | 说明 |
str | STRING | 是 | 待拆分的字符串。 |
delimiter | STRING | 是 | 分隔符。 |
返回列 | 类型 | 说明 |
用户指定列名 | STRING | 拆分后的子字符串。列名由 LATERAL TABLE ... AS alias(...) 指定。 |
SELECT valueFROM LATERAL TABLE(STRING_SPLIT('apple,banana,orange', ',')) AS T(value);
value |
apple |
banana |
orange |
SELECT itemFROM LATERAL TABLE(STRING_SPLIT('abc', ',')) AS T(item);
item |
abc |
文档反馈