day03_开发前准备和匹配类标签

文章目录

  • day03_开发前准备和匹配类标签
  • 一、标签体系(了解)
  • 二、数据导入(操作)
    • 1、背景介绍(重要)
    • 2、创建Hive表
      • 2.1 dwm_sold_goods_sold_dtl_i
      • 2.2 dwm_sell_o2o_order_i
      • **2.3 dwd_mem_member_union_i**
      • 2.4 dwm_mem_member_behavior_day_i
      • **2.5 dwm_mem_first_buy_i**
    • 3、数据同步
    • 4、数据核对问题
  • 三、标签计算流程(熟悉)
    • 1、四级标签和Spark任务的对应关系(了解)
    • 2、标签计算的元数据
    • 3、Spark任务开发流程
  • 四、通用开发(掌握)
    • 1、环境准备
    • 2、设置开发模板
    • 3、复习Spark与Hive整合
    • 4、MySQL规则处理
      • 4.1 复习Spark与MySQL整合
      • 4.2 标签配置表rule字段内容解析
    • 5、创建索引和逗号分词器
  • 五、年龄段标签开发(掌握)
    • 1、需求分析
    • 2、代码开发
  • Spark与Hive整合.py
  • Spark与MySQL整合.py
  • match
    • age_tag_sql.py
    • age_tag_v1.py
  • 六、课后作业
    • 1、独立实现年龄段标签开发
    • 2、参考年龄段标签,实现性别、职业标签的开发

day03_开发前准备和匹配类标签

一、标签体系(了解)

在数据产品经理与业务部门的沟通下,最终将小兔智购的标签体系划分为如下:

在这里插入图片描述

开发时项目建包原则,可以按照类型划分statices,match,ml,streaming划分项目的package

规则匹配标签:只需要进行简单的规则匹配就可以得到用户画像结果

统计性标签:在计算时候要进行聚合统计可以得到画像结果

算法挖掘类标签:在计算需要使用用到机器学习算法得到画像结果

实时标签:需要实时处理数据计算实时标签

开发时间:挖掘性标签一周1个,匹配和统计2-3天1个(需要熟悉业务、处理数据等)

二、数据导入(操作)

同学们自己写简历的项目结构可以是怎样?
	1- 方案一(顺丰优选公司实际的做法): 你可以说你们在开发用户画像之前,你们公司已经开发好了Hive离线数仓的项目,用户画像的业务数据来源自Hive数仓
	2- 方案二: 提前没有Hive离线数仓的项目,你们从MySQL中使用SeaTunnel将业务数据同步到Hive的ODS层,接着开发用户画像,并且没有建设Hive离线数仓

1、背景介绍(重要)

因为本项目是建立在离线数仓的基础上,也就是说,在用户画像项目开始前,已经有部分数据进行了加工处理,所以在实际开发时,可以直接使用存储在Hive数仓中的数据,避免重复加工。

2、创建Hive表

2.1 dwm_sold_goods_sold_dtl_i

CREATE DATABASE IF NOT EXISTS dwm;
CREATE TABLE IF NOT EXISTS dwm.dwm_sold_goods_sold_dtl_i(
    trade_date_time             STRING COMMENT '核销时间',
    trade_date                  STRING COMMENT '交易日期',
    week_trade_date             STRING COMMENT '周一日期',
    month_trade_date            STRING COMMENT '月一日期',
    hourly                      BIGINT COMMENT '交易小时(0-23)',
    quarter                     BIGINT COMMENT '刻钟:1.0-15,2.15-30,3.30-45,4.45-60',
    quarters                    BIGINT COMMENT '刻钟数:hourly*4+quarters',

    parent_store_no             STRING COMMENT '母店编码',
    store_no                    STRING COMMENT '店铺编码',
    store_name                  STRING COMMENT '店铺名称',
    store_sale_type             BIGINT COMMENT '店铺销售类型',
    store_type_code             BIGINT COMMENT '分店类型',
    worker_num                  BIGINT COMMENT '员工人数',
    store_area                  DECIMAL(27, 2) COMMENT '门店面积',
    city_id                     BIGINT COMMENT '城市ID',
    city_name                   STRING COMMENT '城市名称',
    region_code                 STRING COMMENT '区域编码',
    region_name                 STRING COMMENT '区域名称',
    is_day_clear                BIGINT COMMENT '是否日清:0否,1是',

    trade_type                  BIGINT COMMENT '结算类型(0.正常交易,1.赠品发放,2.退货,4.培训,5.取消交易)',
    source_type                 BIGINT COMMENT '交易来源1:线下POS;2:三方平台;3:传智鲜商城;4:优选团;5:传智大客户;6:传智其他;7:优选;8:优选海淘;9:优选大客户;10:优选POS;11:优选APP;12:优选H5;13:店长工具线下;14:店长工具线上;15:其他',
    source_type_name            STRING COMMENT '交易来源名称',
    sale_type                   BIGINT COMMENT '销售类型 1.实物,2.代客,3.优选小程序,4.离店,5.传智鲜小程序,6.第三方平台,7.其他,8.大客户',
    is_online_order             BIGINT COMMENT '是否为线上单:0否,1是',
    member_type                 BIGINT COMMENT '会员类型:0非会员,1线上会员,2实体卡会员',
    is_balance_consume          BIGINT COMMENT '是否有余额支付:0否,1是',
    order_type                  BIGINT COMMENT '配送类型(真正的订单类型由业务类型来决定):1-及时送;2-隔日送;3-自提单;4-线下单',
    express_type                BIGINT COMMENT '配送方式:0-三方平台配送;1-自配送;2-快递;3-自提;4-线下',

    parent_order_no             STRING COMMENT '母订单编号',
    order_no                    STRING COMMENT '订单编号',

    create_time                 STRING COMMENT '创建时间',
    is_cancel                   BIGINT COMMENT '是否取消',
    cancel_time                 STRING COMMENT '取消时间',
    last_update_time            STRING COMMENT 'pos_sale表最后一次更新时间',

    zt_id                       BIGINT COMMENT '中台ID',
    member_id                   BIGINT COMMENT '会员ID',
    card_no                     STRING COMMENT '卡号',

    share_user_id               STRING COMMENT '分享人用户ID',
    commission_amount           DECIMAL(27, 2) COMMENT '佣金',
    is_tuan_head                BIGINT COMMENT '是否为团长订单',
    store_leader_id             BIGINT COMMENT '团长id',
    order_group_no              STRING COMMENT '团单号',

    first_category_no           STRING COMMENT '一级分类编码',
    first_category_name         STRING COMMENT '一级分类名称',
    second_category_no          STRING COMMENT '二级分类编码',
    second_category_name        STRING COMMENT '二级分类名称',
    third_category_no           STRING COMMENT '三级分类编码',
    third_category_name         STRING COMMENT '三级分类名称',
    goods_no                    STRING COMMENT '商品编码',
    goods_name                  STRING COMMENT '商品名称',

    supply_team                 BIGINT COMMENT '供应链团队 1.平台商品,2.优选标品,3.传智鲜标品,4.传智鲜生鲜,5优选POS商品',
    dc_no                       STRING COMMENT '采购仓库编号',
    dc_name                     STRING COMMENT '采购仓库名称',
    group_no                    STRING COMMENT '采购柜组编号',
    group_name                  STRING COMMENT '采购柜组名称',
    trade_mode_id               BIGINT COMMENT '结算方式:1购销,2联营',
    vendor_id                   BIGINT COMMENT '供应商ID',
    contract_no                 STRING COMMENT '合同编号',
    is_clean                    BIGINT COMMENT '商品是否日清:0否,1是',
    is_daily_clear              BIGINT COMMENT '商品是否参加日清活动:0否,1是',

    sale_qty                    DECIMAL(27, 3) COMMENT '商品销售数量',
    sale_amount                 DECIMAL(27, 2) COMMENT '商品销售金额',
    dis_amount                  DECIMAL(27, 2) COMMENT '商品折扣金额',
    sale_cost                   DECIMAL(27, 2) COMMENT '商品销售成本',
    balance_amount              DECIMAL(27, 2) COMMENT '余额支付',

    order_total_amount          DECIMAL(27, 2) COMMENT '订单总金额(平摊)',
    order_discount_amount       DECIMAL(27, 2) COMMENT '订单优惠金额=商家承担优惠金额+平台补贴金额(平摊)',
    order_paid_amount           DECIMAL(27, 2) COMMENT '实付金额(平摊)'
)
COMMENT '商品销售明细(核销)'
partitioned by(dt STRING COMMENT '核销日期')
row format delimited fields terminated by ','
stored as orc
tblsql ('orc.compress'='SNAPPY');

2.2 dwm_sell_o2o_order_i

CREATE DATABASE IF NOT EXISTS dwm;
CREATE TABLE IF NOT EXISTS dwm.dwm_sell_o2o_order_i (
    create_time               STRING COMMENT '订单创建时间',
    trade_date                STRING COMMENT '交易日期',
    week_trade_date           STRING COMMENT '周一日期',
    month_trade_date          STRING COMMENT '月一日期',
    hourly                    BIGINT COMMENT '交易小时(0-23)',
    quarter                   BIGINT COMMENT '刻钟:1.0-15,2.15-30,3.30-45,4.45-60',
    quarters                  BIGINT COMMENT '刻钟数:hourly*4+quarters',

    parent_order_no           STRING COMMENT '父单订单号/源单号',
    order_no                  STRING COMMENT '订单编号',
    trade_type                BIGINT COMMENT '结算类型(0.正常交易,1.赠品发放,2.退货,4.培训,5.取消交易)',
    source_type               BIGINT COMMENT '交易来源1:线下POS;2:三方平台;3:传智鲜商城;4:优选团;5:传智大客户;6:传智其他;7:优选;8:优选海淘;9:优选大客户;10:优选POS;11:优选APP;12:优选H5;13:店长工具线下;14:店长工具线上;15:其他',
    source_type_name          STRING COMMENT '交易来源名称',
    sale_type                 BIGINT COMMENT '销售类型 1.实物,2.代客,3.优选小程序,4.离店,5.传智鲜小程序,6.第三方平台,7.其他,8.大客户',
    is_online_order           BIGINT COMMENT '是否为线上单:0否,1是',
    member_type               BIGINT COMMENT '会员类型:0非会员,1线上会员,2实体卡会员',
    is_balance_consume        BIGINT COMMENT '是否有余额支付:0否,1是',
    order_type                BIGINT COMMENT '配送类型(真正的订单类型由业务类型来决定):1-及时送;2-隔日送;3-自提单;4-线下单',
    express_type              BIGINT COMMENT '配送方式:0-三方平台配送;1-自配送;2-快递;3-自提;4-线下',

    store_no                  STRING COMMENT '店铺编码',
    store_name                STRING COMMENT '店铺名称',
    store_sale_type           BIGINT COMMENT '店铺销售类型',
    store_type_code           BIGINT COMMENT '分店类型',
    worker_num                BIGINT COMMENT '员工人数',
    store_area                DECIMAL(27, 2) COMMENT '门店面积',
    city_id                   BIGINT COMMENT '城市ID',
    city_name                 STRING COMMENT '城市名称',
    region_code               STRING COMMENT '区域编码',
    region_name               STRING COMMENT '区域名称',
    is_day_clear              BIGINT COMMENT '是否日清:0否,1是',

    is_cancel                 BIGINT COMMENT '是否取消',
    cancel_time               STRING COMMENT '取消时间',
    cancel_reason             STRING COMMENT '取消原因',
    last_update_time          TIMESTAMP COMMENT '最新更新时间',

    cashier_no                STRING COMMENT '收银员编码',
    cashier_name              STRING COMMENT '收银员名称',

    zt_id                     BIGINT COMMENT '中台ID',
    member_id                 BIGINT COMMENT '会员ID',
    card_no                   STRING COMMENT '卡号',
    r_name                    STRING COMMENT '收货人姓名',
    r_province                STRING COMMENT '收货人省份',
    r_city                    STRING COMMENT '收货人城市',
    r_district                STRING COMMENT '收货人区域',

    is_tuan_head              BIGINT COMMENT '是否为团长订单',
    store_leader_id           BIGINT COMMENT '团长id',
    order_group_no            STRING COMMENT '团单号',

    settle_amount             DECIMAL(27, 2) COMMENT '结算金额',
    share_user_id             BIGINT COMMENT '分享人用户ID',
    commission_amount         DECIMAL(27, 2) COMMENT '佣金',

    order_total_amount        DECIMAL(27, 2) COMMENT '订单总金额',
    product_total_amount      DECIMAL(27, 2) COMMENT '商品总金额(原价)',
    pack_amount               DECIMAL(27, 2) COMMENT '餐盒费/打包费',
    delivery_amount           DECIMAL(27, 2) COMMENT '配送费',
    discount_amount           DECIMAL(27, 2) COMMENT '订单优惠金额=商家承担优惠金额+平台补贴金额',
    seller_discount_amount    DECIMAL(27, 2) COMMENT '商家承担优惠金额',
    platform_allowance_amount DECIMAL(27, 2) COMMENT '平台补贴金额',
    real_paid_amount          DECIMAL(27, 2) COMMENT '实付金额',
    product_discount          DECIMAL(27, 2) COMMENT '商品优惠金额',
    real_product_amount       DECIMAL(27, 2) COMMENT '商品实际金额',

    round_amount              DECIMAL(27, 2) COMMENT '舍分金额',
    wechat_amount             DECIMAL(27, 4) COMMENT '微信支付',
    ali_pay_amount            DECIMAL(27, 4) COMMENT '支付宝支付',
    cash_amount               DECIMAL(27, 4) COMMENT '现金支付',
    balance_amount            DECIMAL(27, 4) COMMENT '余额支付',
    point_amount              DECIMAL(27, 4) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956888.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Video-RAG:一种将视频RAG新框架

1. 摘要及主要贡献点 摘要: 检索增强生成(RAG)是一种强大的策略,通过检索与查询相关的外部知识并将其整合到生成过程中,以解决基础模型生成事实性错误输出的问题。然而,现有的RAG方法主要集中于文本信息&…

VSCode的配置与使用(C/C++)

从0开始教你在vscode调试一个C文件 一.首先是配置你的编译环境,添加到环境变量(默认你是全新的电脑,没有安装vs2019之类的) 原因:因为相比于vs2019,vscode只是个代码编辑器,相当于一个彩色的、…

MongoDB基本操作

一、实验目的 1. 熟悉MongoDB的基本操作,包括CRUD(增加、读取、更新、删除)。 2. 理解MongoDB的文档型数据库特性和Shell的使用。 3. 培养学生通过命令行操作数据库的能力。 4. 强化数据库操作的实际应用能力。 二、实验环境准备 1.…

python如何导出数据到excel文件

python导出数据到excel文件的方法: 1、调用Workbook()对象中的add_sheet()方法 wb xlwt.Workbook() ws wb.add_sheet(A Test Sheet) 2、通过add_sheet()方法中的write()函数将数据写入到excel中,然后使用save()函数保存excel文件 ws.write(0, 0, 1234…

STL--list(双向链表)

目录 一、list 对象创建 1、默认构造函数 2、初始化列表 3、迭代器 4、全0初始化 5、全值初始化 6、拷贝构造函数 二、list 赋值操作 1、赋值 2、assign(迭代器1,迭代器2) 3、assign(初始化列表) 4、assig…

eBPF 概述 | 学习

注:本文为 “ eBPF” 相关文章合辑。 未整理去重。 如有内容异常,请看原文。 【译】eBPF 概述:第 1 部分:介绍 2022-04-26257 1. 前言 深入研究 eBPF 的底层细节,从其虚拟机机制和工具,到在远程资源受限…

STM32学习之通用定时器

1.1通用定时器介绍 通用定时器具有基本定时器的所有特征,基本定时器只能递增计数,而通用定时器可以递减计数,可以中心对齐计数;也可以触发ADC和DAC,同时在更新事件,触发事件,输入捕获&#xff…

【Spring】定义的Bean缺少隐式依赖

问题描述 初学 Spring 时,我们往往不能快速转化思维。例如,在程序开发过程中,有时候,一方面我们把一个类定义成 Bean,同时又觉得这个 Bean 的定义除了加了一些 Spring 注解外,并没有什么不同。所以在后续使…

服务器日志自动上传到阿里云OSS备份

背景 公司服务器磁盘空间有限,只能存近15天日志,但是有时需要查看几个月前的日志,需要将服务器日志定时备份到某个地方,需要查询的时候有地方可查。 针对这个问题,想到3个解决方法: 1、买一个配置比较低…

使用 vllm 部署 MiniCPM-o 2.6

使用 vllm 部署MiniCPM-o 2.6 1. 创建虚拟环境2. 克隆代码3. 从代码安装 vllm4. 安装 flash-attn5. 启动 MiniCPM-o 2.66. 使用 chatbox 客户端访问并测试一下 1. 创建虚拟环境 conda create -n vllm_openbmb python3.11 -y conda activate vllm_openbmb 2. 克隆代码 git clo…

JavaScript笔记基础篇04——对象

黑马程序员视频地址:黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes 目录 对象 对象的基本使用 1.对象声明语法 2.对象…

Autosar CP RTE规范解读之不同 BSW 接口的通知与软件组件激活机制:标准化接口与 AUTOSAR 接口的实现方式

在汽车电子系统开发中,特别是在遵循 AUTOSAR 架构的系统中,基本软件(BSW)模块之间的通信和信息通知机制至关重要,它直接影响着系统的性能、可靠性以及各个软件组件之间的协同工作能力。本文根据不同类型的 BSW 接口&am…

利用大语言模型进行长文本抽取式摘要的突破

论文地址:https://arxiv.org/pdf/2408.15801v1 引言:信息过载时代的文本摘要需求 在信息爆炸的时代,如何从海量文本中快速提取关键信息成为了一项至关重要的技能。自动文本摘要技术应运而生,主要分为抽取式和生成式两种方法。生成…

Quick get started with vcpkg, windows visual studio | CPP

本文属于 C 系列文章,本篇文章,是在 Quickstart C with cmake, visualstudio | CPP 基础上,继续的。 目录 vcpkg总结安装安装 mingw64安装 vcpkg 创建项目查询已有的包在 Visual Studio 中调试发布依赖Trouble ShootingCMake Error: CMake wa…

《Linux服务与安全管理》| 邮件服务器安装和配置

《Linux服务与安全管理》| 邮件服务器安装和配置 目录 《Linux服务与安全管理》| 邮件服务器安装和配置 1.在Server01上安装dns、postfix、dovecot和telnet,并启动 2.在Server01上配置DNS服务器,设置MX资源记录 3.在server1上…

BGP分解实验·9——路由聚合与条件性通告(1)

路由聚合是有效控制缩减BGP路由表的方法之一,路由聚合的前提和IGP一样,需要有路由目标存在BGP表中,与IGP不同的是,BGP路由聚合可以定义按需抑制路由的能力。 实验拓扑如下所示: 现在开始把从R1的R5的基础配置先准备好…

Spring Boot 配置(官网文档解读)

目录 摘要 Spring Boot 配置加载顺序 配置文件加载顺序 Spring Boot 配置加载方式 Value Value 注解简单示例 ConfigurationProperties 启动 ConfigurationProperties ConfigurationProperties 验证 ConfigurationProperties 与 Value 对比 Autowired Autowired 自…

ElasticSearch JavaRestClient查询之快速入门

文章目录 查询操作流程概述构建并发起请求1. 创建请求对象2. 设置请求体3. 发送请求 查询结果的解析1. 解析结果结构2. 获取总条数3. 获取命中的数据 完整示例代码总结 查询操作流程概述 Elasticsearch 查询操作大致可以分为两个部分: 构建并发起请求:…

【C++】红黑树的应用(封装map和set)

✨ 青山一道同云雨,明月何曾是两乡 🌏 📃个人主页:island1314 🔥个人专栏:C学习 🚀 欢迎关注:👍点赞 &…

C# 给定欧氏平面中的一组线可以形成的三角形的数量

给定欧氏平面中的一组线可以形成的三角形的数量(Number of Triangles that can be formed given a set of lines in Euclidean Plane) 给定欧氏平面上的 n 条不同直线的集合 L {l 1 , l 2 , ………, l n }。第i 条直线由形式为 a i x b i y c i的方程给出。求出可以使用集合…