Power Pivot 购物篮分析分组 GENERATE 之笛卡尔积、排列、组合

合集下载

power pivot 笛卡尔积

power pivot 笛卡尔积

power pivot 笛卡尔积Power Pivot是Microsoft Excel的一个强大数据分析工具,它可以帮助用户处理大量的数据,并提供了高级数据建模和分析功能。

其中之一是“笛卡尔积”,这是一种在Power Pivot中非常有用的操作。

笛卡尔积(Cartesian product)是指两个或多个数据集合之间的一种关系,通过将每个集合中的每个元素与其他集合中的所有元素组合而得到的结果集。

这个概念在Power Pivot中非常有用,因为它可以帮助用户进行多维数据分析,探索不同数据集之间的关联关系。

在Power Pivot中使用笛卡尔积可以通过以下步骤完成:1.进入Power Pivot窗口,在“数据”选项卡下选择“添加表”,然后依次选中要进行笛卡尔积操作的两个或多个表。

2.确保已经在每个表中设置了适当的关系,以便Power Pivot能够正确地识别这些表之间的连接。

3.在Power Pivot窗口的“字段列表”中,选择要在笛卡尔积结果中显示的字段。

4.在“计算列”或“测量值”选项卡中,选择要创建的计算列或测量值。

5.对于计算列,可以使用公式语言(DAX)编写表达式,以指定如何计算结果。

对于测量值,则可以使用聚合函数(如SUM、AVERAGE、COUNT等)来计算结果。

6.完成后,单击“保存并关闭”按钮,将数据导入到Excel中。

使用Power Pivot进行笛卡尔积操作的好处是可以轻松地探索和分析大量的数据,并找到其中的关联关系。

通过对数据集合之间的组合进行计算和分析,可以得到更深入的洞察,从而支持更好的决策和业务发展。

例如,假设一个电子商务公司想要分析销售数据,他们拥有两个数据表,一个包含顾客信息,另一个包含订单信息。

通过使用Power Pivot进行笛卡尔积操作,可以将这两个表组合在一起,创建一个包含顾客和订单信息的新表。

然后,可以使用Power Pivot的数据建模和分析工具对这个新表进行进一步的分析,比如计算每个顾客的总销售额、平均订单数量等。

pivot 函数

pivot 函数

pivot 函数Pivot 函数是数据库中非常常见的一种聚合函数,它可以根据某个字段把数据库中的数据“旋转”成若干行和若干列的数据表格,从而方便进行分析、比较等操作。

在实际的数据处理中,Pivot 函数可以大大简化数据分析的工作量,提高数据的效率和准确性。

一、Pivot 函数的基本原理在数据库中,Pivot 函数是一种聚合函数,它可以根据某个字段把数据库中的数据“旋转”成若干行和若干列的数据表格,从而方便进行分析、比较等操作。

具体来说,Pivot 函数的基本用法如下:SELECT PivotField, [FirstAggregatedField], [SecondAggregatedField], … FROM ( SELECT GroupByField, PivotField, AggregatedValue FROM [SourceTable] ) AS SourceTable PIVOT( AggregateFunction(AggregatedValue) FOR PivotedField IN ([FirstPivotValue], [SecondPivotValue], …) ) AS PivotTable其中,PivotField 表示需要进行转换的字段,FirstAggregatedField、SecondAggregatedField 等表示需要聚合的数据,AggregateFunction 表示聚合函数(可以是 Count、Sum、Avg、Max、Min 等),PivotedField 表示需要把 PivotField 转换成哪些列进行分析,FirstPivotValue、SecondPivotValue 等表示转换后表格的列名。

举个例子来说,假设我们有一个 Customers 表格存储了客户信息,包括客户 ID、姓名、订单日期和订单总金额,现在我们想要统计每个客户每月的订单总金额,那么可以用以下 SQL 语句来实现:SELECT CustomerID, [Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec] FROM ( SELECT CustomerID, DATENAME(month, OrderDate) AS OrderMonth, SUM(Amount) AS OrderTotal FROM Customers GROUP BY CustomerID, DATENAME(month, OrderDate) ) AS SourceTable PIVOT ( SUM(OrderTotal) FOR OrderMonth IN ( [Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec] ) ) AS PivotTable这个 SQL 查询会把 Customers 表格中的数据旋转成一个 13 列的数据表格,其中第一列是客户 ID,后面 12 列分别是每个月的订单总金额,可以更方便地进行分析和比较。

power pivot summarize函数

power pivot summarize函数

power pivot summarize函数Power Pivot Summarize函数是一种强大的函数,可以帮助用户在Excel中处理大量数据。

本文将分步骤介绍Power Pivot Summarize 函数的使用方法。

第一步:创建数据表在Excel中,我们需要创建一个数据表,将数据输入到表格中。

在数据表中,我们需要列出各列的列名,这样可以更方便地处理数据。

第二步:启用Power Pivot在Excel菜单栏中,点击"文件"选项卡,在弹出的菜单中找到"选项",再在弹出的"Excel选项"窗口中找到"加载项"。

在其中,找到Power Pivot COM插件,并勾选上该插件。

再点击确定按钮,即可启用Power Pivot。

第三步:建立数据模型在数据表中,我们需要将表格数据导入Power Pivot中,然后建立一个数据模型。

数据模型是指将所有数据存在一个逻辑上的关系之中,我们可以通过"数据"选项卡中的"从源"按钮将数据导入PowerPivot中。

在"创建关系"中,我们需要将各列间的关系建立起来,以方便后续的处理。

第四步:使用Summarize函数在Power Pivot中,我们可以使用Summarize函数来对数据进行分组和求和处理。

Summarize函数的语法如下:SUMMARIZE(table,group_by_columns,[name],aggregate_expres sion)其中,table为数据源表格,group_by_columns为需要进行分组的列,[name]为新的序列名称,aggregate_expression为需要对数据进行求和的表达式。

例如,在Power Pivot中,我们可以对每个类别进行求和,使用以下代码:SUMMARIZE('Sales','Sales'[Category],"TotalSales",SUM('Sales'[Sales]))其中,'Sales'为数据源表格,在'Sales'[Category]列进行分组,在新的列"Total Sales"中显示对'Sales'[Sales]列的求和结果。

power pivot calculate函数

power pivot calculate函数

power pivot calculate函数Power Pivot 是 Microsoft Excel的一个强大的数据建模和分析工具,它提供了多种函数来帮助用户进行数据计算和处理。

其中最常用的一个就是 Calculate 函数。

本文将围绕这个函数进行详细阐述。

Calculate 函数的主要作用是对数据进行一个或多个计算操作,包括求和、平均数、计数等。

它还可以根据特定的条件来筛选数据。

在使用 Calculate 函数之前,需要了解以下几个概念:1. 过滤器:过滤器是一种条件,用于限制计算的数据范围。

在Power Pivot 中,可以使用行过滤器、列过滤器或者页过滤器来设置数据过滤条件。

2. 过滤上下文:过滤上下文是指 Calculate 函数的计算范围。

如果不指定任何过滤器,那么 Calculate 函数将默认使用全局上下文。

下面我们将带领大家逐步学习如何使用 Calculate 函数。

1. 基本语法Calculate 函数的基本语法如下:=CALCULATE(<表达式>, [过滤器1], [过滤器2], ...)其中,<表达式>表示需要求值的公式或者函数;[过滤器1]、[过滤器2]等则是用来限制数据范围的条件。

2. 计算总和我们可以用 Calculate 函数来计算某个字段的总和,例如:=CALCULATE(SUM(Sales[Amount]))这个公式的意思是,计算 Sales 表中 Amount 字段的总和。

3. 计算平均数如果我们想要计算 Sales 表中 Amount 字段的平均数,可以这样写:=CALCULATE(AVERAGE(Sales[Amount]))4. 使用过滤器如果我们想要在特定的条件下计算数据,可以使用过滤器。

例如,我们想要计算某个客户的总销售额,可以这样写:=CALCULATE(SUM(Sales[Amount]), Sales[Customer]="Customer A")这个公式的意思是,在 Sales 表中,只计算客户名为 CustomerA 的销售总额。

PowerQuery技巧之Table.Pivot

PowerQuery技巧之Table.Pivot

PowerQuery技巧之Table.PivotTable.Pivot官方说明:给定一对表示属性-值对的列,将属性列中的数据旋转为列标题。

Table.Pivot( table as table, pivotValues as list, attributeColumn as text, valueColumn as text, optional aggregationFunctionas nullable function) as table解读:相信很多同学是被Power Query的透视列与逆透视功能惊艳到从而喜欢上Power Query的,今天就来扒一扒她的衣服。

源表如下,姓名与科目组合项无重复。

语法咱就不说了,反正英语你也头痛,动下鼠标就开讲吧!从源表转换成上图的二维表对于M语句写来就显得很潇洒:= Table.Pivot(源,List.Distinct(源[科目]),"科目","分数")第二参数:第一参数就是要透视的表,这个不多说,我想在这里和大家探讨的就是后面几个参数。

先拆解下参数吧,看第二参数产生一个需要放到列区域的不重复字段序列,= Table.Pivot(源,{"语文","数学","英语","扯淡"},"科目","分数")显然改成这样是没毛病的,有啥意义呢?写成下面又怎样呢?= Table.Pivot(源,{"扯淡","数学","英语","语文"},"科目","分数")这样呢?= Table.Pivot(源,{"扯淡","数学","英语"},"科目","分数")起到了字段顺序限定和字段选择输出的效果。

powerquery 笛卡尔积 两列数据合并 -回复

powerquery 笛卡尔积 两列数据合并 -回复

powerquery 笛卡尔积两列数据合并-回复如何使用Power Query在Excel中进行笛卡尔积和合并两列数据。

Power Query是一种用于数据处理和转换的强大工具,它可以帮助我们在Excel中更容易地处理和分析数据。

在本文中,我们将介绍如何使用Power Query对两列数据进行笛卡尔积并将结果合并为一列。

请注意,在进行这个操作之前,您需要确保已安装Power Query插件,并打开包含您要处理的数据的Excel工作簿。

第一步:打开Power Query编辑器在Excel中,单击“数据”选项卡上的“从表格/范围”按钮。

这将打开Power Query编辑器,您可以通过该编辑器对数据进行转换和处理。

第二步:导入数据在Power Query编辑器中,选择包含您要处理的数据的工作表或范围,并单击“加载”按钮。

这将将数据加载到Power Query编辑器中,您可以在此基础上进行进一步的操作。

第三步:创建笛卡尔积在Power Query编辑器中,单击“添加列”选项卡上的“自定义列”按钮。

您还可以通过选择“转换”选项卡中的“自定义列”来访问此功能。

在“自定义列”对话框中,输入任意一个列的名称,比如“笛卡尔积”。

然后,在“自定义列公式”文本框中输入以下公式:= Table.AddColumn(#"Previous Step", "笛卡尔积", eachTable.FromColumns({{[列名1]}}, {{[列名2]}}))请注意,[列名1]和[列名2]是您要进行笛卡尔积的两列的名称。

例如,如果您要处理的两列分别是“A列”和“B列”,则公式将是:= Table.AddColumn(#"Previous Step", "笛卡尔积", eachTable.FromColumns({{[A列]}}, {{[B列]}}))单击“OK”按钮应用公式并创建新的笛卡尔积列。

如何使用PivotTable进行数据汇总和分析

如何使用PivotTable进行数据汇总和分析

如何使用PivotTable进行数据汇总和分析PivotTable是Microsoft Excel中一种强大的数据分析工具,它可以帮助用户对大量数据进行汇总和分析。

本文将介绍如何使用PivotTable 来实现数据的汇总和分析,并提供一些实用的技巧和建议。

一、创建PivotTable要创建PivotTable,首先需要准备好待分析的数据。

在Excel中,选择包含数据的区域,然后点击“插入”选项卡中的“PivotTable”按钮。

接下来,选择所需的数据源范围,并选择PivotTable的位置(可以是新的工作表或现有的工作表)。

点击“确定”后,一个空的PivotTable将被创建。

二、设置行、列和值在PivotTable中,数据可以根据不同的要素进行分类和分组。

要设置行、列和值,只需将字段拖动到相应的区域即可。

例如,如果要根据产品分类和销售地区对销售额进行汇总和分析,可以将“产品分类”字段拖动到“行”区域,“销售地区”字段拖动到“列”区域,“销售额”字段拖动到“值”区域。

三、使用汇总和过滤器PivotTable还提供了汇总和过滤器功能,使用户可以根据需要对数据进行汇总和筛选。

通过右键单击PivotTable中的任意单元格,可以弹出设置汇总方式(如求和、平均值、计数等)和应用过滤器的选项。

四、创建计算字段在某些情况下,PivotTable中的默认字段不能满足需求。

这时可以使用计算字段来创建自定义的分析指标。

在“数据”选项卡中,点击“计算字段”按钮,然后输入计算字段的名称和公式。

例如,可以创建一个名为“利润率”的计算字段,公式为“利润/销售额”,以计算每个产品分类的利润率。

五、使用数据透视图除了基本的PivotTable功能外,Excel还提供了数据透视图功能,可以更加灵活地进行数据汇总和分析。

数据透视图可以根据需要选择和排列字段,并实时更新汇总数据。

要使用数据透视图,选择PivotTable 并点击“插入”选项卡中的“数据透视图”按钮,然后根据提示进行设置。

Excel2016数据处理与分析 第14章 Power Query和Power Pivot的简单应用

Excel2016数据处理与分析 第14章 Power Query和Power Pivot的简单应用
EXCEL
数据分析与处理
第十三章
目录
CONTENTS
01 Power Query 02 Power Pivot
14.1 Power Query
概述
Power BI是一套强大的商业智能分析及数据可视化工具,能快速地将复杂 的原始数据组织成直观有效的数据图表,使用户能根据图表展示出的数据 逻辑及趋势进行判断和决策。 Power Query和Power Pivot是Power BI 内ot
DAX语言基础
DAX语言和Excel工作表函数十分相似,主要区别在于DAX语言中不使用类似于A1、D2等 单元格地址,这是由于在Power Pivot中并不存在单元格的概念,在DAX语言中常用表名 和列名指定数据坐标,其中表名可以用单引号括起来,当表名不存在特殊字符时,单引号 也可以省略,而列名必须括在中括号内。例如“'表1'[列名]”。 计值上下文通常分为筛选上下文和行上下文两个种类。筛选上下文是由表格的行、列、切 片器和筛选器所定义的上下文;行上下文通常仅包含Power Pivot表中的单一行。
14.2 Power Pivot
分类非重复值计数
14.2 Power Pivot
创建简单的关系型数据模型
在Excel数据模型中,“关系”是指表和表之间的联系, “关系”的定义如下: 源表:关系始于源表,例如本例中的“奖金”表。 外键列:源表中的列,包含需要搜索的值,例如本例中“奖金”表的姓名列。 相关表:包含需要检索值的表,例如本例中的“员工信息”表。 相关列:相关表中的列,包含与外键列对应的值,例如本例中“员工信息”表的姓名列。
14.1 Power Query
二维表转换为一维表
14.1 Power Query
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

昨天在看论坛帖子时候,看到一个关于SKU 组合的问题,有很多M 大佬都给出了处理方案,于是想用dax 也写一个。

注:
原贴有dax 的写法,这里主要说明下GENERATE 之笛卡尔积、排列、组合处理过程。

上效果图
左起依次表名:data 、笛卡尔积、排列、组合
1、大前提是使我们要使用data 的数据做购物篮分析分组;
2、在问题1已的基础上,笛卡尔积表(5*5)存在类似黄色区域问题,SKU 两两相同,这是不需要看到的;
3、在问题1的基础上,排列表(见图中公式)存在类似绿色区域的问题,SKU1对SKU2和SKU2对SKU1其实是一样的,这也是我们不需要看到的;
4、基于以上,我们通过笛卡尔积-排列-组合这样 处理下来得到我们要的购物篮分组。

1、笛卡尔积
Power Pivot 购物篮分析分组 GENERATE 之笛卡尔积、
排列、组合
1、背景
2、问题
3、上DAX
DEFINE
VAR T1 =
SELECTCOLUMNS ( data, "SKUA", data[SKU] )
VAR T2 =
SELECTCOLUMNS ( data, "SKUB", data[SKU] )
VAR T3 =
GENERATE ( T1, T2 )
EVALUATE
T3
ORDER BY
[SKUA],
[SKUB] ASC
2、排列
DEFINE
VAR T1 =
SELECTCOLUMNS ( data, "SKUA", data[SKU] )
VAR T2 =
SELECTCOLUMNS ( data, "SKUB", data[SKU] )
VAR T3 =
GENERATE ( T1, T2 )
VAR T4 =
FILTER ( T3, [SKUA] <> [SKUB] )
EVALUATE
T4
ORDER BY
[SKUA],
[SKUB] ASC
3、组合
DEFINE
VAR T1 =
SELECTCOLUMNS ( data, "SKUA", data[SKU] )
VAR T2 =
SELECTCOLUMNS ( data, "SKUB", data[SKU] )
VAR T3 =
GENERATE ( T1, T2 )
VAR T4 =
FILTER ( T3, [SKUA] <> [SKUB] )
VAR T5 =
DISTINCT (
SELECTCOLUMNS (
ADDCOLUMNS (
T4,
"AB", IF ( [SKUA] < [SKUB], [SKUA] & [SKUB], [SKUB] & [SKUA] )
),
"AB", [AB]
)
)
VAR T6 =
FILTER ( ADDCOLUMNS ( T4, "AB", [SKUA] & [SKUB] ), [AB] IN T5 )
VAR T7 =
SUMMARIZE ( T6, [SKUA], [SKUB] )
EVALUATE
T7
ORDER BY
[SKUA],
[SKUB] ASC
4、总结
1、以上问题基于购物篮分析产生,所以需要组合结果;
2、在实际需求中肯定这三种都是有需求的;
3、处理GENERATE,两列名称不能相同,于是有了上述的GENERATE ( T1, T2 ),而不是GENERATE ( T1, T1);
4、处理从排列到组合的思路主要是利用两两组合排序后去重即可,分步体会从T1-T7的过程。

by 焦棚子。

相关文档
最新文档