**离线电商数仓学习笔记day02**

离线电商数仓学习笔记02-数据生成(用户行为数据)

埋点数据格式

数据主要分为两类:(1)事件日志数据 (2)启动日志数据
数据格式分为两类:(1)公共字段(2)业务字段
公共字段:所以手机都包含的字段(如IP地址、版本号等)
业务字段:埋点上报的字段,有具体的业务类型
实例:

{
   
"ap":"xxxxx",//项目数据来源 app pc
"cm": {
     //公共字段
		"mid": "",  // (String) 设备唯一标识
        "uid": "",  // (String) 用户标识
        "vc": "1",  // (String) versionCode,程序版本号
        "vn": "1.0",  // (String) versionName,程序版本名
        "l": "zh",  // (String) 系统语言
        "sr": "",  // (String) 渠道号,应用从哪个渠道来的。
        "os": "7.1.1",  // (String) Android系统版本
        "ar": "CN",  // (String) 区域
        "md": "BBB100-1",  // (String) 手机型号
        "ba": "blackberry",  // (String) 手机品牌
        "sv": "V2.2.1",  // (String) sdkVersion
        "g": "",  // (String) gmail
        "hw": "1620x1080",  // (String) heightXwidth,屏幕宽高
        "t": "1506047606608",  // (String) 客户端日志产生时的时间
        "nw": "WIFI",  // (String) 网络模式
        "ln": 0,  // (double) lng经度
        "la": 0  // (double) lat 纬度
    },
"et":  [  //事件
            {
   
                "ett": "1506047605364",  //客户端事件产生时间
                "en": "display",  //事件名称
                "kv": {
     //事件结果,以key-value形式自行定义
                    "goodsid": "236",
                    "action": "1",
                    "extend1": "1",
"place": "2",
"category": "75"
                }
            }
        ]
}

示例日志(服务器时间戳|日志)

1540934156385|{
   
    "ap": "gmall", 
    "cm": {
    //公共字段
        "uid": "1234", 
        "vc": "2", 
        "vn": "1.0", 
        "la": "EN", 
        "sr": "", 
        "os": "7.1.1", 
        "ar": "CN", 
        "md": "BBB100-1", 
        "ba": "blackberry", 
        "sv": "V2.2.1", 
        "g": "[email protected]", 
        "hw": "1620x1080", 
        "t": "1506047606608", 
        "nw": "WIFI", 
        "ln": 0
    }, 
        "et": [//事件
            {
   
                "ett": "1506047605364",  //客户端事件产生时间
                "en": "display",  //事件名称
                "kv": {
     //事件结果,以key-value形式自行定义
                    "goodsid": "236",
                    "action": "1",
                    "extend1": "1",
"place": "2",
"category": "75"
                }
            },{
   
		        "ett": "1552352626835",
		        "en": "active_background",
		        "kv": {
   
			         "active_source": "1"
		        }
	        }
        ]
    }
}

数据生成

这里采用Java程序生成用户行为数据
(1)创建Maven工程并命名log-collector
(2)创建一个包名:J1NX1N
(3)在J1NX1N包下创建一个类:AppMain
(4)在pom…xml文件中添加依赖

<!--版本号统一-->
<properties>
    <slf4j.version>1.7.20</slf4j.version>
    <logback.version>1.0.7</logback.version>
</properties>

<dependencies>
    <!--阿里巴巴开源json解析框架-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.51</version>
    </dependency>

    <!--日志生成框架-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${
   logback.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${
   logback.version}</version>
    </dependency>
</dependencies>

<!--编译打包插件-->
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin </artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClassJ1NX1N.AppMain</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

注意:依赖中J1NX1N.AppMain要和自己建的全类名一致

创建公共字段Bean

(1)创建包名:J1NX1N.Bean
(2)在J1NX1N.Bean包下如下Bean对象

Bean包下均是诸多属性的get set方法,并无技术含量,而且这些数据在工作中一般由前端或者javaEE提供,并不需要手动生成

package J1NX1N.bean;
/**
 * 公共日志
 */
public class AppBase{
     

    private String mid; // (String) 设备唯一标识
    private String uid; // (String) 用户uid
    private String vc;  // (String) versionCode,程序版本号
    private String vn;  // (String) versionName,程序版本名
    private String l;   // (String) 系统语言
    private String sr;  // (String) 渠道号,应用从哪个渠道来的。
    private String os;  // (String) Android系统版本
    private String ar;  // (String) 区域
    private String md;  // (String) 手机型号
    private String ba;  // (String) 手机品牌
    private String sv;  // (String) sdkVersion
    private String g;   // (String) gmail
    private String hw;  // (String) heightXwidth,屏幕宽高
    private String t;   // (String) 客户端日志产生时的时间
    private String nw;  // (String) 网络模式
    private String ln;  // (double) lng经度
    private String la;  // (double) lat 纬度

    public String getMid() {
     
        return mid;
    }

    public void setMid(String mid) {
     
        this.mid = mid;
    }

    public String getUid() {
     
        return uid;
    }

    public void setUid(String uid) {
     
        this.uid = uid;
    }

    public String getVc() {
     
        return vc;
    }

    public void setVc(String vc) {
     
        this.vc = vc;
    }

    public String getVn() {
     
        return vn;
    }

    public void setVn(String vn) {
     
        this.vn = vn;
    }

    public String getL() {
     
        return l;
    }

    public void setL(String l) {
     
        this.l = l;
    }

    public String getSr() {
     
        return sr;
    }

    public void setSr(String sr) {
     
        this.sr = sr;
    }

    public String getOs() {
     
        return os;
    }

    public void setOs(String os) {
     
        this.os = os;
    }

    public String getAr() {
     
        return ar;
    }

    public void setAr(String ar) {
     
        this.ar = ar;
    }

    public String getMd() {
     
        return md;
    }

    public void setMd(String md) {
     
        this.md = md;
    }

    public String getBa() {
     
        return ba;
    }

    public void setBa(String ba) {
     
        this.ba = ba;
    }

    public String getSv() {
     
        return sv;
    }

    public void setSv(String sv) {
     
        this.sv = sv;
    }

    public String getG() {
     
        return g;
    }

    public void setG(String g) {
     
        this.g = g;
    }

    public String getHw() {
     
        return hw;
    }

    public void setHw(String hw) {
     
        this.hw = hw;
    }

    public String getT() {
     
        return t;
    }

    public void setT(String t) {
     
        this.t = t;
    }

    public String getNw() {
     
        return nw;
    }

    public void setNw(String nw) {
     
        this.nw = nw;
    }

    public String getLn() {
     
        return ln;
    }

    public void setLn(String ln) {
     
        this.ln = ln;
    }

    public String getLa() {
     
        return la;
    }

    public void setLa(String la) {
     
        this.la = la;
    }
}

启动日志Bean

package J1NX1N.bean;
/**
 * 启动日志
 */
public class AppStart extends AppBase {
     

    private String entry;//入口: push=1,widget=2,icon=3,notification=4, lockscreen_widget =5
    private String open_ad_type;//开屏广告类型:  开屏原生广告=1, 开屏插屏广告=2
    private String action;//状态:成功=1  失败=2
    private String loading_time;//加载时长:计算下拉开始到接口返回数据的时间,(开始加载报0,加载成功或加载失败才上报时间)
    private String detail;//失败码(没有则上报空)
    private String extend1;//失败的message(没有则上报空)
    private String en;//启动日志类型标记

    public String getEntry() {
     
        return entry;
    }

    public void setEntry(String entry) {
     
        this.entry = entry;
    }

    public String getOpen_ad_type() {
     
        return open_ad_type;
    }

    public void setOpen_ad_type(String open_ad_type) {
     
        this.open_ad_type = open_ad_type;
    }

    public String getAction() {
     
        return action;
    }

    public void setAction(String action) {
     
        this.action = action;
    }

    public String getLoading_time() {
     
        return loading_time;
    }

    public void setLoading_time(String loading_time) {
     
        this.loading_time = loading_time;
    }

    public String getDetail() {
     
        return detail;
    }

    public void setDetail(String detail) {
     
        this.detail = detail;
    }

    public String getExtend1() {
     
        return extend1;
    }

    public void setExtend1(String extend1) {
     
        this.extend1 = extend1;
    }

    public String getEn() {
     
        return en;
    }

    public void setEn(String en) {
     
        this.en = en;
    }
}

错误日志Bean

package J1NX1N.bean;
/**
 * 错误日志
 */
public class AppErrorLog {
     

    private String errorBrief;    //错误摘要
    private String errorDetail;   //错误详情

    public String getErrorBrief() {
     
        return errorBrief;
    }

    public void setErrorBrief(String errorBrief) {
     
        this.errorBrief = errorBrief;
    }

    public String getErrorDetail() {
     
        return errorDetail;
    }

    public void setErrorDetail(String errorDetail) {
     
        this.errorDetail = errorDetail;
    }
}

事件日志Bean-商品点击

package J1NX1N.bean;
/**
 * 商品点击日志
 */
public class AppDisplay {
     

    private String action;//动作:曝光商品=1,点击商品=2,
    private String goodsid;//商品ID(服务端下发的ID)
    private String place;//顺序(第几条商品,第一条为0,第二条为1,如此类推)
    private String extend1;//曝光类型:1 - 首次曝光 2-重复曝光(没有使用)
    private String category;//分类ID(服务端定义的分类ID)

    public String getAction() {
     
        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值