当前位置: 首页 > wzjs >正文

站长网站建设达州市网站建设

站长网站建设,达州市网站建设,苏州网站设计选哪家,建筑公司分公司在 ClickHouse 中,可以通过 ​ARRAY JOIN 结合 ​Map 类型的内置函数,将 Map 字段的键值对展开为多行数据。以下是具体操作方法和示例: 一、使用 mapKeys 和 mapValues 展开 Map 1. 核心语法 SELECT id, key, value FROM your_table ARRAY …

在 ClickHouse 中,可以通过 ​ARRAY JOIN 结合 ​Map 类型的内置函数,将 Map 字段的键值对展开为多行数据。以下是具体操作方法和示例:


一、使用 mapKeys 和 mapValues 展开 Map

1. 核心语法
SELECT id, key, value
FROM your_table
ARRAY JOIN mapKeys(your_map_column) AS key,mapValues(your_map_column) AS value
mapKeys(map):提取 Map 的所有键,返回一个 Array(KeyType)。​mapValues(map):提取 Map 的所有值,返回一个 Array(ValueType)。​ARRAY JOIN:将两个数组按顺序展开为多行,键和值一一对应。
2. 示例

假设表结构如下:

CREATE TABLE user_tags (user_id Int32,tags Map(String, String)
) ENGINE = MergeTree()
ORDER BY user_id;-- 插入数据INSERT INTO user_tags VALUES 
(1, {'gender': 'male', 'country': 'US'}),
(2, {'age': '25', 'os': 'iOS'});-- 展开查询:SELECT user_id, key, value
FROM user_tags
ARRAY JOIN mapKeys(tags) AS key,mapValues(tags) AS value

输出:

┌─user_id─┬─key─────┬─value─┐
│       1 │ gender  │ male  │
│       1 │ country │ US    │
│       2 │ age     │ 25    │
│       2 │ os      │ iOS   │
└─────────┴─────────┴───────┘

二、直接使用 .Keys 和 .Values 语法(ClickHouse 22.6+ 支持)

从 ClickHouse 22.6 开始,可以直接通过 Map.Keys 和 Map.Values 访问键值数组:

SELECT user_id, key, value
FROM user_tags
ARRAY JOIN tags.Keys AS key,tags.Values AS value

三、使用 mapEntries 展开为键值对元组

1. 核心语法
SELECT id, entry.1 AS key,  -- 元组第一个元素为键entry.2 AS value  -- 元组第二个元素为值
FROM your_table
ARRAY JOIN mapEntries(your_map_column) AS entry-- ​mapEntries(map):将 Map 转换为 Array(Tuple(KeyType, ValueType))。
2. 示例
SELECT user_id, entry.1 AS key,entry.2 AS value
FROM user_tags
ARRAY JOIN mapEntries(tags) AS entry

四、过滤特定键值对

在展开后,可通过 WHERE 子句筛选特定键或值:

SELECT user_id, key, value
FROM user_tags
ARRAY JOIN mapKeys(tags) AS key, mapValues(tags) AS value
WHERE key = 'os'

输出:

┌─user_id─┬─key─┬─value─┐
│       2 │ os  │ iOS   │
└─────────┴─────┴───────┘

五、性能优化建议

  1. 避免展开大 Map
    Map 展开后行数会爆炸式增长(如 10,000 个键值对 → 10,000 行),建议在 WHERE 条件中提前过滤。

  2. 预聚合高频键值
    将常用键单独存为列,避免每次查询展开:

ALTER TABLE user_tags
ADD COLUMN os String MATERIALIZED tags['os'];

六、总结

通过 ARRAY JOIN 结合以下方法展开 Map:

方法适用场景
mapKeys + mapValues兼容所有 ClickHouse 版本
.Keys + .ValuesClickHouse 22.6+ 版本更简洁写法
mapEntries直接展开为元组,适合键值对联合操作

文章转载自:

http://uzyghqNH.mbprq.cn
http://0vKnmkNy.mbprq.cn
http://wRj9UnhA.mbprq.cn
http://YfxcCeOK.mbprq.cn
http://Rnw9hLsM.mbprq.cn
http://z230bDsR.mbprq.cn
http://FvbXqnSM.mbprq.cn
http://MoREB3kO.mbprq.cn
http://HUqACagL.mbprq.cn
http://9QIHK7pL.mbprq.cn
http://KbvIvYEv.mbprq.cn
http://pUKgPSmJ.mbprq.cn
http://RpqWDqzl.mbprq.cn
http://wVgW92J2.mbprq.cn
http://kFDKCDC9.mbprq.cn
http://JYDnyIbY.mbprq.cn
http://lMeXQKYt.mbprq.cn
http://5IGKKI9b.mbprq.cn
http://gVQGCTD8.mbprq.cn
http://OOgDd1yc.mbprq.cn
http://u53NCdQl.mbprq.cn
http://zd9RDscp.mbprq.cn
http://HlgWHmKv.mbprq.cn
http://3FwCK4pC.mbprq.cn
http://nUsLLxfM.mbprq.cn
http://HYFepbqM.mbprq.cn
http://5VrVQdTG.mbprq.cn
http://OHHLMf7M.mbprq.cn
http://CmMXYnSo.mbprq.cn
http://Lfpzx9eZ.mbprq.cn
http://www.dtcms.com/wzjs/637455.html

相关文章:

  • 企业网站关键词应如何优化常州网站设计公司
  • 网站名称可以更换吗c 网站开发入门视频
  • 青岛网站制作公司网络网赌代理
  • 呼市赛罕区信息网站做一顿饭工作wordpress gzip
  • 网站运营 宣传团队建设做网站PV
  • 广西玉林网站建设wordpress单本小说站
  • 网站建设平台排行榜手机版房屋3d效果图设计软件
  • 张槎手机网站建设广州十大营销策划公司
  • 企业网站设置网页的依托网站
  • 房地产网站建设内容wordpress 菜单横线
  • 便宜网站空间上海网商电子商务有限公司
  • 爱站网关键词长尾挖掘可信网站可信站点
  • 中国建设银行官网站纪念币预约北京网站建设好
  • 二手房网签合同在哪个网站做凡客诚品购物网
  • 网站制作的相关术语海南搜索引擎优化
  • 全球网站访问量排名wordpress 文字背景
  • 网站关键词排名怎么提升郑州郑东新区
  • 怎么写网站建设的说明书wordpress 标题入库
  • 福州服务专业公司网站建设视频直播需要哪些设备
  • 营销型网站制作服务商汕尾住房和建设局网站首页
  • 网站备案查询官网软件下载网站开发
  • 购物网站开发中查看订单的实现逻辑wordpress完整备份
  • 网站alexa排名查询科技布
  • 可以用vs做网站建设吗网站如何实现多语言
  • 网站建设制作过程建设网站大概需要多少钱
  • 建设部网站安全事故中国住房和城乡建设部网站公文
  • 国外mod大型网站建设团购网站费用
  • 凡科网站建设套餐报价仿5173网站
  • 做网站app价格多少钱网页云原神
  • 遂宁网站开发如何查询网站空间