文章目录
- 什么是数据透视表?
- 创建数据源
- 基于各产品在各个平台半年内的月销售额与汇总,制作数据透视表
什么是数据透视表?
数据透视表是一种工具,用于帮助用户理解和分析大量数据。它通常是一个二维表格,可以让用户以不同的方式查看数据,例如按列汇总或按行分类。数据透视表常用于数据分析和商业智能应用程序中,可以帮助用户快速找出数据中的模式和趋势。
如下图所示:
创建数据源
数据来源:数据源
drop table transfer_log;
CREATE TABLE sales_data
(saledate DATE, -- 销售日期
product STRING, -- 产品名
channel STRING, -- 销售渠道
amount DOUBLE -- 销售额
);
示例数据:数据集下载
基于各产品在各个平台半年内的月销售额与汇总,制作数据透视表
select
coalesce(product,"总计") product,
coalesce(channel,"汇总") channel,
sum(case when month(saledate) = 1 then 1 else amount end) January,
sum(case when month(saledate) = 2 then 1 else amount end) February,
sum(case when month(saledate) = 3 then 1 else amount end) March,
sum(case when month(saledate) = 4 then 1 else amount end) April,
sum(case when month(saledate) = 5 then 1 else amount end) May,
sum(case when month(saledate) = 6 then 1 else amount end) June
from
sales_data
group by product,channel with rollup;
计算结果:
思路:
我们要像数据透视表一样展示数据,统计半年内各产品在各个平台半年内的月销售额与汇总。
首先就得要有各个月份的表头,统计各个月份各平台的销售额:
sum(case when month(saledate) = 1 then 1 else amount end) January
只统计当月的销售额。
这样一来我们就得到了半年来所有各个月份各平台的销售额:
但是并没有汇总结果,这时候我们就得借助 with rollup
函数。
如不了解该函数的使用,可以通过这两篇文章进行学习:
-
Hive - grouping sets 示例与详解
-
Hive - Cube, Rollup, GroupingId 示例与详解
这里的 with rollup
相当于 :
group by (product,channel) + group by product + group by 月份列
得到如下结果:
最终通过 coalesce
函数给空值进行填充,完成数据透视表分析。