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

Spark SQL统计前缀匹配的分类与未分类行数问题求助

Spark SQL 解决方案

方法一:使用 LIKE 匹配前缀

先将code和category转为字符串类型,通过CONCAT拼接通配符%匹配前缀,再用CASE WHEN标记分类状态,最后统计各类行数:

SELECT
  classification,
  COUNT(*) AS row_count
FROM (
  SELECT
    CASE
      WHEN CAST(category AS STRING) LIKE CONCAT(CAST(code AS STRING), '%') THEN '已分类'
      ELSE '未分类'
    END AS classification
  FROM your_table
) t
GROUP BY classification;

方法二:使用 SUBSTRING 截取前缀对比

通过LENGTH获取code的长度,从category中截取对应长度的子串,与code转成的字符串直接对比:

SELECT
  classification,
  COUNT(*) AS row_count
FROM (
  SELECT
    CASE
      WHEN SUBSTRING(CAST(category AS STRING), 1, LENGTH(CAST(code AS STRING))) = CAST(code AS STRING) THEN '已分类'
      ELSE '未分类'
    END AS classification
  FROM your_table
) t
GROUP BY classification;

关键说明

  • 必须将code和category转为字符串类型,避免数字类型处理时的格式偏差(如前导零、长度计算错误)。
  • 两种方法均可实现需求:LIKE写法更简洁,SUBSTRING对前缀长度的控制更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:46:13