You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ClickHouse中子查询选择多类型命名元组/JSON/Map

解决ClickHouse中生成命名元组数组的问题

要让ordersHistory成为带键名的命名元组数组,只需在构造元组时为每个字段指定别名,替换子查询里的groupArray(tuple(date, orders))即可。修改后的完整查询如下:

SELECT 123456 as productId,
       ordersHistory -- 现在会输出 [{'date': '2022-11-10', 'orders': 4}] 格式的命名元组数组
FROM products
GLOBAL LEFT JOIN (
   SELECT groupArray(tuple(date as date, orders as orders)) ordersHistory,
          123456 as productId
   FROM (
      SELECT date, orders
      FROM orders
      WHERE productId = 123456 AND date BETWEEN '2022-10-10' AND '2022-11-10'
   )
   GROUP BY productId
) orders ON products.productId = orders.productId

补充说明

  • ClickHouse中,通过在tuple函数内用as为元素指定键名,就能生成命名元组,聚合后的数组会保留这些键名信息。
  • 如果需要严格约束元组的字段类型,可以显式声明元组类型,示例:
    groupArray( (date, orders)::Tuple(date Date, orders UInt32) )
    
    这种写法能避免自动类型推断可能出现的偏差。

内容的提问来源于stack exchange,提问作者bladedancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:45:30