零售数据分析之操作篇12:子查询的应用

各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维+数据分析,通过数据讲故事。

上期内容与作业

上一讲讲了占比相关内存计算的应用场景,包括占比、TOP占比、累计占比等,不同的占比,就是分子或分母不同而已,万变不离其宗。

上一讲还给大家出了道作业,就是:如何画出一个帕累托的统计图,来看品类销售是否符合2-8定律?

上一讲专门给大家普及了一下柏拉图,那我们就来实践一下。直接进系统。(观看视频)

第一步:新建一个表格

将收入指标放入【汇总】中,将品类指标放入【行维度】中。

第二步:加入累计占比

点击【收入】旁的【…】,依次点击【累计占比】、【行累计占比】,即可将【收入行累计占比】放入【汇总】中。

第三步:更换图表

点击上方的【更换图表】,选择柱形图下的标准图。

BI数据分析系统会自动将以柱图展示收入,用折线展示收入行累计占比。
在这里插入图片描述

奥威BI零售数据分析

到这时,操作基本完成了,只需要再对细节进行雕琢,比如点击右侧属性中【Y轴1】,找到【值格式】下的【格式】,点击选择【百分比】;勾选分割线。获得以下效果:
在这里插入图片描述

奥威BI零售数据分析

点击右侧【序列】属性,选择序列【收入行累计占比】后,找到【值格式】下的【小数位】,修改成【2】。这样在展示收入行累计占比时就可以显示两个小数点。

以上就是上期内容回顾以及作业解答!

本期内容

我们今天讲一下子查询的应用。所谓子查询,即某个查询的结果集(ds2)必须以另外一个结果集(ds1)作为筛选条件。

举例1:我们想看一下在某个门店卖最好的TOP10商品在其他门店的销售情况如何?

在这个例子中,我们首先要查询获取某个门店卖最好的TOP10商品清单,这个结集就是ds1,然后再根据ds1这个结果集来查询其他门店的销售情况,也就是ds2。

举例2:我们要查一年里买过长T恤类别的会员,这批会员买过所有品类的数量。

首先要查询获取查一年里买过长T恤类别的会员清单,这个结果集就是ds1,然后再根据ds1这个结果集来查询买过所有品类的数量,也就是ds2。(点一点,了解零售标准方案)

系统实操

1、在某个门店卖最好的TOP10商品,在其他门店的销售情况如何?

操作关键:使用复制数据集的方法

表格1:分析在某个门店卖最好的TOP10商品

新建表格:将收入指标放入【汇总】中,将商品指标放入【行维度】;接着点击【收入】旁的【…】,依次点击【排序】、【降序】;然后点击【商品】旁的【…】,依次点击【显示TOP】、【10】。

之后,增加筛选条件。点击上方【+】,依次点击【筛选】、【公共筛选】。在添加筛选控件小弹窗中,勾选【门店】,点击左下方选择【下拉{单选}】,点击确定。
在这里插入图片描述

奥威BI零售数据分析

表格2:这TOP10商品在其他门店的销售情况

新建表格并复制表格1的数据集:将收入指标放入【汇总】中,将商品指标放入【行维度】;点击数据集构建器下,【筛选】旁的【+】,勾选【商品】,点击确定;在条件筛选器中,将【等于】修改成【数据集】,在旁边的空白框中选择第一个表格的数据集即grid1,选择【商品】后点击OK。

这就意味着第二个结果集的商品是来自第一个结果集的商品记录。
在这里插入图片描述

奥威BI零售数据分析

把门店指标添加到【列维度】中,即可看到这TOP10商品在所有门店的销售情况。
在这里插入图片描述

奥威BI零售数据分析

2、我们将这个例子拓展到服装行业,这时商品会区分款号、颜色,所以,此时我们就需要增加颜色这个维度,筛选条件也需要分别配置。

新建表格1:将销售数量指标放到【汇总】中,将商品名称、颜色名称放到【行维度】中;之后对销售数量进行降序,点击【销售数量】旁的【…】,依次点击【排序】、【降序】;点击【商品名称】旁的【…】,依次点击【显示TOP】、【10】。

这时就可以看到卖得最好的10款商品(含颜色),但颜色总计的出现让报表显得不是那么好看。点击【颜色名称】旁的【…】,依次点击【总计】、【隐藏总计】。

之后,点击右侧【表行】属性,关闭【合并行】。即可获得下图效果:
在这里插入图片描述

奥威BI零售数据分析

添加门店筛选条件:点击上方【+】,依次点击【筛选】、【公共筛选】。在添加筛选控件小弹窗中,勾选【门店】、【门店名称】,点击左下方选择【下拉{单选}】,点击确定。

但这个时候明显不是按照商品颜色款式卖得最好的排序来展现的,这就需要关闭组内排序功能。在进行两个维度以上的排序时会有一个组内排序的参数。当出现了上诉效果,就需要关闭组内排序。

点击【商品名称】旁的【…】,点击【组内排序】。
在这里插入图片描述

奥威BI零售数据分析

在这里插入图片描述

奥威BI零售数据分析

添加品类筛选条件:点击上方【+】,依次点击【筛选】、【公共筛选】。在添加筛选控件小弹窗中,勾选【商品分类1】,点击左下方选择【下拉{单选}】,点击确定。

表格2:看表格1商品在其他门店的销售情况

新建表格,将表格1的数据集复制过来:

点击【数据集】旁的【+】,选择表格1的数据集grid1,点击确定。然后点击【grid1】旁的【…】,点击【复制】。

分别点击筛选中的【商品分类1】、【门店名称】旁的【…】,点击【删除】。点击【+】,点击【商品名称】。在条件筛选器中,将【等于】改成【数据集】,点击选择【grid1】数据集,点击选择【商品名称】后,点击OK。

点击【筛选】旁的【+】,点击【颜色名称】,点击确定。在条件筛选器中,将【等于】改成【数据集】,点击选择【grid1】数据集,点击选择【颜色名称】后,点击OK。

这样就可以确保表格2筛选条件中的【商品名称】、【颜色名称】都与表格1一致。点击右侧【表行】,关掉【合并行】之后效果如下:
在这里插入图片描述

奥威BI零售数据分析

然后再将门店名称放到【行维度】中,即可获得这10个不同款式颜色商品在其他门店的销售情况。

我们注意看一下生成的SQL:点击右下角小图标,调出SQL,即可看到结果生成的技巧。
在这里插入图片描述

奥威BI零售数据分析

3、要查一年里买过长T恤类别的会员,这批会员买过所有品类的数量。

按照上面的例子进行操作后,我们会发现生成的SQL会非常长,因为他会将ds1的所有记录都列示出来,这样的话,如果ds1的记录太多,多到上万甚至上百万,那么这样的方法会导致SQL过长而报错,同时,执行的效率也会变慢。所以,针对这样的场景,奥威BI在最新的产品中,增加了数据集(子查询)的筛选运算方式。我们来试一下,同样的场景如何实现。

在数据集构建器下【筛选】项中,点击筛选条件【会员卡ID】旁的【…】,在条件筛选器中,将【数据集】修改成【数据集(子查询)】,选择表格1的数据集【grid1】,点击选择【会员卡ID】后,点击OK。
在这里插入图片描述

奥威BI零售数据分析

然后,我们再查下SQL就会发现它会变得简洁很多。

敲黑板,讲重点

1、 子查询的应用场景,关键就是要先区分谁是ds1,谁是ds2,然后再通过筛选高级运算符的方式来实现。

2、 如果子查询的筛选维度有两个及以上,则必须要用筛选运算符为数据集这种方式;如果子查询的筛选维度是1个,且来源记录数可能会比较多,则建议使用数据集(子查询)这种方式,此时可有效避免因生成的SQL语句超长而出错;但如果子查询的筛选维度是1个且来源记录数不多,比如加了TOPN,则两种方法都可以,效果也没有什么区别。

3、 数据集(子查询)这种筛选方式,仅限奥威BI最新微服务版本。

最后,给大家出一道作业:

全公司最好卖的10款商品,在哪5个门店卖的最好?

下一讲,我们会讲一下同一张报表中各图表间任意联动,来实现特定分析思路的应用场景,敬请期待。

老周道数据,和你一起,用常人思维+数据分析,通过数据讲故事,我们下一讲再见!

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

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

相关文章

Explain分析示例

Explain分析示例示例表explain 两个变种explain中的列1. id列2. select_type列3. table列4. type列NULL:const, system:eq_ref:ref:range:index:ALL:5.possible_keys列6. key列7. key_len列8. r…

Matlab simulink上手控制仿真学习笔记3-常用模块S Function及使用案例

讲得真的十分细致!个人感觉看完前4节就差不多了。 今天记录的是S Function。 内容比较多,加个目录: S Function前置工作1.1 parameter.m1.2 plant.mfunction [sys,x0,str,ts,simStateCompliance] plant(t,x,u,flag,pa)function [sys,x0,str…

《Kubernetes部署篇:Ubuntu20.04基于containerd二进制部署K8S 1.24.12集群(一主多从)》

一、架构图 如下图所示: 如下图所示: 二、环境信息 1、部署规划 主机名IP地址操作系统内核版本软件说明etcd01192.168.1.62Ubuntu 20.04.5 LTS5.15.0-69-genericetcd02192.168.1.63Ubuntu 20.04.5 LTS5.15.0-69-genericetcd03192.168.1.64Ubuntu 20.04.…

第三章 运算符

文章目录1. 什么是运算符2 算术运算符2.1 基本四则运算符 、-、*、/、%2.2 增量赋值运算符 、- 、* 、/ 、%2.3 自增/自减运算符 、--3. 关系运算符4. 逻辑运算符5. 位运算符6. 移位运算7. 条件运算符8. 运算符的优先级1. 什么是运算符 计算机的最基本的用途之一就是执行数学运…

Web Components 技术分析

简括: Web Components 基于四个主要的规范: Custom Elements,Shadow DOM,HTML Templates 和 HTML Imports。 Custom Elements 可以让开发人员创建自定义的 HTML 标签。 Shadow DOM 可以让开发人员将样式和行为封装到自定义元素内…

C/C++|物联网开发入门+项目实战|C语言基础|玩转c代码---从输入输出开始-学习笔记(6)

文章目录玩转c代码---从输入输出开始参考教程:C语言编程:一本全面的C语言入门教程(第3版)第16章需要掌握的内容需要了解的内容常见的人机交互接口串口的输入输出PC常用的几个输入输出函数示例代码3 printf函数使用难点分析A.格式控制字符串的基本形式:示…

今天给大家介绍一篇基于springboot的医院管理系统的设计与实现

临近学期结束,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇基…

APK一键注入网络验证后台PHP源码ThinkPHP开发版

APK一键注入网络验证后台PHP源码ThinkPHP开发版 APK一键注入网络验证后台PHP源码ThinkPHP开发版 源码: https://url11.ctfile.com/d/25976711-55383299-827d49?p6724 (访问密码:6724) 修复 已去除登录提示到期问题。 功能简介 - 无注…

软考-套接字(scoket)

💤SocketSocket套接字:是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。将OSI模型中从传输层到物理层封装起来的抽象层,把网络协议隐藏在Socket抽象层中,只对使用者暴露API接口&#xff0c…

Redis实现分布式锁原理和Redisson框架实现分布式锁,全网最详细讲解

声明:我的大部分篇幅都讲的分布式锁的原理和实现,如果想直接用Redisson框架实现分布式锁,可以直接翻至最后面 关于分布式锁,适用于并发量特别大的微服务集群,能做到同步的实现资源的获取 我其实没有经过真实项目的分布…

【ROS2指南-1】配置ROS2环境

资料来源Configuring your ROS 2 environment — ROS 2 Documentation: Dashing documentationhttp://docs.ros.org/en/dashing/Tutorials/Configuring-ROS2-Environment.html 目标:本教程将向您展示如何准备 ROS 2 环境。 教程级别:初学者 时间&…

MyBatis(十一)、MyBatis查询语句专题

准备工作: 模块名:mybatis-007-select 打包方式:jar 引入依赖:mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。 引入配置文件:jdbc.properties、mybatis-config.xml、logback.xml 创建pojo类:Car 创…

【华为机试真题详解JAVA实现】—从单向链表中删除指定值的节点

目录 一、题目描述 二、解题代码 一、题目描述 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。 链表的值不能重复。 构造过程,例如输入一行数据为: 6 2 1 2 3 2 5 1 4 5 7 2 2 则第一个参数6表示输入总共6个节点,…

AI又进化了,声音克隆革命性突破

大家好,我是 Jack。 因 ChatGPT、Stable Diffusion 让 AI 在文本、图像生成领域火出了圈。 但 AI 在生成方面的能力,可不仅如此,音频领域也出现了很多优秀的项目。 我用我本人的音频数据,训练了一个 AI 模型,生成了…

数据结构系列17——lambda表达式

目录 1. 基本概念 2. 基本语法 3. 函数式接口 4. Lambda表达式的基本使用 4.1 语法精简 5. 变量捕获 6. Lambda在集合当中的使用 1. 基本概念 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一…

循环依赖详解及解决方案

介绍 上图就是循环依赖的三种情况,虽然方式不同,但是循环依赖的本质是一样的,就A的完整创建要依赖与B,B的完整创建要依赖于A,相互依赖导致没办法完整创建造成失败. 循环依赖代码演示 public class Demo {public static void main(String[] args) {new Demo1();} }class Demo1…

打造出ChatGPT的,是怎样一群人?

震惊世界的ChatGPT,要多少人才能开发出来?几百,还是几千? 答案是:87个人。 老实说,刚看到这个数字真是惊到我了,印象里,之前看媒体报道各大巨头人工智能人才储备时,动辄…

长草

4 5 .g… … …g… … 2 gggg. gggg. ggggg .ggg. #include <iostream> using namespace std;int r,l;char arr[1005][1005];int t;char dp[1005][1005]; int dx[4]{0,0,1,-1},dy[4]{1,-1,0,0}; void dfs(int x,int y) {for(int i0;i<4;i){int axdx[i];int bydy[i];if…

Qt Quick - 分隔器综述

Qt Quick - 分隔器综述一、概述二、MenuSeparator 控件1. 用法&#xff1a;三、ToolSeparator 控件1. 用法一、概述 Qt Quick Controls 提供了多种分隔符&#xff0c;其实就是分割一下MenuBar和ToolBar里面的内容。 控件功能MenuSeparator将菜单中的一组项目与相邻项目分开To…

dolphinscheduler资源中心

资源中心 资源中心介绍 资源中心提供文件管理&#xff0c;UDF管理&#xff0c;任务组管理。 文件管理可以访问要执行的hive的sql文件 UDF管理可以放置fllink执行的自定义udf函数jar包&#xff0c;hive自定义的UDF函数jar包 以上的*.sql,*.jar文件可以理解为资源&#xff0c…