Doris行转列 及 API方式赋权

行专列:
ARRAY_AGG(col)
将一列中的值(包括空值 null)串联成一个数组,可以用于多行转一行(行转列)。
eg:
| c1 | array_agg(c2) |

±-----±----------------+

| 1 | [“a”,“b”] |

MAP_AGG(expr1, expr2)
返回一个 map, 由 expr1 作为键,expr2 作为对应的值。
eg:
| n_regionkey | map_agg(n_nationkey, n_name) |
±------------±--------------------------------------------------------------------------+
| 1 | {1:“ARGENTINA”, 2:“BRAZIL”, 3:“CANADA”, 17:“PERU”, 24:“UNITED STATES”} |

HTTP API接口赋权:
curl -vvv -X POST -i -H “Content-Type: application/json” -H “Authorization: Basic YWRtaW46e48abCo0OFU=” http://XXX:8030/api/query/internal/test -d “{“stmt”: “select * from test.tt”}”

### Doris 中拆分逗号分隔列为多行的数据处理方法 在 Apache Doris 中,可以通过内置的函数和 SQL 技巧来实现将逗号分隔的列值拆分为多行的功能。虽然 Doris 并未直接提供像某些其他数据库那样的字符串拆分函数,但可以借助 `LATERAL VIEW` 和 `SPLIT` 函数完成这一需求。 #### 使用 SPLIT 和 LATERAL VIEW 实现拆分功能 Doris 提供了一个非常有用的函数 `SPLIT`,它可以将一个字符串按照指定的分隔符分割为数组[^3]。接着通过 `LATERAL VIEW` 展开这个数组中的每一个元素作为单独的一行数据。以下是具体的实现方式: ```sql SELECT id, val FROM table_name LATERAL VIEW explode(SPLIT(column_name, ',')) tmp AS val; ``` - **`SPLIT(column_name, ',')`**: 这里的 `column_name` 是存储逗号分隔值的目标列名,`,` 表示分隔符。 - **`LATERAL VIEW`**: 它允许我们在原始表的基础上扩展新的虚拟视图,并将其与原表关联起来。 - **`explode()`**: 此函数用于将数组展开为多行数据。 此查询会将目标列按逗号拆分开并返回每一部分作为一个独立的结果行[^3]。 #### 示例代码展示 假设有一张名为 `test_table` 的表,其中一列表示一组由逗号分隔的城市名称 (`cities`) 如下所示: | id | cities | |----|-------------------------| | 1 | Beijing,Tokyo,London | | 2 | Paris,Berlin | 执行如下 SQL 查询可得到期望结果: ```sql SELECT id, city FROM test_table LATERAL VIEW explode(SPLIT(cities, ',')) city_table AS city; ``` 最终输出将是这样的结构形式: | id | city | |----|----------| | 1 | Beijing | | 1 | Tokyo | | 1 | London | | 2 | Paris | | 2 | Berlin | 以上操作实现了从单个字段到多行记录的有效转换过程[^3]。 #### 注意事项 需要注意的是,在实际应用过程中可能会遇到一些特殊情况,比如当某个单元格为空或者仅包含空白字符时如何处理等问题。此时可以根据具体业务逻辑增加过滤条件以确保数据质量良好无误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值