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

SparkSQL 聚合函数 COUNT 对 NULL 值的处理

SparkSQL 聚合函数 COUNT 对 NULL 值的处理

官网:https://spark.apache.org/docs/4.0.0/sql-ref-functions.html

https://spark.apache.org/docs/4.0.0/sql-ref-null-semantics.html#builtin-aggregate-expressions

在这里插入图片描述

表达式是否统计 NULL说明
COUNT(*)✅ 是统计所有行数,不管有没有 NULL
COUNT(列名)❌ 否只统计该列中 非 NULL 值的数量
COUNT(DISTINCT 列名)❌ 否忽略 NULL,并去重统计
COUNT(1)✅ 是等价于 COUNT(*)

Demo:

%sql
WITH data AS (SELECT * FROM VALUES(1, 'A'),(2, NULL),(3, 'B'),(4, NULL),(5, 'A')AS tab(id, category)
)
SELECTcount(*) AS `count(*)`,count(category) AS `count(category)`,count(1) AS `count(1)`,count(DISTINCT category) AS `count(DISTINCT category)`
FROM data;

输出结果:

在这里插入图片描述

  • count(*) = 5:总共有 5 行,包含 NULL
  • count(category) = 3:只有 3 个非 NULL 值(‘A’, ‘B’, ‘A’)。
  • count(1) = 5:等价于 count(*)
  • count(DISTINCT category) = 2:非 NULL 的唯一值是 'A''B'

  1. 统计总行数时,优先使用 COUNT(*)

  2. 统计某列的有效值数量时,使用 COUNT(col)—— 可以知道有多少条记录是非空的。

  3. COUNT(DISTINCT col) —— 它只统计非空且唯一的值,不是总数。


Spark官方对于各种函数处理null值的说明:

https://spark.apache.org/docs/4.0.0/sql-ref-null-semantics.html#builtin-aggregate-expressions

在这里插入图片描述

http://www.lryc.cn/news/596295.html

相关文章:

  • MDC(Mapped Diagnostic Context) 的核心介绍与使用教程
  • CMake项目中的main函数重复定义错误
  • 拆分、合并PDF
  • 实现分布式锁
  • 数据库表介绍
  • 金仓数据库风云
  • Docker 安装、常用命令、应用部署
  • 3516cv610 mqtt库移植
  • 【工作常用】C++/QT插件编程思想——即插即用
  • React 英语单词补全游戏——一个寓教于乐的英语单词记忆游戏
  • docker build 和compose 学习笔记
  • 如何构建FunASR的本地语音识别服务
  • 开发者如何集成AI绘画?智创聚合API简化Midjourney接入
  • Linux系统权限全面解析:掌握你的数字王国钥匙
  • RPA软件机器人如何提高工作效率?
  • LeetCode 1.
  • GRU模型
  • Three.js 实现梦幻星河流光粒子特效原理与实践
  • sysbench对linux服务器上mysql8.0版本性能压测
  • Java(Set接口和HashSet的分析)
  • 决策树学习笔记
  • C++类和对象(3)
  • C++刷题常用方法
  • 4.组合式API知识点(2)
  • 低速信号设计之 MII 篇
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘Cython’问题
  • 【大模型记忆实战Demo】基于SpringAIAlibaba通过内存和Redis两种方式实现多轮记忆对话
  • 【打怪升级 - 01】保姆级机器视觉入门指南:硬件选型 + CUDA/cuDNN/Miniconda/PyTorch/Pycharm 安装全流程(附版本匹配秘籍)
  • LSTM+Transformer炸裂创新 精准度至95.65%
  • 一款功能全面的文体场所预约小程序