数仓建模【埋点设计与管理】
埋点设计与管理
埋点的作用
- 分析用户转化以及留存:
- 分析用户偏好
- 收集市场反馈
- 保障用户数据安全
- 定位异常
- 其他作用
埋点数仓设计
数据进入数仓之前我们就需要设计好数仓表,埋点表的数据有几个特点:
- 数据量非常大,可能是所有数据集成渠道里面,流量最大的了
- 数据不存在更新,这是埋点表的数据特点
面对这两个特点,我们需要做一些设计,当然还有一些其他设计方面的点需要注意以下,首先因为量大,而且我们往往关注的是昨天的数据,所以我们的表肯定是分区表,其次因为我们使用的特点,例如关注的是页面浏览或者是按钮点击,所以我们在实践分区的基础上按照事件进行分区。这样我们可以在数据擦汗寻的时候过滤掉大量的数据从而提高查询性能。
其次,就是埋点表作为数据报表的数据来源的时候,可能会大概率遇到计算延迟,或者一些其他的问题,所以在宽表的设计或者报表展示种,请尽量得将集成进行后延,从而更好的保证稳定性和可用性。
小程序端的埋点表
web端的埋点表
埋点的类型
埋点:在期望的点位,埋设一个记录的标记。这个点位,一般多是指用户与产品进行一次次交互的接触点, 从而可以在用户和产品交互的时候,将用户的数据进行上报。
通过收集这些标记点的数据,可以帮助产品运营及开发同学了解功能的整体使用、运行情况,并通过数据基础上做出下一步调整或优化的方向。遇事不拍脑袋,而是用数据说话,这是数据埋点最大的价值。
在AB测试的场景,数据埋点是为实验组的效果提供数据支持,其本质也是数据决策的基础。
根据目前常见的数据埋点形式,可以将数据埋点分为:全埋点、代码埋点(自定义埋点),当然我们也可以按照产品的类型划分为:APP埋点、Web埋点、小程序埋点。
- 全埋点:全埋点的逻辑,实质数据采集sdk无区别的对待所有事件的,将所有事件(页面加载成功实践、控件的浏览和点击事件)全部获取后先存下来,到使用的时候,再根据具体的页面路径和控件名称,去捞取相应的数据。
- 优点:其优点和特点是功能上线时,不需要开发做额外的埋点定义工作,用的时候再根据需求去获取对应的数据,因此也叫无埋点。
- 缺点:耗费用户流量、占存储空间;一旦版本迭代,对页面的路径做了修改,或者空间位置、文案有修改,原来的圈选数据可能就会出错,需要重新圈选,之前利用圈选指标谁当的分析模型都要替换;圈选指标无法区分细部参数,比如:商品详情页,无法通过圈选数据来区分是哪一个商品或哪一个类目;对web的页面数据处理一直不好,尤其是设计到app的内嵌H5页时,非常痛苦。
- 因此,全埋点适用于业务多变、经常调整,且分析诉求比较轻量级的场景。对于通用的功能,形态相对比较固定,且对数据分析颗粒度、下钻深度、聚合程度要求较高,那就需要用到代码埋点。
- 可视化埋点:基于此,可视化埋点是指在全埋点部署成功、已经可以获得全量数据的基础上,以可视化的方式,然后进行数据选择。这种方案的弊端之一是耗流量和存储空间,全埋点采集的数据一般会根据情况设定一个销毁时限,比如7天。即:全采集过来的数据,如果7天之内没有被使用,则会被销毁。而一旦对圈选数据做了圈选定义之后,则被定义的页面数据、控件数据,则会一直采集,且不会删除。
- 代码埋点:代码埋点也叫自定义埋点 ,从字面上是针对想要的点位单独定义,并可以通过变量丰富埋点的信息,以支持上下游分析。代码埋点分为前端埋点和后端埋点:
- 前端埋点:包括但不限于APP客户端、H5、微信小程序、PC网页,是指对具体的功能场景(如加载成功、浏览、点击等)进行明确的定义,由前端触发,采集上来的数据相比于全埋点,更准确、稳定,且通过变量字段,能够实现更细粒度的数据拆分、聚合和下钻。
- 后端埋点:指触发了服务端接口调用(如:接口回调成功触发)的事件埋点,如最典型的注册成功事件、付款成功事件。后端埋点对数据的准确度要求更高,同时也可以通过变量字段的扩展支持数据拆分、聚合和下钻。需要强调的是,后端事件一般采集的是一登陆状态下的用户行为,如果像使用后端事件作为流程分析的其中一环(如漏斗分析),则可能出现未登录的用户会漏掉的情况。
埋点上报方式
-
图片请求 :优势没有跨域问题;不会阻塞页面加载;在所有图片中,简单、安全;
-
Get请求:GET把参数包含在URL中,也就是说我们的上报数据是在一个url参数中或者是几个参数中。GETA请求最大的特点就是简单,但是同时也带来了很多其他的问题,首先是安全问题因为GET请求参数被暴露在IURL中,GET请求只能进行url编码,而POST支持多种编码方式,其次get请求在URL中传送的参数是由长度限制的,也就是如果你上报的数据内容比较多,可能会被截断。
-
Post请求:相比于GET请求首先就是更加安全,其次是支持多种编码,而且所能发送的数量页更大,看起来是不错的选择,但是还是不如图片请求好。
埋点管理设计
整个埋点的事件我们可以使用4W1H进行表示
下面是APP端的一个例子
事件模型
我们使用”事件模型(Event模型)“来面熟用户的各种行为,事件模型包括事件和用户两个核心实体。整个埋点的属性,我们可以分为两个大类,第一类是事件属性,第二类是用户属性。
为什么这两个实体结合在一起就可以清晰的描述清除用户行为?实际上,我们在描述用户行为时,往往只需要描述清除几个要点,即可将整个行为描述清除,要点包括:是谁、什么时间、什么地点、以什么方式、干了什么。而事件和用户这两个实体结合在一起就可以达到目的。下面介绍以下这两个实体。
事件的设计
基本规范
预置属性
设计原则
整个埋点的设计我们应该遵循以下几个原则,从而可以更好的维护和管理整个埋点系统。
- 通用基础事件:埋点事件能通用则不单独埋点,不是说单独埋点越多越好,我们应该尽可能地从上层设计比较通用地事件,这样方便复用。
- 重要事件:重要事件要单独处理,统一上报,保证采集的可用性
- 业务主流程:对于主要的业务流程,我们可以设计独立的事件,从而方便更好的分析;
数据从生产到应用的流程
首先是基于一定的需求出发,然后产品、业务、分析时对需求进行评审,主要就是需求同步,信息对齐,接下来就是埋点的开发与测试,埋点上线之后,数据同学开始进行数据需求开发在此过程中对埋点进行验收,最后对数据需求进行交付
这个过程,需要专门投入专人去做这件事,企业需要定制顶层的业务规范,上面的流程中有一个环节是没有的,那就是埋点的下线。
数据产品和数据分析师不仅要考虑到业务需求和数据分析的工作,还要站在业务线数据体系和数据应用负责人的角度,对埋点实施、管理、迭代、文档、交付、支持进行掌控和维护。
埋点系统的设计
其实很多公司针对埋点会维护单独的一个系统,这个系统主要维护了公司的全部埋点,其实你可以将其理解为和jira类似的一套系统,下面看系统的核心。
埋点列表
埋点注册
埋点详情
属性管理
在埋点元数据中维护产品、业务层面的通用属性,由数据团队统一维护,所有可见的属性,都可以在注册、编辑埋点是添加属性时搜索到,自定义属性相对于通用属性,是某个事件下特有的属性,由业务方根据埋点方案维护。
表设计
字段名称 | 备注 |
埋点ID | 表的自增ID即可 |
埋点域 | 是APP埋点还是web埋点还是都是 |
埋点中文名称 | |
埋点英文名称 | |
埋点位置 | 这个位置我们要求使用图片进行展示+文字说明 这里的图片展示很重要,因为这样很形象 |
埋点开发负责人 | 谁负责开发,很多时候会涉及到APP和WEB同时开发 |
埋点业务负责人 | 谁提的需求 |
埋点数据负责人 | 谁负责该埋点对应数据需求的处理,完成最终的埋点的验收 |
埋点业务含义 | 为什么埋点,关于埋点的具体数据计算逻辑是什么 |
埋点所属事件 | 买单所属的事件,一般情况下我们都可以将一个买单归到我们已经定义的埋点事件中去,如果没有合适的埋点事件,需要先定义事件,再定义该埋点 |
埋点通用属性 | 一旦归类到某个埋点事件下面,我们要求上报该事件的全部属性 |
自定义属性 | 该埋点的自定义属性 |
埋点代码git的PR | 是一个url。方便追踪埋点代码 |
埋点的jira | 埋点需求的jira跟踪 |
埋点的状态 | 上线、测试、开发、下线、不可见等状态 |
埋点的创建时间 | |
埋点的上线时间 | |
埋点的更新时间 |
数据丢失如何处理
总结
- 埋点是数据平台很重要的一部分,如果只有业务数据没有埋点数据,那么用户在我们平台上的一切行为对我们来说都是黑盒,所以我们想要做到精细化运维埋点是必须的;
- 优于埋点的数据从产生使用链路很长,而且很复杂,这就需要我们做好设计和管理工作。
相关文章:
数仓建模【埋点设计与管理】
埋点设计与管理 埋点的作用 分析用户转化以及留存:分析用户偏好收集市场反馈保障用户数据安全定位异常其他作用 埋点数仓设计 数据进入数仓之前我们就需要设计好数仓表,埋点表的数据有几个特点: 数据量非常大,可能是所有数据集…...
Spring Clound介绍
Spring Cloud 是一系列框架的集合,它利用 Spring Boot 的开发便利性简化了分布式系统(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)的开发。Spring Cloud 旨在为开发者…...
Redhat Linux忘记密码解决方案
1、重启系统 2、将光标移动到要启动的内核 3、按e编辑当前条目 4、将光标移动以Linux开头的行,此为内核命令行 5、在末尾添加人的rd.break 6、按ctrlx继续启动,如果发现输入的rd.break不能进入到伪系统,那么改为 rd.break consoletty0 (按ctr…...
对于子数组问题的动态规划
前言 先讲讲我对于这个问题的理解吧 当谈到解决子数组问题时,动态规划(DP)是一个强大的工具,它在处理各种算法挑战时发挥着重要作用。动态规划是一种思想,它通过将问题分解成更小的子问题并以一种递归的方式解决它们,然后利用这些…...
Instal IIS on Windows Server 2022 Datacenter
和以往版本一样,没有什么不同,So easy! WinR - ServerManager.exe 打开服务器管理器,点击【添加角色和功能】,选择自己想要的角色和功能。 一、开始之前:帮助说明,点击【下一步】;…...
飞天使-k8s知识点30-kubernetes安装1.28.0版本-使用containerd方式
文章目录 安装前准备containerd 配置内核参数优化安装nerdctl以上是所有机器全部安装开始安装初始化,这步骤容易出问题! 安装前准备 内核升级包的md5,本人已验证,只要是这个md5值,放心升级 1ea91ea41eedb35c5da12fe7030f4347 ke…...
Oracle 误操作insert delete update 数据回滚
查询回滚数据 select * from tablename AS OF TIMESTAMP TO_TIMESTAMP(2023-12-29 10:29:00,yyyy-mm-dd hh24:mi:ss) where not exists (select 1 from tablename A where A.xh tablename.xh and A.TIME tablename.TIME); TO_TIMESTAMP(2023-12-29 10:29:00,yyyy-mm-dd h…...
Linux系统(CentOS)下安装配置 Nginx 超详细图文教程
一、下载并安装 1.打开nginx官网并点击右侧的download,Nginx官网下载地址 2.选择稳定版本 我放在/usr/local/nginx/下,新建文件夹 mkdir /usr/local/nginx/ 通过xftp传输到Linux的服务器上,这里方法不过多复述。 或者如果Linux联网…...
追求完美用户体验,从变量名设计的细节抓起
在一个安静的办公室里,卧龙和凤雏正坐在电脑前忙碌地工作着。阳光透过窗户洒在他们的脸上,映照出专注的神情。 “变量命名让人摸不着头脑,光看变量名很难搞清楚它的用途。”卧龙眉头紧皱,表情严肃地说道。 “哦?具体是…...
matlab实现K均值聚类
在MATLAB中实现聚类分析,可以使用MATLAB内置的聚类函数,如kmeans(用于K均值聚类),linkage和cluster(用于层次聚类),或者使用MATLAB的统计和机器学习工具箱中的其他函数。 以下是一个…...
详解BOM编程
华子目录 BOM编程window对象常见的window对象的属性常见的window对象的方法注意 history对象history对象的属性history对象的方法 screen 对象navigator 对象属性方法 location对象属性方法示例 BOM编程 JavaScript本质是在浏览器中运行,所以JavaScript提供了BOM&a…...
情感分类学习笔记(1)
文本情感分类(二):深度学习模型 - 科学空间|Scientific Spaces 一、代码理解 cw lambda x: list(jieba.cut(x)) #定义分词函数 您给出的代码定义了一个使用 jieba 分词库的分词函数。jieba 是一个用于中文分词的 Python 库。该函数 cw 是…...
EtherCAT运动控制器Delta机械手应用
ZMC406硬件介绍 ZMC406是正运动推出的一款多轴高性能EtherCAT总线运动控制器,具有EtherCAT、EtherNET、RS232、CAN和U盘等通讯接口,ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。 ZMC406支持6轴运动控制,最多可扩展至32轴&#…...
物联网杀虫灯—新型的环保杀虫设备
型号推荐:云境天合TH-FD2S】物联网杀虫灯是一种新型环保杀虫设备,其中风吸式太阳能杀虫灯作为其一种特殊类型,展现了独特的工作原理和优势。 风吸式太阳能杀虫灯以太阳能电池板为电源,白天储存电源,晚上为杀虫灯提供电…...
加盟零食店的真是大冤种
关注卢松松,会经常给你分享一些我的经验和观点。 我一朋友,在老家县城去年失业没事干,手里有一点钱但不多,就想着自己干点啥 。最后经多方打听考察,加盟了一个零食店,前前后后花去了近五六十万,…...
力扣刷题--数组--第三天
今天再做两道二分查找的题目,关于二分查找的知识可看我前两篇博客。话不多说,直接开干! 题目1:69.x 的平方根 题目详情: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数&#…...
开源即时通讯IM框架 MobileIMSDK v6.5 发布
一、更新内容简介 本次更新为次要版本更新,进行了bug修复和优化升级(更新历史详见:码云 Release Notes、Github Release Notes)。 MobileIMSDK 可能是市面上唯一同时支持 UDPTCPWebSocket 三种协议的同类开源IM框架。轻量级、高…...
React 第二十七章 Hook useMemo
useMemo 函数可以用于缓存计算结果,以避免不必要的重复计算。 在React的函数组件中,当组件重新渲染时,函数组件内的所有代码都会重新执行。有些计算可能是非常消耗资源的,例如进行复杂的计算或进行网络请求。如果这些计算的结果在…...
自己写的爬虫小案例
网址:aHR0cDovL2pzc2NqZ3B0Lmp4d3JkLmdvdi5jbi8/dXJsPS92aWV3L3dvcmtpbmdVbml0L3dvcmtpbmdVbml0Lmh0bWw 这串代码能够爬取勘察单位企业的详细信息。 import requests import time import csv f open(勘察单位公司信息.csv,w,encodingutf-8,newline) csv_writer …...
Kafka 环境搭建和使用之单机模式详细教程
上一篇:Kakfa 简介及相关组件介绍 下一篇:Kafka 环境搭建之伪分布式集群详细教程 Kafka 环境搭建 Kafka的环境搭建可以根据不同的需求和场景采取不同的模式,主要包括以下几种: 单机模式(Standalone Mode): 在这种模式下,Kafka、Zookeeper 以及生产者和消费者都在同一…...
Xamarin.Android项目使用ConstraintLayout约束布局
Xamarin.AndroidX.ConstraintLayout Xamarin.Android.Support.Constraint.Layout Xamarin.AndroidX.ConstraintLayout.Solver Xamarin.AndroidX.DataBinding.ViewBinding Xamarin.AndroidX.Legacy.Support.Core.UI Xamarin.AndroidX.Lifecycle.LiveData ![在这里插入图片描述]…...
探索Java 18:未来技术趋势与革新之路
Java,作为一门历史悠久而又历久弥新的编程语言,始终站在技术发展的前沿,引领着软件开发的潮流。随着Java 18的发布,我们再次见证了这门语言的自我迭代与革新。本文将深入探讨Java 18带来的新特性、技术趋势,以及它如何…...
毕业论文怎么写? 推荐4个AI工具
写作这件事一直让我们从小学时期就开始头痛,初高中时期800字的作文让我们焦头烂额,一篇作文里用尽了口水话,拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业,结果毕业前的最后一道坎拦住我们的是毕业论文,这玩意不…...
JVM认识之垃圾收集算法
一、标记-清除算法 1、定义 标记-清除算法是最基础的垃圾收集算法。它分为标记和清除两个阶段。先标记出所有需要回收的对象(即垃圾),在标记完成后再统一回收所有垃圾对象。 2、优点和缺点 优点:实现简单缺点: 可能…...
docker-compose部署gitlab
需要提前安装docker和docker-compose环境 参考:部署docker-ce_安装部署docker-ce-CSDN博客 参考:docker-compose部署_docker compose部署本地tar-CSDN博客 创建gitlab的数据存放目录 mkdir /opt/gitlab && cd mkdir /opt/gitlab mkdir {conf…...
Colab/PyTorch - 001 PyTorch Basics
Colab/PyTorch - 001 PyTorch Basics 1. 源由2. PyTorch库概览3. 处理过程2.1 数据加载与处理2.2 构建神经网络2.3 模型推断2.4 兼容性 3. 张量介绍3.1 构建张量3.2 访问张量元素3.3 张量元素类型3.4 张量转换(NumPy Array)3.5 张量运算3.6 CPU v/s GPU …...
翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三
合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…...
基于Seata实现分布式事务实现
Seata 是一个开源的分布式事务解决方案,它提供了高性能和简单易用的分布式事务服务。Seata 将事务的参与者分为 TC(Transaction Coordinator)、TM(Transaction Manager)和 RM(Resource Manager)…...
adss光缆是什么意思
adss光缆,adss光缆型号,adss光缆用途 什么是adss光缆 ADSS用于高压输电线路并利用电力系统输电塔干,整个光缆为非金属介质,自承悬挂于电力铁塔上的电力强度最小的位置。它运用于已建高压输电线路,具有安全性高&#…...
JavaScript异步编程——04-同源和跨域
同源和跨域 同源 同源策略是浏览器的一种安全策略,所谓同源是指,域名,协议,端口完全相同。 跨域问题的解决方案 从我自己的网站访问别人网站的内容,就叫跨域。 出于安全性考虑,浏览器不允许ajax跨域获取…...
网站建设提成/电商培训心得
一、阿里云私有docker仓库管理指南 登录阿里云Docker Registry $ sudo docker login --username白衣卿相2744 registry.cn-shanghai.aliyuncs.com用于登录的用户名为阿里云账号全名 密码为开通服务时设置的密码**(点击查看)** 您可以在访问凭证…...
西安制作公司网站的公司/中国万网域名注册官网
最近一直在找前端工作,前前后后面了几家公司,虽然不太顺利,但是收获还是有的,就过程中遇到的面试题总结一下 CSS1:标准盒模型/IE盒模型2:自适应三栏布局3:移动端自适应方案4:FLEX布局…...
寻找网站建设 网站外包/嘉兴网站建设
第一种方法: 1、详细查询命令: 查看cpu最大进程,或者内存最大进程。 #CPU ps aux|head -1;ps aux|grep -v PID|sort -rn -k 3|head #内存 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head显示如下: ubuntuubuntu:~$ ps…...
做p2p网站的公司/seo建设招商
//这张表存放的是所有单据模板的信息表 如果不知道单据模板的信息后可在数据库中查询PUB_BILLTEMPLET//这张表是打印模板的表改模板可以再此表修改pub_print_template//获取表头某个字段的值getBillCardPanel().getHeadItem("kitarea").getValueObject()//获取当前登…...
wordpress 模板 政府/百度推广咨询
SpringBoot 之简单工厂模式 简单工厂: 工厂类根据传入的参数类型,动态决定创建哪一个产品了(实现类都继承同一个父类或接口)。在Spring中,我们只要将要用到的支付方式注入到容器中,我们便可以根据bean到名…...
做淘客网站用备案吗/交换链接营销的典型案例
1.jboss和cxf不兼容,最好集成axis,需要在WEB-INF下增加下面文件,文件配置 <?xml version"1.0" encoding"UTF-8"?> <deployment xmlns"http://xml.apache.org/axis/wsdd/" xmlns:java"http://x…...