美文网首页
在Power BI中生成笛卡尔积表

在Power BI中生成笛卡尔积表

作者: PowerPivot工坊 | 来源:发表于2017-10-18 17:34 被阅读0次

在我们进行数据分析或数据处理中,有时会需要生成笛卡尔积表作为辅助计算用。笛卡尔积表简单理解就是两表相乘,下面的图片可以帮大家快速理解什么是笛卡尔积表。

​灰色的两张是原始表格 - “销售代表”和“月份”,我们希望得到绿色的结果,即每个销售代表都对应到“月份”里的1-12个月。绿色的表就是“销售代表”和“月份”两表相乘得到的笛卡尔积表。

笛卡尔积表比较常见的使用是在年初分配任务额的时候,当我们拿到全年的任务额,需要把任务额的数字分配到每个区域、部门、销售代表、产品和12个月时,首先需要有这样的一张表格才可以操作。

如果你不会SQL、Access等工具,在Excel里是比较难生成的,甚至需要手动粘贴出来(我们的例子只有2个销售代表是因为不希望截图时图片太长影响大家阅读,实际工作中可能有很多数据需要相乘,生成的笛卡尔积表可能会有上千甚至上万行。)。今天我们就看一下如何在Power BI中生成笛卡尔积表。

​在Power Pivot中生成笛卡尔积表需要使用Generate 函数。我们先把两张原始表格导入到Power Pivot模型中,然后书写公式如下:

​Generate需要的参数是2张表,我们分别选择2张原始表即可。但是生成的结果报错了,见下图。

​这是因为Generate生成的是一张表,我们无法在Power Pivot窗口的一个单元格里查看。要想看到这张表我们需要借助DAX查询语句(参考进阶篇课程2.1课时):

首先“现有连接 ”- “表格”中点击任一表格(截图选的是销售代表),把模型中的表导出到Excel中

​在表格中右键 - “表格” - “编辑DAX”

命令类型选择“DAX”,然后在表达式里输入

Evaluate

GENERATE('销售代表','月份')

​这样我们就成功的通过Power Pivot实现了笛卡尔积表的效果。当然,原始数据刷新的话生成的结果也是刷新的。

​在Power BI Desktop里生成笛卡尔积表也是要借助Generate函数,但是Power BI Desktop的好处是我们可以直接用它特有的功能“新表”。

我们把2张原始表格导入Power BI Desktop中,然后点击“建模”菜单下的“新表”并输入公式:笛卡尔积表 = GENERATE('销售代表','月份')

​Power BI Desktop的好处是新生成的表格我们直接可以在模型中见到,更容易使用

​不好的地方就是如果我们需要在其它地方使用这张表格的话要手工粘贴出去才可以。

下面我们来看一下如何在Power Query里实现笛卡尔积表。

​在Power Query里实现笛卡尔积表,我们需要借助于合并查询功能。

把两张原始表格导入“查询编辑器”中,并分别添加辅助列=1(1可以是其它任何数字或文本,只是为后面的匹配列做准备

​点击“合并查询”,并以两表中的“辅助列”作为匹配列。

​点击确定并在结果中把“月份”扩展出来

​由于匹配列都是相同的值(1),所以合并查询的结果就是我们要的笛卡尔积表。

Power Query的好处是可以将查询数据直接加载到表中,方便后续使用。

这就是我们今天分享的全部内容,大家可以根据需要选择对应的方法生成笛卡尔积表。文章中提到的知识点都可以在我们的视频课程中找到。


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”


​长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、Power Pivot相关文章、资讯。欢迎小伙伴儿们转发分享~

*PowerPivot工坊原创文章,欢迎转载,请注明出处



相关文章

  • 在Power BI中生成笛卡尔积表

    在我们进行数据分析或数据处理中,有时会需要生成笛卡尔积表作为辅助计算用。笛卡尔积表简单理解就是两表相乘,下面的图片...

  • Power Bi智能时间表函数

    Power Bi智能时间表函数 如何在Power Bi中根据业务时间构建时间表,主要有两种方案,考虑到方案的动态可...

  • 三、连接查询

    内连接 1、笛卡尔积 语法 无条件筛选 有条件筛选 什么是笛卡尔积?笛卡尔积就是将A和B表中的行任意组合,得到一个...

  • 巧用Power Query制作笛卡尔积表

    前两天课程结束后的时候,有一位学员咨询如何在Excel中生成两张表格相乘的新表格,这位学员需要生成的其实是笛卡尔积...

  • sql的执行顺序

    1. FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟...

  • MySql多表查询

    @[TOC] 1.准备表 2. 多表连接查询 交叉连接:不适用任何匹配条件。生成笛卡尔积mysql> select...

  • Power BI里日期表的参考写法

    Power BI里日期表的一种参考写法

  • 数据库概念

    快速定位核心表 核心表的数据往往是最大的 笛卡尔积和内外连接 内外连接的底层是从两表产生笛卡尔积临时表,内连接筛选...

  • 【HXE:1.1】Power BI + HANA? Yes!

    1. What is Power BI? 视频:【M$】What is Power BI? Power BI is...

  • 优雅的写双重循环

    用 itertools 的笛卡尔积 product 返回一个生成器,能 yield 出传入数组形成的笛卡尔积。pr...

网友评论

      本文标题:在Power BI中生成笛卡尔积表

      本文链接:https://www.haomeiwen.com/subject/vanduxtx.html