• 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.不受外部进行列信息筛选的实惠对其有影响


  • 相关阅读:
    pm2
    php 基础知识
    EBADF, read
    php apache
    noah
    ejs
    node linux
    枚举系统进程
    c++ 进程权限的提升
    Liunx的目录结构
  • 原文地址:https://www.cnblogs.com/thomasbc/p/15787492.html
Copyright © 2020-2023  润新知