Lina Group

var query = from ll in proListRequestList group ll by new {ll.pro_id} into g select new ProListRequest { pro_id = g.Key.pro_id, number = g.Sum(x => x.number), level=level };

转载于:https://www.cnblogs.com/davidgu/p/3989236.html

### **Spark SQL 零售商店数据分析项目** **项目名称**:零售商店销售数据分析 ​**技术栈**​:Spark 3.x + Python/Scala ​**考核目标**​:掌握 DataFrame 创建、查询、聚合、多表关联等核心操作 ------ ## **一、数据集说明** ### **1. 员工表 `employee.csv`** ```csv emp_id,name,age,gender,department,salary,hire_date E001,张伟,35,M,销售部,8500,2020-05-12 E002,李娜,28,F,财务部,9200,2021-02-18 E003,王强,42,M,物流部,7800,2019-08-03 E004,赵敏,31,F,销售部,8800,2021-07-22 E005,刘洋,26,M,IT部,10500,2022-01-15 E006,陈雪,29,F,销售部,8600,2020-11-30 E007,杨光,33,M,财务部,9500,2018-09-10 E008,周婷,27,F,物流部,8000,2022-03-25 ``` ### **2. 销售表 `sales.csv`** ```csv sale_id,emp_id,product_id,quantity,unit_price,sale_date S001,E001,P1001,2,299.50,2023-05-10 S002,E004,P1002,1,1599.00,2023-06-15 S003,E001,P1003,3,89.90,2023-04-18 S004,E006,P1001,1,299.50,2023-07-02 S005,E003,P1004,2,450.00,2023-05-28 S006,E004,P1002,1,1599.00,2023-06-20 S007,E002,P1005,4,120.00,2023-03-12 S008,E005,P1003,2,89.90,2023-08-05 ``` ### **3. 商品表 `product.csv`** ```csv product_id,product_name,category,supplier P1001,无线耳机,电子产品,SupplierA P1002,智能手机,电子产品,SupplierB P1003,保温杯,日用品,SupplierC P1004,运动鞋,服装,SupplierD P1005,笔记本,文具,SupplierA ``` ------ ## **二、考核任务** ### **任务1:DataFrame 创建与基础操作(30分)** 1. 加载所有CSV文件为DataFrame,并打印Schema(10分) 2. 统计各部门员工数量(10分) 3. 查询薪资超过9000的员工(10分) **示例代码**: ```python employee_df = spark.read.csv("employee.csv", header=True, inferSchema=True) employee_df.filter("salary > 9000").show() ``` ### **任务2:数据清洗与转换(20分)** 1. 处理销售表中的空值(`quantity`缺失时填充1)(10分) 2. 计算每笔销售的总金额(`quantity * unit_price`)(10分) **示例代码**: ```python from pyspark.sql.functions import col sales_df = sales_df.na.fill({"quantity": 1}) sales_df.withColumn("total_amount", col("quantity") * col("unit_price")).show() ``` ### **任务3:多表关联与聚合(40分)** 1. 查询每笔销售的详细信息(含员工名和商品名)(15分) 2. 统计各商品类别的销售总额(15分) 3. 找出销售额最高的员工(显示姓名和总销售额)(10分) **示例代码**: ```python joined_df = sales_df.join(employee_df, "emp_id").join(product_df, "product_id") joined_df.select("name", "product_name", "total_amount").show() ``` ------ ## **三、提交要求** 1. **代码文件**:完整的PySpark/Scala脚本 2. **运行截图**:关键查询结果的终端输出 3. 分析报告 (可选): - 数据质量问题和处理方式 - 关键业务发现(如最佳销售部门、热门商品) ------ ## **四、评分标准** | **任务** | **评分点** | **分值** | | :------------: | :----------------------: | :------: | | DataFrame创建 | 正确加载数据并打印Schema | 30 | | 数据清洗 | 空值处理、计算列添加 | 20 | | 多表关联与聚合 | JOIN操作、聚合函数使用 | 40 | | 数据可视化 | 图表正确性 | 10 | **建议时间**:120分钟 ​**难度**​:⭐️⭐️⭐️(中等) ------ ## **五、扩展挑战(可选)** 1. 计算员工销售额的月度增长率 2. 使用窗口函数找出各部门薪资最高的员工 **示例代码**: python 复制 ```python from pyspark.sql.window import Window windowSpec = Window.partitionBy("department").orderBy(col("salary").desc()) employee_df.withColumn("rank", rank().over(windowSpec)).show() ``` ------ ### **项目特点** 1. **业务贴近性**:零售行业真实场景(员工、销售、商品) 2. **技能全覆盖**:从数据加载到复杂聚合+可视化 3. **可扩展性**:可通过增加数据量或添加时间分析提升难度
06-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值