scala cube聚合操作实例

多维聚合工程实战:pandas、Dask与Kylin协同优化 多维聚合是OLAP分析的核心能力,本质是基于时间、地理、产品、客户等正交维度对事实数据进行可钻取、可切片的动态汇总。其技术原理在于预计算(如物化立方体)与即席计算(如分层过滤groupby)的协同平衡,既保障查询性能,又兼顾灵活性。关键技术价值体现在降低BI响应延迟、抑制维度爆炸导致的资源耗尽,并支撑指标平台的SLO可监控、可灰度发布。典型应用场景包括销售透视分析、客户生命周期建模、实时运营看板等。本文聚焦生产级落地,深度融合pandas的精准操作、Dask的分布式扩展与Apache Kylin的预聚合引擎 阅读详情

前言

因为内部平台spark-sql不方便调优、配置资源的因素,某些情况还是会用到scala dateframe操作数据,今天记录一些关于聚合,count distinct多个字段,重命名展示的一些示例。

数据准备

Jack2 22 20200405
Jack2 21 20200401
Jack2 21 20200401
Kate 22 20200406
Mi2ng 20 20200406

代码示例

def main(args: Array[String]): Unit = {
    val sc = SparkSession.builder().master(master = "local[4]").getOrCreate()
    val rdd = sc.sparkContext.textFile("src/main/resources/2020.txt")
    val schemaFiled = "name,age,p_day"
    val schemaString = schemaFiled.split(",")
    val schema = StructType(List(
        StructField(schemaString(0), StringType, nullable = true),
        StructField(schemaString(1), StringType, nullable = true),
        StructField(schemaString(2), IntegerType, nullable = true)
      ))
    val rowRDD1 = rdd.map(_.split(" ")).map(x=> Row(x(0), x(1), x(2).toInt))
    val df = sc.createDataFrame(rowRDD1, schema)
    val name_list = "ds,name_,age_uv,age_day_uv,cn,22_age_uv".split(",")
    // 聚合操作,多种表达式实现
    df.cube("name").agg(
        max("p_day").as(name_list(0))
        ,countDistinct("age").as(name_list(2))
        ,expr("count(distinct age,p_day)").as(name_list(3))
        ,expr("'中文'").as(name_list(4))
        ,countDistinct(expr("if(age == '22', age, null)")).as(name_list(5))
    )//重命名聚合字段
    .withColumnRenamed("name","name_")
    //在列表中可指定查询的字段和顺序
      .selectExpr(name_list: _*)
      .show()
  }

结果

+--------+-----+------+----------+---+---------+
|      ds|name_|age_uv|age_day_uv| cn|22_age_uv|
+--------+-----+------+----------+---+---------+
|20200406| null|     3|         4| 中文|        1|
|20200406| Kate|     1|         1| 中文|        1|
|20200406|Mi2ng|     1|         1| 中文|        0|
|20200405|Jack2|     2|         2| 中文|        1|
+--------+-----+------+----------+---+---------+
多维聚合的数据变形术:分层聚合与指标生命周期管理 多维聚合是BI分析、特征工程和实时看板的核心技术基础,其本质是解决数据在不同维度组合下的可加性、粒度对齐与指标一致性问题。传统GROUP BY易引发维度爆炸、指标失真和粒度污染,根本原因在于缺乏对‘维度-指标-粒度’关系的显式建模。通过分层聚合架构(原子层→事实层→分析层),可实现预计算与按需组装的平衡;结合指标生命周期管理,为每个指标赋予唯一ID、基础粒度、输出粒度及聚合函数契约,保障口径统一与溯源可控;再辅以动态维度投影机制,支持零重算扩展新维度。该方法已在电商大促看板、金融风控宽表等场景验证,显著提升 阅读详情

相关推荐

多维聚合三阶段数据操作:Pre/In/Post-Aggregation实战指南

多维聚合不是简单的GROUP BY语法应用,而是一个涵盖数据准备、过程控制与结果重塑的系统工程。其核心原理在于:先构建全量维度空间(如省×月×品类笛卡尔积),再通过条件聚合、窗口函数等技术实现可控计算,最终以结构化、带元数据的结果交付业务。这一过程的技术价值在于解决真实场景中‘数字对不上’‘同比失效’‘钻取崩溃’等高频问题,支撑BI报表、经营分析与数据中台建设。典型应用场景包括按多维组合计算复购率、TOP N商品、动销率及跨周期对比分析。本文聚焦Pre-Aggregation(维度对齐与空值治理)、In-A

baichuan9723的博客 437

Kylin中的cube构建引擎使用spark

1. 将默认的Mapreduce引擎改为spark 启动kylin后,会在 Kylin Web 页面上加载出两个默认的 Cube ,然后我们访问Kylin Web UI ,然后点击 Model -> Action -> Edit 按钮 接下来直接点击 Advanced Setting,进行高级配置 接下来选择 spark引擎即可,可以看到目前kylin支持的cube引擎有MapReduce、Spark和Flink三种 2. 参考链接 https://blog.csd..

litlit023的专栏 423

多维聚合实战:破解空维、基数爆炸与计算路径依赖

多维聚合是OLAP分析的核心能力,本质是在时间、地域、产品等业务维度构成的高维立方体中构建可复用、可验证的计算路径。其技术原理远超GROUP BY语法,涉及维度层级建模、空值语义治理、基数爆炸抑制及计算顺序对精度的影响。关键技术价值在于支撑实时BI看板、动态下钻分析与跨源指标融合,广泛应用于电商销售归因、金融风控宽表构建和SaaS客户行为分析等场景。本文聚焦生产环境中最易被忽视的三大挑战——空维组合歧义、维度基数爆炸与计算路径依赖,结合ClickHouse、Doris、Flink等主流引擎的底层机制,提供可

weixin_33811539的博客 485

scala语法基础

Scala 编程 -Scala基础 1.课程目标 安装Scala编译和运行环境 熟悉Scala基本语法以及函数式编程 熟练掌握Scala数据结构使用以及集合方法操作 2.Scala基础 2.1Scala概述 概念:Scala是既可以面向对象也可以面向函数的编程语言,多范式的编程语言。Scala是基于JVM的编程语言。Scala能够兼容Java的语法 面向对象:Scala是纯面向对象的语言。比如1+2: 1 是一个对象 + 方法 2是对象 方法的参数。在scala的世界中,每一个字符或者每

weixin_43457608的博客 408

多维聚合数据操作:从SQL GROUP BY到生产级协议

多维聚合是OLAP分析与BI报表的核心能力,其本质并非简单的SQL分组统计,而是围绕维度、度量与业务上下文构建的语义化数据操作协议。它涉及维度代理键管理、度量过滤与去重逻辑、上下文感知的事实建模等关键技术原理,支撑高可信、低延迟、可审计的实时分析。在电商GMV归因、金融风控报表、SaaS客户健康度等典型场景中,需应对维度层级变动、空值传染、口径漂移与基数爆炸等工程挑战。本文聚焦‘切、叠、补、验’四大可编程操作,结合Flink+ClickHouse混合架构与YAML配置化引擎,提供一套可落地、可扩展、业务可参

afeyfre41671的博客 440

多维聚合实战:从SQL GROUP BY到OLAP立方体的工程化落地

多维聚合是现代数据分析的核心能力,本质是支持任意维度组合的灵活切片、钻取与上卷操作。它建立在OLAP立方体模型之上,依赖维度正交性与聚合可分解性,区别于传统SQL中单向降维的GROUP BY。技术价值在于将原始数据升维为可交互决策单元,支撑BI自助分析、跨周期对比和稀疏场景下的精准归因。典型应用场景包括销售多维下钻、用户行为交叉分析、财务成本分摊等。本文聚焦工程实践,详解GROUPING SETS、维度字典建模、Pandas聚合管道及DuckDB轻量OLAP等关键方案,覆盖多维聚合、维度建模、OLAP思维三

weixin_34293911的博客 375

spark hive中的cube 、roll_up和grouping sets

hive简单总结 cube(a,b,c)=>就是魔方,就是groupby()的a,b,c,ab,ac,bc,abc结果的union all 用法:group by a,b,c with cube rollup(a,b,c)=>就是卷曲来,就是groupby() 的a,ab,abc的union all 用法:group by a,b,c with rollup groupin...

yisun123456的博客 848

多维聚合实战:从SQL GROUP BY到OLAP立方体的工程化跃迁

多维聚合是现代数据分析的核心能力,本质是基于维度建模对事实数据进行可交互、可下钻、可复现的交叉计算。其原理源于OLAP立方体思想——通过定义维度层级、度量类型与事实表关系,实现降维不丢上下文的动态切片。技术价值在于打破传统GROUP BY的静态快照局限,支撑BI自助分析、实时下钻与跨周期对比等关键场景。典型应用涵盖销售归因、用户行为路径分析、财务多维成本分摊等业务需求。本文聚焦工程落地,深入解析GROUPING SETS精准控制、Polars向量化聚合、维度路由配置化及层级下钻等四层进阶实践,直击数据质量、

348

Kylin的Cube构建聚合组

如果一个维度被定义为强制维度,那么产生的cuboid必须包含该维度(强制维度自己也不能单独形成cuboid)

Bulut0907 886

Wireshark实战解析IEC 61850 GOOSE报文:智能变电站通信调试指南

网络协议分析是理解现代工业通信系统的基础,其核心原理在于对数据包的捕获、解码与解析。在电力自动化领域,IEC 61850标准定义了智能变电站内设备间高效、可靠的通信框架,其中GOOSE(通用面向对象变电站事件)协议因其基于以太网多播和快速重传机制,成为保护跳闸、联锁等关键信号传输的基石,其技术价值在于实现了微秒级延迟的高可靠性通信。掌握GOOSE报文的分析能力,对于现场调试、故障定位及系统验证至关重要。本文聚焦于使用Wireshark这一网络分析工具,深入解析GOOSE报文结构,涵盖从以太网帧头、协议标识到

weixin_34401479的博客 374

STM32G0实战:手把手教你用国产GD25Q16 Flash存储传感器数据(附完整驱动)

本文详细介绍了如何使用国产GD25Q16 Flash芯片与STM32G0系列MCU实现传感器数据存储的完整方案。从SPI接口配置、驱动层实现到存储系统架构设计,提供了实战代码和优化策略,帮助开发者快速构建高性价比的物联网数据存储系统。

weixin_30733003的博客 106

分组函数之rollup、cube函数、grouping sets函数

rollup 通常和group by语句一起使用,是根据维度在分组的结果集中进行聚合操作(通常为汇总,这取决于SELECT后的聚合函数)。最常用的场景是:为每个分组返回一个小计,同时为所有分组返回总计。1、不带rollup的goup by : Group by A ,B产生的分组种数:1种;返回结果集:也就是这一种分组的结果集。2、带rollup但group by与rollup之间没有任何内容:1)Group by rollup(A ,B) 产生的分组种数:3种;返回结果集:为以上三种分组统计结果集的并集且

Samooyou的博客 5854

STM32中RS485方向控制引脚应用详解

深入解析STM32如何通过GPIO控制RS485通讯的方向引脚,实现半双工通信的精准切换。重点讲解硬件连接与软件时序配合,确保rs485通讯稳定可靠,适用于工业控制等实际场景。

weixin_42451850的博客 398

6、Spark聚合操作Aggregations-window、grouping set、rollup、cube

spark允许创建的分组类型有: group by, window, grouping set, rollup, cube

Toby的博客 883

Matcap与菲涅尔

菲尼尔效果(简化版公式):fresnel = base + scale*((1-v*n)^power)透明队列为后前渲染,不关闭深度写入则会覆盖之前的像素,导致混合不了。y的值为0~1,根据x3返回对应y值。两色混合做个demo看看!混合为什么要关闭深度写入?

weixin_62773441的博客 371

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 341

spark中dataframe解析_Spark DataSet DataFrame 操作

本文基于 Spark 2.x,除特殊说明,代码均为 Scala函数详解import使用 DataFrame 通常需要 import org.apache.spark.sql.functions._,这里引入了 col, lit, udf, sum, max, avg, agg 等常用函数。函数源码PySpark UDF不推荐,与 Scala 版的 UDF 相比性能非常差。12345678910fr...

weixin_39622084的博客 326

【重温童年】基于tkinter模块设计的Q宠大乐斗武器升星模拟器:重温经典,畅享休闲时光

与传统的Q宠大乐斗不同,这款模拟器还加入了一个创新的功能——自定义升星概率。玩家可以根据自己的喜好和策略,为不同的武器设置不同的成功率和降级率。比如,你可以将“嗜血”这把武器的升星难度设置得极高,以体现其稀有性和强大威力;也可以将“平底锅”这样的普通武器设置得相对容易升星,让玩家在升级过程中感受到更多的成就感。这种自定义的概率设置,不仅增加了游戏的趣味性和挑战性,还让玩家在升级过程中有了更多的策略和选择。你可以根据自己的武器库和卷轴数量,制定出最合适的升级计划,从而在游戏中占据先机。

nmdbbzcl的博客 1236

多维聚合实战:GROUPING SETS、ROLLUP与CUBE高效应用指南

多维聚合是现代数据分析的核心能力,指在单次数据扫描中同步生成多个维度组合的汇总结果,区别于传统嵌套GROUP BY带来的性能损耗与一致性风险。其底层基于关系代数中的分组集(GROUPING SETS)理论,通过一次遍历实现多重视角切片,显著提升IO效率、保障快照一致性,并支持灵活扩展。关键技术包括ROLLUP(层级式下钻)、CUBE(全交叉分析)及GROUPING函数语义识别,广泛应用于数仓ETL、BI报表开发与用户行为分析等场景。本文结合SQL、Pandas与Spark三层实践,详解稀疏填充、维度降维、倾

dingdi3021的博客 564

LVGL 丝滑菜单3(Silk Menu)

h。

摸鱼专家 88

姿态传感器/陀螺仪之IIS2DLPC 应用驱动程序设计

* 转换为°C单位 (参考温度为25°C,灵敏度为16 LSB/°C) */

corlin6688的博客 219

避坑指南:SparkSQL的rollup和cube用错会怎样?实测5种错误用法及正确姿势

本文深入剖析了SparkSQL中rollup和cube函数在实战中的五大常见陷阱,包括NULL值混淆、性能下降、数据倾斜、流处理误用及排序开销。通过实测对比,提供了使用GROUPING函数区分汇总、避免冗余分组、分层聚合优化等高效实践方案,帮助开发者规避错误,提升大数据分析作业的可靠性与性能。

o4p5q6r7s的博客 214

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spark2 Dataset多维度统计cube与rollup

val df6 = spark.sql("select gender,children,max(age),avg(age),count(age) from Affairs group by Cube(gender,children) order by 1,2") df6.show +------+--------+--------+--------+----------+ ...

weixin_33701251的博客 363

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

多维聚合与数据变形:从GROUP BY到可决策分析的实战框架

多维聚合是BI与数据分析的核心能力,本质是将原始事实数据在多个业务维度(如时间、地域、产品)上进行结构化切片与汇总。其技术原理依赖维度层级建模、度量类型识别(可加/半可加/不可加)及语义对齐,直接决定分析结果的准确性与可解释性。关键价值在于支撑动态钻取、跨周期对比和归因分析等高阶决策场景,广泛应用于零售销量归因、用户行为漏斗、IoT设备指标监控等领域。本文聚焦‘数据变形’这一前置关键环节,系统拆解维度对齐、度量标准化、衍生指标预计算与多维切片生成四步法,覆盖Pandas/Spark/SQL工程落地细节。

weixin_33696822的博客 336

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

多维聚合中的数据变形:轴向重映射与层级折叠原理

多维聚合是OLAP分析的核心能力,本质是在地理、时间、产品等结构化维度上对事实数据进行分组、汇总与再组织。其技术原理涉及维度层级的树状约束、聚合函数的可分解性(如SUM可拆分而MEDIAN不可)、以及稀疏空值的语义化处理。关键操作包括轴向重映射(如pandas pivot/melt实现长宽表转换)和层级折叠(如ROLLUP/Drill-down支持省→市下钻)。这些机制共同支撑BI报表的动态切片、同比环比计算及异常值鲁棒聚合。本文聚焦多维聚合中数据形态变换的底层逻辑,解析Data Manipulation在

weixin_33980459的博客 336

多维聚合实战:从维度建模到动态切片的工程化落地

多维聚合是BI与数据分析的核心能力,本质是围绕维度、度量和层级构建可解释、可复用、可演进的数据契约。其原理在于将业务语义(如时间锚点、客户分层规则)转化为结构化约束(SCD2维度表、聚合语义标签、层级约束矩阵),从而保障口径一致性与计算稳定性。技术价值体现在规避口径漂移、降低存储冗余、提升查询性能,并支撑实时看板、风控模型、OEE分析等高要求场景。本文聚焦数据工程师与BI开发者在Pandas/Spark/DAX工具链下的实操路径,深入解析维度代理键隔离、热度驱动的立方体裁剪、动态切片引擎及DAX计算组等关键

weixin_30889885的博客 348
上一篇: scala(Row、Array、Tuple、Class、RDD、DF之间类型转换)
下一篇: clickhouse(十三、JDBC引擎)
yyoc97
博客等级 码龄12年 272粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值