当前位置: 首页 > news >正文

数仓建模【埋点设计与管理】

埋点设计与管理

埋点的作用

  1. 分析用户转化以及留存:
  2. 分析用户偏好
  3. 收集市场反馈
  4. 保障用户数据安全
  5. 定位异常
  6. 其他作用

埋点数仓设计

 数据进入数仓之前我们就需要设计好数仓表,埋点表的数据有几个特点:

  1. 数据量非常大,可能是所有数据集成渠道里面,流量最大的了
  2. 数据不存在更新,这是埋点表的数据特点

 面对这两个特点,我们需要做一些设计,当然还有一些其他设计方面的点需要注意以下,首先因为量大,而且我们往往关注的是昨天的数据,所以我们的表肯定是分区表,其次因为我们使用的特点,例如关注的是页面浏览或者是按钮点击,所以我们在实践分区的基础上按照事件进行分区。这样我们可以在数据擦汗寻的时候过滤掉大量的数据从而提高查询性能。

其次,就是埋点表作为数据报表的数据来源的时候,可能会大概率遇到计算延迟,或者一些其他的问题,所以在宽表的设计或者报表展示种,请尽量得将集成进行后延,从而更好的保证稳定性和可用性。

小程序端的埋点表

web端的埋点表

 

埋点的类型

埋点:在期望的点位,埋设一个记录的标记。这个点位,一般多是指用户与产品进行一次次交互的接触点, 从而可以在用户和产品交互的时候,将用户的数据进行上报。

通过收集这些标记点的数据,可以帮助产品运营及开发同学了解功能的整体使用、运行情况,并通过数据基础上做出下一步调整或优化的方向。遇事不拍脑袋,而是用数据说话,这是数据埋点最大的价值。

在AB测试的场景,数据埋点是为实验组的效果提供数据支持,其本质也是数据决策的基础。

根据目前常见的数据埋点形式,可以将数据埋点分为:全埋点、代码埋点(自定义埋点),当然我们也可以按照产品的类型划分为:APP埋点、Web埋点、小程序埋点。

  1. 全埋点:全埋点的逻辑,实质数据采集sdk无区别的对待所有事件的,将所有事件(页面加载成功实践、控件的浏览和点击事件)全部获取后先存下来,到使用的时候,再根据具体的页面路径和控件名称,去捞取相应的数据。
    1. 优点:其优点和特点是功能上线时,不需要开发做额外的埋点定义工作,用的时候再根据需求去获取对应的数据,因此也叫无埋点。
    2. 缺点:耗费用户流量、占存储空间;一旦版本迭代,对页面的路径做了修改,或者空间位置、文案有修改,原来的圈选数据可能就会出错,需要重新圈选,之前利用圈选指标谁当的分析模型都要替换;圈选指标无法区分细部参数,比如:商品详情页,无法通过圈选数据来区分是哪一个商品或哪一个类目;对web的页面数据处理一直不好,尤其是设计到app的内嵌H5页时,非常痛苦。
    3. 因此,全埋点适用于业务多变、经常调整,且分析诉求比较轻量级的场景。对于通用的功能,形态相对比较固定,且对数据分析颗粒度、下钻深度、聚合程度要求较高,那就需要用到代码埋点。
  2. 可视化埋点:基于此,可视化埋点是指在全埋点部署成功、已经可以获得全量数据的基础上,以可视化的方式,然后进行数据选择。这种方案的弊端之一是耗流量和存储空间,全埋点采集的数据一般会根据情况设定一个销毁时限,比如7天。即:全采集过来的数据,如果7天之内没有被使用,则会被销毁。而一旦对圈选数据做了圈选定义之后,则被定义的页面数据、控件数据,则会一直采集,且不会删除。
  3. 代码埋点:代码埋点也叫自定义埋点 ,从字面上是针对想要的点位单独定义,并可以通过变量丰富埋点的信息,以支持上下游分析。代码埋点分为前端埋点和后端埋点:
    1. 前端埋点:包括但不限于APP客户端、H5、微信小程序、PC网页,是指对具体的功能场景(如加载成功、浏览、点击等)进行明确的定义,由前端触发,采集上来的数据相比于全埋点,更准确、稳定,且通过变量字段,能够实现更细粒度的数据拆分、聚合和下钻。
    2. 后端埋点:指触发了服务端接口调用(如:接口回调成功触发)的事件埋点,如最典型的注册成功事件、付款成功事件。后端埋点对数据的准确度要求更高,同时也可以通过变量字段的扩展支持数据拆分、聚合和下钻。需要强调的是,后端事件一般采集的是一登陆状态下的用户行为,如果像使用后端事件作为流程分析的其中一环(如漏斗分析),则可能出现未登录的用户会漏掉的情况。

埋点上报方式

  1. 图片请求 :优势没有跨域问题;不会阻塞页面加载;在所有图片中,简单、安全;

  2. Get请求:GET把参数包含在URL中,也就是说我们的上报数据是在一个url参数中或者是几个参数中。GETA请求最大的特点就是简单,但是同时也带来了很多其他的问题,首先是安全问题因为GET请求参数被暴露在IURL中,GET请求只能进行url编码,而POST支持多种编码方式,其次get请求在URL中传送的参数是由长度限制的,也就是如果你上报的数据内容比较多,可能会被截断。

  3. Post请求:相比于GET请求首先就是更加安全,其次是支持多种编码,而且所能发送的数量页更大,看起来是不错的选择,但是还是不如图片请求好。

埋点管理设计

整个埋点的事件我们可以使用4W1H进行表示

 

 下面是APP端的一个例子

事件模型

我们使用”事件模型(Event模型)“来面熟用户的各种行为,事件模型包括事件和用户两个核心实体。整个埋点的属性,我们可以分为两个大类,第一类是事件属性,第二类是用户属性。

为什么这两个实体结合在一起就可以清晰的描述清除用户行为?实际上,我们在描述用户行为时,往往只需要描述清除几个要点,即可将整个行为描述清除,要点包括:是谁、什么时间、什么地点、以什么方式、干了什么。而事件和用户这两个实体结合在一起就可以达到目的。下面介绍以下这两个实体。

 

 事件的设计

基本规范

 

预置属性

 

设计原则

整个埋点的设计我们应该遵循以下几个原则,从而可以更好的维护和管理整个埋点系统。

  • 通用基础事件:埋点事件能通用则不单独埋点,不是说单独埋点越多越好,我们应该尽可能地从上层设计比较通用地事件,这样方便复用。
  • 重要事件:重要事件要单独处理,统一上报,保证采集的可用性
  • 业务主流程:对于主要的业务流程,我们可以设计独立的事件,从而方便更好的分析; 

数据从生产到应用的流程 

 首先是基于一定的需求出发,然后产品、业务、分析时对需求进行评审,主要就是需求同步,信息对齐,接下来就是埋点的开发与测试,埋点上线之后,数据同学开始进行数据需求开发在此过程中对埋点进行验收,最后对数据需求进行交付

 这个过程,需要专门投入专人去做这件事,企业需要定制顶层的业务规范,上面的流程中有一个环节是没有的,那就是埋点的下线。

数据产品和数据分析师不仅要考虑到业务需求和数据分析的工作,还要站在业务线数据体系和数据应用负责人的角度,对埋点实施、管理、迭代、文档、交付、支持进行掌控和维护。

 

埋点系统的设计

其实很多公司针对埋点会维护单独的一个系统,这个系统主要维护了公司的全部埋点,其实你可以将其理解为和jira类似的一套系统,下面看系统的核心。

埋点列表

 

埋点注册

 

埋点详情

 

属性管理

在埋点元数据中维护产品、业务层面的通用属性,由数据团队统一维护,所有可见的属性,都可以在注册、编辑埋点是添加属性时搜索到,自定义属性相对于通用属性,是某个事件下特有的属性,由业务方根据埋点方案维护。

 

表设计

 

字段名称备注
埋点ID表的自增ID即可
埋点域是APP埋点还是web埋点还是都是
埋点中文名称
埋点英文名称
埋点位置

这个位置我们要求使用图片进行展示+文字说明

这里的图片展示很重要,因为这样很形象

埋点开发负责人谁负责开发,很多时候会涉及到APP和WEB同时开发
埋点业务负责人谁提的需求
埋点数据负责人谁负责该埋点对应数据需求的处理,完成最终的埋点的验收
埋点业务含义为什么埋点,关于埋点的具体数据计算逻辑是什么
埋点所属事件买单所属的事件,一般情况下我们都可以将一个买单归到我们已经定义的埋点事件中去,如果没有合适的埋点事件,需要先定义事件,再定义该埋点
埋点通用属性一旦归类到某个埋点事件下面,我们要求上报该事件的全部属性
自定义属性该埋点的自定义属性
埋点代码git的PR是一个url。方便追踪埋点代码
埋点的jira埋点需求的jira跟踪
埋点的状态上线、测试、开发、下线、不可见等状态
埋点的创建时间
埋点的上线时间
埋点的更新时间

数据丢失如何处理

总结

  1. 埋点是数据平台很重要的一部分,如果只有业务数据没有埋点数据,那么用户在我们平台上的一切行为对我们来说都是黑盒,所以我们想要做到精细化运维埋点是必须的;
  2. 优于埋点的数据从产生使用链路很长,而且很复杂,这就需要我们做好设计和管理工作。 

相关文章:

数仓建模【埋点设计与管理】

埋点设计与管理 埋点的作用 分析用户转化以及留存:分析用户偏好收集市场反馈保障用户数据安全定位异常其他作用 埋点数仓设计 数据进入数仓之前我们就需要设计好数仓表,埋点表的数据有几个特点: 数据量非常大,可能是所有数据集…...

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联网&#xf…...

追求完美用户体验,从变量名设计的细节抓起

在一个安静的办公室里,卧龙和凤雏正坐在电脑前忙碌地工作着。阳光透过窗户洒在他们的脸上,映照出专注的神情。 “变量命名让人摸不着头脑,光看变量名很难搞清楚它的用途。”卧龙眉头紧皱,表情严肃地说道。 “哦?具体是…...

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】物联网杀虫灯是一种新型环保杀虫设备,其中风吸式太阳能杀虫灯作为其一种特殊类型,展现了独特的工作原理和优势。 风吸式太阳能杀虫灯以太阳能电池板为电源,白天储存电源,晚上为杀虫灯提供电…...

加盟零食店的真是大冤种

关注卢松松,会经常给你分享一些我的经验和观点。 我一朋友,在老家县城去年失业没事干,手里有一点钱但不多,就想着自己干点啥 。最后经多方打听考察,加盟了一个零食店,前前后后花去了近五六十万&#xff0c…...

力扣刷题--数组--第三天

今天再做两道二分查找的题目,关于二分查找的知识可看我前两篇博客。话不多说,直接开干! 题目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 以及生产者和消费者都在同一…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...