presto - 在 Presto 中为数据类型字典的列选择包含特定文本的行
问题描述
我有一个包含 2000 万行的多列的表。我只对在 presto Db 中具有数据类型字典的 global 列具有字符串“robot”的行感兴趣。我试过地图函数和数组函数,但在互联网上找不到任何东西。
我的行如下所示
列名“全局”
列值
{IS_ROBOT=false, field2=value, ROBOT=false, v_DA_E=, v_DA_T=Internet,
v_DA_F=Explorer, v_DA_VER=11}
请注意,并非每一行都包含 ROBOT 密钥正则表达式。目标是获取包含该正则表达式作为键的行
编辑数据类型是map<string,string>
解决方案
你应该能够结合
map_keys
https://trino.io/docs/current/functions/map.html#map_keys- 带数组
reduce
https://trino.io/docs/current/functions/array.html#reduce - 与 lambda 字符串匹配
喜欢:
reduce(
map_keys(your_map),
false,
(acc, el) -> acc OR el ILIKE '%robot%',
acc -> acc)
推荐阅读
- symfony - 错误 Riak\Object 不想更新表的列
- ios - Swift:如何从其他视图更改视图的背景
- javascript - Bootstrap 表 - Bootstrap 4 的多重排序中断
- docker - 如何从 Docker 容器连接到生产数据库?
- sql - 如何在存储过程中循环选择语句返回的每一行
- c++ - ASCII 字符串组合
- c - 在C中通过引用传递指针
- edi - EDI 标头 - 为什么 ISA12 和 GS8 都有版本号?
- r - 上传文件后如何在闪亮的应用程序中绘制图形
- kotlin - 如何在 Kotlin DSL 中设置 Rx Action Consumer