关键路径转化


  • 需求

    在一条指定的业务流程中,各个步骤的完成人数及相对上一个步骤的百分比

  • 模型设计

    定义好业务流程中的页面标识
    Step1、  /item
    Step2、 /category
    Step3、 /index
    Step4、 /order
    CREATE TABLE dw_oute_numbs AS
    SELECT 'step1' AS step,COUNT(DISTINCT remote_addr) AS numbs FROM ods_click_pageviews
    WHERE datestr = '20130920'
    AND request LIKE '/item%'
    UNION ALL
    SELECT 'step2' AS step,COUNT(DISTINCT remote_addr) AS numbs FROM ods_click_pageviews
    WHERE datestr = '20130920'
    AND request LIKE '/category%'
    UNION ALL
    SELECT 'step3' AS step,COUNT(DISTINCT remote_addr) AS numbs FROM ods_click_pageviews
    WHERE datestr = '20130920'
    AND request LIKE '/order%'
    UNION ALL
    SELECT 'step4' AS step,COUNT(DISTINCT remote_addr) AS numbs FROM ods_click_pageviews
    WHERE datestr = '20130920'
    AND request LIKE '/index%';
    +---------------------+----------------------+--+
    | dw_oute_numbs.step | dw_oute_numbs.numbs |
    +---------------------+----------------------+--+
    | step1 | 1029 |
    | step2 | 1029 |
    | step3 | 1028 |
    | step4 | 1018 |
    +---------------------+----------------------+--+

  • 求取每一步相对于上一步的转化率

    SELECT t.rnnumbs/t.rrnumbs AS rate
    FROM (
    SELECT
    rn.step AS rnstep,
    rn.numbs AS rnnumbs,
    rr.step AS rrstep,
    rr.numbs AS rrnumbs
    FROM dw_oute_numbs rn
    INNER JOIN dw_oute_numbs rr
    WHERE rr.step = 'step1' ) t;
  • 求取每一步相对于第一步的转化率

    SELECT t.rrnumbs/t.rnnumbs AS rate
    FROM (
    SELECT
    rn.step AS rnstep,
    rn.numbs AS rnnumbs,
    rr.step AS rrstep,
    rr.numbs AS rrnumbs
    FROM dw_oute_numbs rn
    INNER JOIN dw_oute_numbs rr
    WHERE CAST(substr(rn.step,5,1) AS INT) = CAST(SUBSTR(rr.step,5,1) AS INT) - 1 ) t;
  • 也可以将两个合并到一起

    SELECT abs.step,abs.numbs,abs.rate AS abs_ratio,
    rel.rate AS leakage_rate
    FROM (
    SELECT tmp.rnstep AS step,tmp.rnnumbs AS numbs, tmp.rnnumbs/tmp.rrnumbs AS rate
    FROM (
    SELECT
    rn.step AS rnstep,
    rn.numbs AS rnnumbs,
    rr.step AS rrstep,
    rr.numbs AS rrnumbs
    FROM dw_oute_numbs rn
    INNER JOIN dw_oute_numbs rr ) tmp
    WHERE tmp.rrstep = 'step1' ) abs
    LEFT OUTER JOIN (
    SELECT tmp.rrstep AS step,tmp.rrnumbs/tmp.rnnumbs AS rate
    FROM (
    SELECT
    rn.step AS rnstep,
    rn.numbs AS rnnumbs,
    rr.step AS rrstep,
    rr.numbs AS rrnumbs
    FROM dw_oute_numbs rn
    INNER JOIN dw_oute_numbs rr ) tmp
    WHERE CAST(substr(tmp.rnstep,5,1) AS INT) = CAST(SUBSTR(tmp.rrstep,5,1) AS INT) - 1 ) rel
    ON abs.step=rel.step;

【Hadoop离线基础总结】关键路径转化率分析(漏斗模型)的更多相关文章

  1. 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发

    目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...

  2. 【Hadoop离线基础总结】网站流量日志数据分析系统

    目录 点击流数据模型 概述 点击流模型 网站流量分析 网站流量模型分析 网站流量来源 网站流量多维度细分 网站内容及导航分析 网站转化及漏斗分析 流量常见分析角度和指标分类 指标概述 指标分类 分析角 ...

  3. 【Hadoop离线基础总结】impala简单介绍及安装部署

    目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...

  4. 【Hadoop离线基础总结】oozie的安装部署与使用

    目录 简单介绍 概述 架构 安装部署 1.修改core-site.xml 2.上传oozie的安装包并解压 3.解压hadooplibs到与oozie平行的目录 4.创建libext目录,并拷贝依赖包 ...

  5. 【Hadoop离线基础总结】Hue的简单介绍和安装部署

    目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...

  6. 【Hadoop离线基础总结】Sqoop常用命令及参数

    目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...

  7. 【Hadoop离线基础总结】Hive调优手段

    Hive调优手段 最常用的调优手段 Fetch抓取 MapJoin 分区裁剪 列裁剪 控制map个数以及reduce个数 JVM重用 数据压缩 Fetch的抓取 出现原因 Hive中对某些情况的查询不 ...

  8. 【Hadoop离线基础总结】MapReduce增强(下)

    MapReduce增强(下) MapTask运行机制详解以及MapTask的并行度 MapTask运行流程 第一步:读取数据组件InputFormat(默认TextInputFormat)会通过get ...

  9. 【Hadoop离线基础总结】MapReduce增强(上)

    MapReduce增强 MapReduce的分区与reduceTask的数量 概述 MapReduce当中的分区:物以类聚,人以群分.相同key的数据,去往同一个reduce. ReduceTask的 ...

随机推荐

  1. XML布局界面

    Android推荐使用XML布局文件来定义用户界面,而不是使用Java代码来开发用户界面,因此基础所有组件都提供了两种方式来控制组件的行为:1.在XML布局文件中通过XML属性进行控制:2.在Java ...

  2. Python-selenium安装与Java-selenium安装

    一.Python安装及selenium的安装 1.安装Pythonhttps://www.Python.org2.安装setuptools.distribute.piphttps://pypi.pyt ...

  3. Newtonsoft.Json.Linq 序列化 反序列化等知识

    1.反序列化实体类 //使用JObject读写字符串:JObject j = JObject.Parse(data);IEnumerable<JProperty> properties = ...

  4. D - Yet Another Monster Killing Problem

    题目连接: https://codeforces.com/contest/1257/problem/D 题目大意: n个怪兽,m个英雄,每个怪兽有一定的能力值,每个英雄有一定的能力值和一定的耐力值.耐 ...

  5. SpringBoot集成Shiro实现权限控制

    Shiro简介 Apache Shiro是一个功能强大且易于使用的Java安全框架,用于执行身份验证,授权,加密和会话管理.使用Shiro易于理解的API,您可以快速轻松地保护任何应用程序-从最小的移 ...

  6. sqli lab less-5-6

    less-5 基于报错的注入 基于报错可以爆出当前数据库名等等 id=2' and extractvalue(1, concat(0x7c,(select user())));-- # ?id=2' ...

  7. windows server 2012 R2系统安装部署SQLserver2016企业版(转)

    转自  https://blog.csdn.net/qq_35938548/article/details/80272288 安装sql server是一个很繁琐的事情,花了一下午时间倒腾,现记录下整 ...

  8. java中wait和sleep的区别

    文章目录 Wait和sleep的区别 唤醒wait和sleep java中wait和sleep的区别 在本篇文章中,我们将会讨论一下java中wait()和sleep()方法的区别.并讨论一下怎么使用 ...

  9. Android自绘制控件

    开发过程中,我们免不了需要用到一些自定义的 View,自定义 View 一般可分为三类: ① 继承类 View —— 一般继承系统以后的基本 View,新增/重置一些自定义属性 ,例如两端对齐的Tex ...

  10. 2 个案例带你迅速入门 Python Flask 框架

    Flask 是 python 中非常流行的一个 web 框架,容易学习.这篇文章主要通过 2 个实际案例讲解 Flask 如何使用.第一个例子是实现一个调用公交车到站信息的接口服务:第二个例子是通过接 ...