Power BI学习

Excel里面的三大插件Power Query,Power Pivot, Power View的话,这个PowerBI就是整合了这三大插件,并加入了社交分享的功能。

如果之前你没有听过这三大插件利器,没关系。把PowerBI工作过程想象成咖啡的制造,这样可能会帮助你更好地理解。

 

都有谁会需要它,它又能帮我们解决什么样的问题?大多数人对Excel再熟悉不过,如果你是一个Excel重度使用者,你也许会遇到下面问题:
A. 有大量重复性的手工整理数据工作
定期从系统抓取数据,需要对格式做重复性修改(改日期格式、分列、去重、合并等); 当数据量较大,处理几十M的Excel文件和超百万行数据,Excel出现了崩溃和卡顿情况; 使用多个数据源,手工复制粘贴来合并,或者经常用vlookup/index/match等函数把多表数据合并到一张表中。
B. 周期性报告的需求多变
季度要求变月份,产品、渠道、地域等维度的变化导致报告重做; 定期地按周、月、季度制作KPI和仪表板展示数据; 向IT部门提交的自动化数据支持需求开发周期太长或者无法及时满足; 高级数据应用需要懂VBA语句或者SQL查询语言。
C. 需要用数据可视化来讲故事
Excel提供的基本图形无法满足需求,如地图、树状图、瀑布图、帕累托图等; 修改坐标、颜色、数据标签等美化图表的工作耗时; 需要交互式分析来多角度分析; 经常分享报告给他人,希望别人在手机或平板电脑上也可以阅读。

 在“数据”界面,列的标题如果是Column,需要做的在“模型”界面  右键-编辑查询-将第一行用作标题--关闭应用并退出

度量值 、CALCULATE引擎,CALCULATETABLE筛选表

度量值:        总销量=sum('销售表'[销售数量])

                                      

calculate引擎:       

1.在【销售表】的数据界面建立度量值,表达式编辑为:

A产品销量1 = CALCULATE('销售表'[总销售量],'商品表'[品名]="A")
A产品销量2 = CALCULATE('销售表'[总销售量],'销售表'[商品名称]="A")
 
                            

 上面的CALCULATE的表达式同时也在【商品表】进行了添加度量值的操作,

发现一个结论:当【行】信息用的是商品表的字段,最左侧是品名,在CALCULATE表达式用销售表的商品名称过滤时,该表达式的显示是正确的,                               在CALCULATE表达式用商品表的品名过滤时,显示错误,销售表同理,即当最左侧的字段与CALCULATE表达式不一致的时候,显示

                         是正确的

 多条件表达式:

1   Ab产品销量 = CALCULATE('销售表'[总销售量],'商品表'[品名] in {"A","B"})
     Ab产品销量 = CALCULATE('销售表'[总销售量],'商品表'[品名] not  in {"A","B"})
2   A商品价格 = CALCULATE('销售表'[总销售量],'商品表'[品名]="A")
 
 筛选表
 

新表 = CALCULATETABLE('销售表','商品表'[品名]="A",'商品表'[进价]=0.1)

在销售表内生成新表,筛选条件用商品表的信息,在模型内也会生成对应的新表信息

然后用在销售表新建用销售表信息筛选

 度量值有专门的存储的地方,主页-输入数据-创建表-加载

然后在表内生成度量值信息

 高级筛选器Filter与Values人工造表

Filter函数与筛选的表进行横向的逐行扫描,这样的函数叫做迭代函数

1)1班男生     =            CALCULATE('花名册'[总分数],'花名册'[班级]="1班",'花名册'[性别]="男")
2)filter得到1班男生 =  CALCULATE('花名册'[总分数],FILTER('花名册','花名册'[班级]="1班"&&'花名册'[性别]="男"))
3)新建表 = filter('花名册','花名册'[班级]="1班"&&'花名册'[性别]="男")
 
 1与2是度量值的方式得到结果,3是通过新建表的方式得到新的表信息

问题:求总分大于250分的

分数大于250的数据1 = CALCULATE('花名册'[总分数],FILTER('花名册','花名册'[总分数]>250))      --正确
filter大于250的分数   = CALCULATE('花名册'[总分数],FILTER('成绩表','花名册'[总分数]>250))       --错误
数据显示如下
filter要求表信息(上面的表是花名册与成绩表)要求唯一信息表,我理解的是主表
如果仅有一张表怎么办,需要人工造表
语句:新建主表 = VALUES('成绩表'[学号])

 相当于sql的distinct的使用

然后再使用Filter函数,语句为

250分 = CALCULATE('花名册'[总分数],FILTER(VALUES('成绩表'[学号]),'花名册'[总分数]>250))
得到的结果如下:

下面两个公式得到的结果值不同,用【成绩表'[总分]】这个度量值的可以实现过滤,而用【SUM('成绩表'[分数])】这个值的是先求sum后再过滤,并没有实现筛选功能

filter总分1 = CALCULATE('成绩表'[总分],FILTER('花名册','成绩表'[总分]>250))
filter总分2 = CALCULATE('成绩表'[总分],FILTER('花名册',SUM('成绩表'[分数])>250))
filter总分3 = CALCULATE('成绩表'[总分],FILTER('花名册',calculate(SUM('成绩表'[分数])>250)))

 结论:

 

ALL函数、Allexcept函数、Allselected函数

 All函数【作用:清楚筛选(清除度量值的筛选功能) ,返回:清除筛选后的表格或列】

 语法:ALL(表)                      ALL(表[列])

度量值信息:

1.商品表中的商品数 = COUNTROWS('商品表')
2.销售表中的商品数 = CALCULATE(COUNTROWS('商品表'),'销售表')
3.不参与筛选的总数 = COUNTROWS(ALL('商品表'))

 1与2都是度量值是天生具有筛选功能的,所以把【商品名称】放到行信息后,会分散值的汇聚,而ALL函数正好可以解决这个问题

上面3统计的时候为什么加上了标题信息,有待研究???

 

不能进行筛选的总数1 = CALCULATE('销售表'[销售表销售总数1],all('销售表'))
销售表销售总数1 = sum('销售表'[销售数量])
单个商品的销售占比 = '销售表'[销售表销售总数1]/'销售表'[不能进行筛选的总数1]

 

 结论:当ALL函数的参数为【表】的时候:1.不受内部筛选的影响    2.不受外部筛选的影响

1.不受内部筛选的影响 :上面的585这个数,无论表怎么变化还是这个数

 2.不受外部筛选的影响:即使加了切片器进行了数据筛选也还是这个数,不会变化

上面的占比是如果经过筛选器的话会变化,然后如果想不变的话就把下面的公式1转化成公式2

公式1:不能进行筛选的总数1 = CALCULATE('销售表'[销售表销售总数1],all('销售表'))

公式2:不能进行筛选的总数1 = CALCULATE('销售表'[销售表销售总数1],AllSelected('销售表'))

 结论:当ALL函数的参数为【表中的列】的时候:1.进行列信息筛选的时候对其有影响   2.不受外部进行列信息筛选的实惠对其有影响


原文地址:https://www.cnblogs.com/thomasbc/p/15787492.html