报表统计_数据的区域分布_环境准备 | 学习笔记

简介: 快速学习报表统计_数据的区域分布_环境准备

开发者学堂课程【2020版大数据实战项目之 DMP 广告系统(第五阶段)报表统计_数据的区域分布_环境准备】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/680/detail/11814


报表统计_数据的区域分布_环境准备

 

内容介绍:

一、报表生成

二、按照地域统计数据集的分布情况

 

一、报表生成

1、进行报表相关的开发,报表开发当中有很多张报表需要做。

image.png

为什么需要进行报表开发?下面进行简单的说明。做报表生成的目的是一般的系统需要使用报表来展示公司的运营情况,展示公司的数据情况,这个章节对数据进行一些常见的报表开发,通过这个章节,会了解常见的报表应该怎样处理。

2、在本章节中,有六个报表需要做,中间再加一个额外的步骤,总共是七个步骤。第一个步骤,要生成数据集的地域分布报表数据,第二个步骤,是生成广告投放的地域分布报表数据,接下来是广告投放的 APP分布、广告投放的设备分布、广告投放的网络类型分布、广告投放的网络运营商分布、广告投放的渠道分布等等。下面进行更详细的了解,中间会穿插一个小的章节,来对整个环境,整个架构进行更详细的梳理。

3、目标

一般的系统需要使用报表来展示公司的运营情况,数据情况,这个章节对数据进行一些常见报表的开发

4、步骤

生成数据集的地域分布报表数据

生成广告投放的地域分布报表数据

生成广告投放的 APP 分布报表数据

生成广告投放的设备分布报表数据

生成广告投放的网络类型分布报表数据

生成广告投放的网络运营商分布报表数据

生成广告投放的渠道分布报表数据

 

二、按照地域统计数据集的分布情况

1、目标

按照地域统计数据集的分布情况,看到不同的地区有多少数据,从而能够根据地区优化公司运营策略

按照地域统计数据集的分布情况,这句话当中有两个重点,第一个重点是地域,按照地域来进行统计,统计数据集的分布情况,这两个单词要理解,什么叫地域统计?统计什么?统计数据集的分布情况。换句说法,就是要统计数据集在地域中的分布情况。比如说北京有多少条数据,上海有多少条数据,广州有多少条数据,这就叫做数据集的地域分布情况。这一章节的目标是按照地域统计数据集的分布情况,看到不同的地区有多少数据,从而能够根据地区优化公司运营策略。比如说,按照区域统计数据以后,就能看到全国哪些区域数据很少。所以需要着重增加这些区域的相关数据,或者说,有一些区域特别好,要把区域维护好,这就是我们的目标。

2、步骤

需求分析,从结果看过程;代码编写

第一步,进行需求分析,从结果看处理的过程,第二步要进行相应的代码的编写。

3、需求分析

(1)结果表

报表生成其实就通过现有的数据,先进行统计,后生成报表,然后落地到 Kudu 中

image.png

想要理解报表怎样做,先看结果是什么,如上图结果图片。

第一列是 region,第二列是 city,第三列是数据的个数。第一行的含义是云南省昆明市有八条数据,第二条数据的含义是内蒙古省呼和浩特市有七条数据,第三条数据是内蒙古赤峰市有两条数据。原始的数据集都已经非常清楚明白是什么数据了,接下来,该如何按照 region 和 city 统计数据?怎样得到这样一个结果集?

在结果集当中有三个字段,省、市和数据量,含义就是想看到所有的省市分别有多少数据。

(2)处理过程

读取 ODS 数据

按照省市分组

统计数量

落地 Kudu

第一步要读取 ods 数据,第二步要按照省市进行分组,既然要统计省市对应的数据量,就应该按照省和市先分组,分完组以后直接求 count,就能得到每一组的数量。先分组,后统计,最后落地到 Kudo 中。

 

4、代码编写

(1)创建文件com. itheima. Dmp. report.RegionReport

Processor

(2)代码编写

object RegionReportProcessor {

def main(args:Array[String]):Unit={

import com. itheima. dmp. utils.SparkConfigHelper._

import com. itheima. dmp. utils.KuduHelper._

import org. apache. spark. sql. functions._

val spark=SparkSession. builder()

. master("local[6]")

.appName("pmt_etl")

.loadConfig()

-getOrCreate()

import spark. implicits.

val origin=spark.readKuduTable(ORIGIN_TABLE_NAME)

if(origin.isEmpty) return

val result=origin. get.groupBy($"region",$"city").

.agg(count($"*") as "count")

. select($"region",$"city",$"count")

result.createKuduTable(TARGET_TABLE_NAME, schema, keys)

result.saveToKudu(TARGET_TABLE_NAME) 5

}

private val ORIGIN_TABLE_NAME=PmtETLRunner.ODS_TABLE _NAME

private val TARGET_TABLE_NAME="ANALYSIS_REGION _"+

KuduHelper. formatted Date()

import scala. collection.JavaConverters._

private val schema=new Schema(List(

new ColumnSchemaBuilder("region",

Type.STRING). nullable(false). key(true). build,

new ColumnSchemaBuilder("city",

Type.STRING). nullable(true). key(true). build(),

new ColumnSchemaBuilder("count",

Type.STRING). nullable(true). key(false). build()

) .asJava

代码编写首先需要创建一个文件,文件建在 report 的包下,叫做 RegionReportProcesson,直接进行代码编写。先去创建一个文件,文件创建在 report 下,文件名称叫做 RegionAnalysis。RegionAnalysis 当中要把它改为 object,改为 object 以后把 main 方法写出来。步骤先简单梳理一下,第一步创建 SparkSession,第二步读取 ods 层的数据,第三步按照省市进行分组求得结果,第四步落地到 Report 表中,这就是整个的四大步骤,下面一步一步去实现它。在这之前先改一下 RegionAnalysis 的类名,修改为 RegionReportProcessor。整个的流程总结一下,就是从 ods 层取出数据进行处理,就是分组统计,接下来再落地到 report 表当中,这个时候 ods 在 Kudo 中,report 也在 Kudo 中。这样,整个过程特别明确,要先有原表的表名,不知道原表的表名叫什么该怎么办?原表的表名在 ETL 当中落地,打开 ETL,找到 ETLRunner,runner 当中有原表,看 structure,

image.png

找到 TARGET_TABLE_NAME,TARGET_TABLE_NAME 就是 ODS 层的表名,修改一下之前的命名,之前是 TARGET_TABLE_NAME,改为 ODS_TABLE_NAME,这样比较容易让外部理解。改完名以后把private 去掉,这个时候就可以访问。一般提供给外部访问的字段,可以在后面主动注明他的类型,这是为了安全起见。

//4.数据落地

Spark.createKuduTable(ODS_TABLE_NAME,schema,keys)

Result.saveTokudu(ODS_TABLE_NAME)

}

val ODS_TABLE_NAME:string =’ODS_” + KuduHelpe.formattedDate()

这个时候就可以从 ETLRunner 当中取到 ods 层的表名。回到 RegionReportProcessor 中,把其它窗口关闭。先命一个名,叫做 SOURCE_TABLE_NAME,SOURCE_TABLE_NAME 叫做 ETLRunner 当中的 ODS_TABLE_NAME,这个时候就已经把原表的表名处理好了。接下来 , TARGET_TABLE_NAME 可以命名为 report_data_region,在后面加上今天的日期,加上日期是一个比较好的习惯。Report 这张表也会按照一定的周期生成,要统计每日数据的话,就要在后面追加上日期。KudoHelper.formatted 追加日期,这个时候,原表的表名和目标的表明就完成了。然后去做刚才的四个步骤,第一步直接拿 spark,然后 SparkSession.builder,builder 以后设置 appName,appName 命名为 report ,master 给定为 local【6】,接下来 getOrCreat, getOrCreat 之前 loadConfig,但是没有这个方法,所以导入隐式转换

import cn. itcast. utils.SparkConfigHelper._

import cn. itcast. utils.KuduHelper._

就可以读取 ods 层的数据,使用 spark.readKudoTable, 要指定 tablename,指定为 SOURCE_TABLE_NAME。指定完以后就获取到了 source data frame,获取到 source data frame 以后,看一下 source 是什么类型?他是一个 option 类型,因为 readkudotable 当中有可能没有这张表,没有这张表,自然不能访问数据。所以就应该给一个 option 让外部知道这个地方可能没有数据,然后在外部进行一些相应的判断。做一个简单的判断,这个判断就是当 source 里面没有数据的话 isEmpty,如果 isEmpty 的话,return 就是后面的代码就不执行。因为没有 ods 层的表,没有办法进行报表统计。把表名和环境准备好,下面再进行具体的数据统计。

object RegionReportProcessor {

/**

*Kudu.ODS->分组统计->Kudu. Report

*/

def main(args:Array[String]):Unit={

import cn. itcast. utils.SparkConfigHelper.

import cn. itcast. utils.KuduHelper.

//1.创建 SparkSession

val spark=SparkSession. builder()

.appName(name="report data region")

. master(master="local[6]")

.loadConfig()

·getOrCreate()

//2.读取 ODS 层数据

val source:Option[Data Frame]=spark.readKuduTable(SOURCE_

TABLE_NAME)

if (source.isEmpty) return

//3.按照省市进行分组求得结果

//4.落地到 Report 表中

}

private val SOURCE_TABLE_NAME=ETLRunner.ODS_TABLE_

NAME

private val TARGET_TABLE_NAWE="report_data_region _"+

KuduHelper. formatted Date()

相关文章
|
5月前
|
Rust 监控 算法
基于circom、snarkjs实现零知识证明不透漏具体地理位置的区域监控
文章介绍了如何使用circom和snarkjs工具基于零知识证明算法Groth16实现不泄露具体地理位置的区域监控系统,详细说明了开发环境搭建、电路设计、计算和证明过程,并提供了相应的命令和代码示例。
65 0
|
8月前
|
监控 数据可视化 数据挖掘
R语言质量控制图、质量管理研究分析采购订单数量、CPU时间、纸厂产出、钢板数据可视化
R语言质量控制图、质量管理研究分析采购订单数量、CPU时间、纸厂产出、钢板数据可视化
|
存储 SQL 前端开发
GIS跟踪监管系统单元信息更新
GIS跟踪监管系统单元信息更新
62 0
ArcGIS:如何通过欧氏距离分析、重分类等工具对学校选址问题进行分析
ArcGIS:如何通过欧氏距离分析、重分类等工具对学校选址问题进行分析
391 0
|
定位技术
无须任何数据,六十秒快速制作三维影像图用以作为城市空间格局分析的底图
无须任何数据,六十秒快速制作三维影像图用以作为城市空间格局分析的底图
130 0
|
分布式计算 Java BI
报表统计_数据的区域分布_代码开发 | 学习笔记
快速学习报表统计_数据的区域分布_代码开发
144 0
报表统计_数据的区域分布_代码开发 | 学习笔记
|
数据挖掘 数据处理 数据库
案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)
案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)
案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)
|
SQL 运维 监控
地区分布统计可视化|学习笔记
快速学习 地区分布统计可视化
310 0
地区分布统计可视化|学习笔记
|
供应链 数据可视化 BI
OA系统日常物资管理方案:物资有序分类,数量动态展现
OA系统以“流程+建模”为主要手段,针对电商和各大组织日常的物资采购,打通采购、资产、财务等模块,提升库存管理效率…
|
算法 数据挖掘 定位技术
1个好方案,帮你实现复杂数据源中小区信息的准确归一化
背景 小区是租房业务中很重要的信息,它能够反映房源的位置和品质。对租客而言,能否浏览到准确的小区信息是高效找房的关键。因此,收集和展示准确的小区信息是提高用户找房效率的重要方面。为了获得全面的小区信息,租房业务通常会依赖多种数据源获得小区数据,这些数据格式不一,信息杂乱无章,含有很多冗余信息。
1699 0