zoukankan      html  css  js  c++  java
  • 数据可视化之DAX篇(二十一)连接表的几个DAX函数,一次全掌握

    https://zhuanlan.zhihu.com/p/67015995

    编写DAX代码进行业务分析时,经常会用到表与表之间的连接计算,比如在之前的产品关联分析一文中(如何用Power BI分析产品关联度?),需要找出同时购买两种商品的客户,就是计算A商品的客户列表与B商品的客户列表的交集。

    这篇文章再通过客户列表的示例,介绍如何使用DAX,进行两个表的各种连接计算。

     


    模拟一个简单的订单表如下,

     

    通过订单表可以简单的计算出购买A的客户列表,新建表,在编辑框输入代码,如图示:

     

     

    购买A的客户也可用下图清晰展示:

     

     

    同理,购买B的客户:

     

     

    下面就以此为基础,来计算A产品的客户与B产品的客户表的各种交叉连接。

     

    01 | 购买A或购买B的客户

     

     

     

     

    利用UNION函数把A客户表和B客户表简单合并,然后使用DISTINCT函数去重,就得到了购买A或者B的客户列表。

     

    02 | 购买A且购买B的客户

     

     

     

    使用NATURALINNERJOIN函数,返回A客户表与B客户表的交集,就是同时购买A和B的客户。

     

    03 | 购买A但未购买B的客户

     

     

     

     

    这里用到了EXCEPT函数,该函数返回第一个表中,未出现在第二个表的数据,需要剔除数据时十分有用。

    04 | 仅购买A和B其中一种的客户

     

     

     

    只购买其中一种商品的客户,实际上是购买A或者B的客户(第一种情形),剔除掉购买A并且购买B的客户(第二种情形),利用第三种情形的EXCEPT函数,轻松得出。

    上面的几种方式基本涵盖了两个客户表连接的各种情形,DAX代码好像有点长,不过你也看到了,逻辑都很简单,主要是灵活运用这几个表函数,进行不同的业务逻辑运算。

      • UNION:简单合并表
      • DISTINCT:保留不重复行
      • NATURALINNERJOIN:返回两个表的交集
      • EXCEPT:从一个表中剔除另一个表的数据
  • 相关阅读:
    C#调用webservice 时如何传递实体对象
    Gridview实现突出显示某一单元格的方法
    oracle数据库存储过程分页
    GridView合并表头多重表头
    Gridview中实现求和统计功能
    C#封装的一个JSON操作类
    C#通过StreamWriter对象实现把数值内容写到记事本
    Android CTS
    离线安装eclipse maven插件
    selenium2 页面对象模型Page Object
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12821253.html
Copyright © 2011-2022 走看看