week07day03(power bi dax公式 零售数据业务分析)
一. 切片器(筛选)相关的三个函数
1.all (all后面的数据意思是 不受其影响)
#ALL 筛选的是 筛选器 或 切片器
#计算 销售金额 ,并且 不受到 门店ID 控制
计算金额 = CALCULATE(SUM('销售表'[金额]),ALL('销售表'[门店ID]))
#计算 销售金额 ,并且 不受到 销售表中任何字段 的 控制
计算金额 = CALCULATE(SUM('销售表'[金额]),ALL('销售表'))
2. ALLEXCEPT (其后的数据存在,其他都失效,图中只有产品id有效,其他都失效)
#ALLEXCEPT 排除指定表或列 之外 其它表或列的 筛选器 功能
CALCULATE(sum([金额]),ALLEXCEPT('销售表','销售表'[产品ID]))
3. ALLSELECTED : 指定谁 谁就没有筛选功能,保留其他表或列的筛选器
#失效 : ALLEXCEPT 清除指定表或列 的 筛选器 功能 , 保留其它 表或列 的 筛选器 功能
CALCULATE(sum([金额]),ALLSELECTED('销售表','销售表'[产品ID]))
二. 关系函数
1. 事实表:
核心业务表,事实表包含与业务过程或事件相关的数值、度量或事实数据,例如销售金额、数量、成本等。事实表记录了业务事件的具体数值。
2.维度表:
- 扩展表
- 维度表包含描述性的、非数值的属性信息,例如产品名称、地理位置、时间等。维度表提供了用于对事实数据进行分类和分组的维度
3. RELATED 关系函数
在事实表中添加维度表中的一列内容,#RELATED : 将维度表 当中的 "借用(复制)" 列 到 事实表
列 = RELATED('门店信息表'[门店名称])
4. RELATEDTABLE
当两个表的行数不相同需要sumx进行辅助,将事实表中的列 复制 到 维度表
列 = SUMX(RELATEDTABLE('销售表'),[金额])
三. 日历函数 (CALENDAR函数) (重新看)
注意: 如果是销售订单的话,不是每天都有订单,数据的日期会产生断层,需要自己产生连贯的时间
#case 变量 when 值
#case when 变量=值
#字段 in (1,2,3)
日期时间表 =
-- 当前是一个变量
-- 加了Var 以后 返回的结果 必须写在Return之后
VAR BeginDate = MIN('销售表'[日期]) --"2019/10/10"
VAR EndDate = MAX('销售表'[日期]) --"2020/10/10"
RETURN
-- 添加列
ADDCOLUMNS(
-- 从表当中挑选列
SELECTCOLUMNS(
-- CALENDAR : 日历函数返回的结果是一张表
CALENDAR(
DATE(YEAR(BeginDate)-1,1,1),
DATE(YEAR(EndDate)+1,1,1)
), -- select Date as 日期
"日期",[Date]
),
"年",YEAR([日期]),
"季度",SWITCH(
TRUE(),
MONTH([日期]) IN {1,2,3} , 1 ,
MONTH([日期]) IN {4,5,6} , 2 ,
MONTH([日期]) IN {7,8,9} , 3 ,
MONTH([日期]) IN {10,11,12} , 4
),
"年季",YEAR([日期])*10 +
SWITCH(
TRUE(),
MONTH([日期]) IN {1,2,3} , 1 ,
MONTH([日期]) IN {4,5,6} , 2 ,
MONTH([日期]) IN {7,8,9} , 3 ,
MONTH([日期]) IN {10,11,12} , 4
),
"季度名称" , "Q" &SWITCH(
TRUE(),
MONTH([日期]) IN {1,2,3} , 1 ,
MONTH([日期]) IN {4,5,6} , 2 ,
MONTH([日期]) IN {7,8,9} , 3 ,
MONTH([日期]) IN {10,11,12} , 4
),
"月",MONTH([日期]),
"年月",YEAR([日期])*100 + MONTH([日期]),
"月份名称" , "M" & MONTH([日期]),
"周",WEEKNUM([日期],2),
"年份周数",YEAR([日期])*100 + WEEKNUM([日期],2),
"星期",WEEKDAY([日期],2),
"日",DAY([日期])
)
#ADDCOLUMNS("表","名称1","表达式1".....) 给指定的表添加 计算列 ,
返回的结果是 表
#SELECTCOLUMNS("表","名称1","表达式1".....) 选择指定表 中的列 ,并对列重命名 ,
返回的结果是 表
#CALENDAR(start,end) 返回一段连续日期 的表 ,表中包含一个默认字段[Date]
# WEEKDAY([日期],2) 返回 列 或 度量值 , 1是从周天开始 ,2 从周一开始
# WEEKNUM([日期],2) 一年中的第几周
#VAR + RETURN : VAR定义变量的
四. USERELATIONSHIP函数
将销售表的日期和日期时间表连接,统计是按照日期时间表的日期进行计算
# userelationship: 表明 列(本表) 和列(其他表) 之间的关系, 不返回任何结果
CALCULATE(SUM([数量]),'销售表'[金额]>0,
USERELATIONSHIP('销售表'[日期],'日期时间表'[日期]))
五. 时间智能函数
dateadd 返回的是单列的表
DATEADD('日期时间表'[日期],-1,YEAR)
DATESBETWEEN
DATESBETWEEN('日期时间表'[日期],DATE(2019,6,1),DATE(2019,06,30)),
calculate(
sum([数量]),
filter(
DATESBETWEEN('日期时间表'[日期],DATE(2019,6,1),DATE(2019,06,30)),
TRUE()
)
)
calculate(
sum([数量]),
AND(
'日期时间表'[日期] >= DATE(2019,6,1),
'日期时间表'[日期] <= DATE(2019,6,30)
)
)
calculate(
sum([数量]),
'日期时间表'[日期] >= DATE(2019,6,1),
'日期时间表'[日期] <= DATE(2019,6,30)
)
calculate(
sum([数量]),
'日期时间表'[日期] >= DATE(2019,6,1) && '日期时间表'[日期] <= DATE(2019,6,30)
)
计算累计值
TOTALMTD: 最大的极限只能算到 月总和 ,不可以算到季度和年。(Month-to-Date)
# 按照日期时间表'[日期],且金额大于0的数据进行 金额求和
TOTALMTD( sum([金额]),'日期时间表'[日期],'销售表'[金额] >0)
六.零售数据业务分析
1. 传统零售的Excel困境:
- 数据量限制(500MB)
- 不能对数据进行实时刷新
2. 新零售系统
- 定制二维码 :通过二维码,可以确定从什么店铺注册的
- 集合 智能终端 获取到 销售数据和会员消费数据
- 商家有ERP系统,里面可以显示各个区域 和 门店中的库存
- 最终通过各方 汇集的数据, 形成数据看板
3. 广域流量
- 投流
- 要保证当前的品牌能做的大
4.私域流量
- up主引流、文章、微信的公众号
- 要保证当前品牌可以做的稳
七. 数据来源
1. 有独立站
- 公司、厂店一体有自己的品牌, 公司内部一般会搭建 大数据仓库
- 独立站一般会 埋点, 可以获取 用户的行为数据。下单以后会存在 经营数据
2. 只有平台的店铺
- 千牛、 生意参谋(有限时间的订单数据)。
- 店透视和店侦探(竞品分析)
- ERP(订单数据 综合数据)
- CRM(会员数据)
- WRM(仓库数据)
3.信息孤岛
- 公司里面有多个ERP和平台工具,存在"信息孤岛", 则打通 信息孤岛
八. 数据分析的价值
1. 分析当前业务开展情况是否良好
- 会员情况:
- 会员总数是否增加
- 老会员留存率
- 会员精准群体
- 库存情况:
- 活动库存
- 流程和审核
- 关联情况:
- 打包组合
规避风险 ,精准营销
九. 模型的关系
- 星形模型
- 雪花模型
- 星座模型:多个表之间有交叉(维度表交叉还特别多)
- 梳状模型: 主表之间多有关系,维度表之间没啥关系
十. 归纳表的创建
1. 创建方法
- 将维度表前添加前缀
- 将事实表前添加前缀
- 模型之间关系的建立
- 方法:选择主页 输入数据 创建空列 将模块选择到模型视图,点击任意表,查看右侧属性栏,标记 显示文件夹(可以将度量值 或 列 分包存储)