前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power Query和Power Pivot中如何实现卡迪尔积?

Power Query和Power Pivot中如何实现卡迪尔积?

作者头像
逍遥之
发布2020-03-24 15:30:17
1.5K0
发布2020-03-24 15:30:17
举报
文章被收录于专栏:数据技巧数据技巧

(一) 什么叫卡迪尔积?

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。简单来说就是2组数据互相交集。

(二) 示例

例如一组字符a,b,c和另外一组数字4,5,6要求实现卡迪尔积组合。

两组数据任意的值都会和另外一组值进行相交组合。

(三) Power Pivot中的实现方法。

在Power Pivot中会有一个自带实现卡迪尔积方法的函数Generate

通过链接回表的方式就可以实现数据的加载。

(四) Power Query中实现的方式。

同样的在Power Query里面也有一个和Power Pivot中的Generate函数一样功能的函数List.Generate。

代码语言:javascript
复制
let源 = Table.FromColumns({{"a".."c"},{1..3}}),数据=[A=源[Column1],B=源[Column2]],数量 = [A数量=List.Count(数据[A]), B数量 = List.Count(数据[B])],第1列结果 = List.Generate( () => 0,                           each _ < 数量[A数量] * 数量[B数量],                           each _ + 1,                           each 数据[A]{ Number.IntegerDivide(_, 数量[B数量]) }                          ),第2列结果 = List.Repeat( 数据[B], 数量[A数量]),结果=Table.FromColumns({第1列结果,第2列结果})in结果

解释:我们主要讲解第1列的结果公式

  • 因为是要生成卡迪尔积,所以数据总量应该是2组数据的相乘。所以在第2参数代表循环结束的时候使用的是相乘的数据作为循环次数条件;
  • 第3参数是代表每次循环后,记录循环次数,之前的循环次数+1;
  • 第4参数相当于A列根据B列的数量生成重复值进行排列。

(五) 使用数据透视表

我们可以直接使用数据透视表使用列的方式直接使用即可生成。

当然这里你还需要重复报表布局中选中重复所有项目标签以及表格形式显示。

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (二) 示例
  • (三) Power Pivot中的实现方法。
  • (四) Power Query中实现的方式。
  • (五) 使用数据透视表
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档