表构造
在Power BI中,构造表的方式非常多样,每一种方式都有其特定的应用场景和步骤。
-
从外部数据源导入数据创建表
-
步骤:
- 打开Power BI Desktop,点击左侧“获取数据”按钮。
- 在弹出的对话框中选择数据源类型(如Excel、CSV、SQL Server等)。
- 连接到数据源后,选择需要导入的表或数据。
- 点击“加载”或“编辑查询”后加载数据到Power BI数据模型中。
原理:
Power BI Desktop通过连接器与各种数据源进行通信,将外部数据加载到数据模型中,形成可分析的数据表。举例:
假设有一个Excel文件包含销售数据,通过“获取数据”选择Excel数据源,然后选择该Excel文件中的销售数据表,即可将其导入到Power BI中进行分析。
-
-
使用DAX查询创建计算表
-
步骤:
- 在Power BI Desktop的“字段”窗格中,右键点击“新建表”。
- 在打开的DAX编辑器中输入计算表的DAX公式。
- 点击“确定”或“完成”创建计算表。
原理:
DAX(Data Analysis Expressions)是Power BI中用于定义计算列、计算表和度量值的公式语言。通过DAX公式,用户可以根据已加载到数据模型中的数据创建新的表。举例:
假设有一个包含销售数据的表,想要创建一个只包含总销售额超过100万的客户的新表。可以使用DAX中的FILTER
和SUMMARIZE
函数创建一个新的计算表,该表只包含满足条件的客户。
-
- 在DAX中创建计算表时,有多种函数和方法可供选择。以下是使用DAX创建计算表的一些常用函数和步骤,按照清晰的结构进行分点和归纳:
1. 使用EVALUATE函数
- 原理:EVALUATE函数用于创建一个基于DAX表达式的表格,并返回该表格的计算结果。
- 步骤:
- 确定要计算的表达式。
- 使用EVALUATE函数包裹该表达式。
- 在Power BI的DAX编辑器中输入并运行该公式。
2. 使用ROW函数
- 原理:ROW函数用于创建包含指定列值的表格。它可以用于指定行的数量、排序和筛选条件。
- 步骤:
- 确定要包含在表格中的列及其值。
- 使用ROW函数,并指定列名和对应的值。
- 在DAX编辑器中编写并运行公式。
3. 使用VALUES函数
- 原理:VALUES函数返回指定列中所有唯一值的表格。
- 步骤:
- 选择要提取唯一值的列。
- 使用VALUES函数并指定该列。
- 在DAX编辑器中编写并运行公式。
4. 使用CROSSJOIN函数
- 原理:CROSSJOIN函数返回两个或多个表格之间的笛卡尔积,即所有可能的组合。
- 步骤:
- 确定要组合的两个或多个表格。
- 使用CROSSJOIN函数,并指定这些表格。
- 编写并运行DAX公式,获取组合后的新表格。
5. 使用SUMMARIZE函数
- 原理:SUMMARIZE函数根据指定的列对表格进行分组,并生成一个包含聚合计算结果的表格。
- 步骤:
- 确定要分组的列和要聚合的列。
- 使用SUMMARIZE函数,并指定分组列和聚合列及其聚合函数(如SUM、AVERAGE等)。
- 在DAX编辑器中编写并运行公式。
6. 使用UNION函数
- 原理:UNION函数用于将两个或多个具有相同结构的表格合并成一个表格。
- 步骤:
- 确保要合并的表格具有相同的列结构和数据类型。
- 使用UNION函数,并指定这些表格。
- 编写并运行DAX公式,获取合并后的新表格。
7. 使用DATATABLE函数
- 原理:DATATABLE函数用于创建具有指定列和行的新表格。
- 步骤:
- 确定新表格的列名、数据类型和初始值。
- 使用DATATABLE函数,并指定这些信息。
- 编写并运行DAX公式,创建新表格。
8. 使用其他DAX函数和表达式
- 除了上述函数外,还可以结合其他DAX函数和表达式来创建更复杂的计算表。例如,可以使用CALCULATE、FILTER等函数来添加额外的筛选和计算逻辑。
- 当使用DAX来创建计算表时,
CALCULATE
和FILTER
函数是非常有用的,因为它们允许你添加复杂的筛选和计算逻辑。以下是如何使用这些函数来构造计算表的示例:使用
CALCULATE
函数CALCULATE
函数允许你改变上下文中的筛选条件,从而改变聚合函数(如SUM
、AVERAGE
等)的行为。- 示例:假设你有一个名为
Sales
的表,其中包含Region
、Product
和SalesAmount
列。你想要计算除北美以外所有区域的销售额总和。
Non_North_America_Sales =
CALCULATE(
SUM(Sales[SalesAmount]),
FILTER(Sales, Sales[Region] <> "North America")
)
- 但是,请注意,上面的公式实际上返回的是一个单一的聚合值,而不是一个表。为了返回一个表,你可以结合使用
SUMMARIZE
和CALCULATE
。- 示例:按产品计算除北美以外所有区域的销售额。
Non_North_America_Sales_By_Product =
SUMMARIZE(
FILTER(Sales, Sales[Region] <> "North America"),
Sales[Product],
"Total Sales", CALCULATE(SUM(Sales[SalesAmount]), Sales[Region] <> "North America")
)
使用
FILTER
函数FILTER
函数用于根据指定的条件筛选表中的行。它返回一个表,其中包含满足条件的行。- 示例:假设你只想查看销售额超过1000的产品。
High_Sales_Products =
FILTER(
Sales,
Sales[SalesAmount] > 1000
)
- 但是,这同样只返回了一个筛选后的表,而不是一个带有聚合的表。你可以再次结合
SUMMARIZE
或其他DAX函数来使用。结合使用
CALCULATE
和FILTER
- 通常,你会将
CALCULATE
和FILTER
结合使用,以便在更复杂的上下文中进行聚合和筛选。- 示例:按产品计算每个区域中销售额超过1000的产品的总销售额。
Sales_Over_1000_By_Region_Product =
SUMMARIZE(
FILTER(Sales, Sales[SalesAmount] > 1000),
Sales[Region],
Sales[Product],
"Total Sales", SUM(Sales[SalesAmount])
)
- 在这个例子中,我们首先使用
FILTER
函数筛选出销售额超过1000的行,然后使用SUMMARIZE
函数按区域和产品对这些行进行分组,并计算每个组的总销售额。
- 注意:在创建计算表时,请确保公式正确无误,并且与你的数据源和模型结构相匹配。此外,考虑到计算表可能会增加模型的复杂性和计算负担,因此请谨慎使用,并根据需要进行优化。
-
通过新建列、新建表等方式在数据模型中创建分析数据
-
步骤:
- 在Power BI Desktop的“字段”窗格中,选择现有的数据表。
- 在数据表视图或数据模型视图中,右键点击选择“新建列”或“新建表”。
- 在弹出的对话框或DAX编辑器中输入相应的公式或数据。
原理:
在数据模型中直接创建新的列或表,可以基于现有数据进行扩展或转换,以满足特定的分析需求。举例:
假设有一个包含销售日期的表,但日期是以“YYYYMMDD”格式存储的。可以通过在该表上新建一列,并使用DAX中的DATE
函数将字符串转换为真正的日期类型,以便于后续的日期分析和可视化。
-
-
利用数据建模功能创建关系
-
步骤:
- 在Power BI Desktop的“模型”视图中,查看已加载的数据表。
- 拖动一个表中的字段到另一个表中的相关字段上,以创建关系。
- 也可以点击“管理关系”按钮,在弹出的对话框中手动创建或编辑关系。
原理:
在Power BI中,各个表之间需要建立关系以形成完整的数据模型。关系定义了表之间的连接方式和数据流动方向,使得在进行分析时可以跨表引用数据。举例:
假设有一个销售表和一个产品表,它们之间通过产品ID字段关联。可以在“模型”视图中将销售表中的“产品ID”字段拖动到产品表中的“产品ID”字段上,以创建它们之间的关系。这样,在分析销售数据时就可以引用产品表中的产品名称、价格等信息了。
-
-
使用计算列和计算组
计算列
步骤:
- 在Power BI Desktop中,打开你的数据模型,并选择你想要添加计算列的表。
- 在表的视图中,点击“添加自定义列”按钮(通常位于表的顶部或底部)。
- 在打开的DAX公式栏中,输入你的DAX公式来定义新列的值。
- 点击“Enter”键或点击公式栏旁边的“√”图标来确认并创建新的计算列。
原理:
计算列是基于DAX(Data Analysis Expressions)公式在现有数据表中创建的新列。这些列的值是动态计算的,并随着基础数据的变化而更新。计算列提供了一种扩展数据模型的方式,使得你可以在现有数据的基础上创建新的维度或度量值。
举例:
假设你有一个包含销售数据的表,其中有一个“销售额”列和一个“折扣率”列。你可以创建一个计算列来显示“实际销售额”,即“销售额”减去折扣后的金额。在DAX公式栏中,你可以输入如下公式来定义这个计算列:实际销售额 = [销售额] * (1 - [折扣率])
。
计算组
说明:
虽然Power BI本身并没有直接命名为“计算组”的功能,但你可能指的是一种概念上的集合,即将多个相关的计算列和度量值组合在一起,以便在报表或数据模型中更容易地引用和管理它们。在Power BI中,你可以通过创建文件夹或使用分组功能来组织和管理这些计算列和度量值。
步骤(以创建文件夹为例):
- 在Power BI Desktop的“字段”窗格中,右键点击你想要添加文件夹的位置。
- 选择“新建文件夹”来创建一个新的文件夹。
- 将相关的计算列和度量值拖动到该文件夹中。
原理:
通过创建文件夹或使用分组功能,你可以将数据模型中的计算列和度量值组织成更有逻辑和层次的结构。这使得在创建报表或进行数据分析时更容易找到和引用这些计算列和度量值。
-
使用复合模型和用户定义的聚合
复合模型
步骤:
- 在Power BI Desktop中,通过“获取数据”功能导入你的主要数据源。
- 导入其他数据源作为相关表或模型的一部分。
- 在“关系”视图中,创建或管理表之间的关系,确保数据能够正确地跨多个数据源流动。
原理:
复合模型允许你在Power BI中整合来自不同数据源的数据。这些数据源可以是不同的数据库、文件或其他类型的数据存储。通过创建关系,你可以将来自不同数据源的数据表连接在一起,形成一个统一的数据模型。这使得你可以在单个Power BI报表中分析来自多个数据源的数据。
举例:
假设你有两个数据源:一个是销售数据库,包含销售数据;另一个是库存数据库,包含库存信息。你可以使用复合模型将这两个数据源整合在一起,并通过创建关系来连接销售表和库存表。这样,你就可以在同一个报表中分析销售数据和库存数据了。
用户定义的聚合
说明:
在Power BI中,虽然没有直接命名为“用户定义的聚合”的功能,但你可以通过创建自定义的度量值来实现类似的功能。度量值是基于DAX公式定义的,可以用于对数据进行聚合和计算。
步骤:
- 在Power BI Desktop的“字段”窗格中,选择你想要添加度量值的表或模型。
- 点击“新建度量值”按钮(通常位于表的顶部或底部)。
- 在打开的DAX公式栏中,输入你的DAX公式来定义度量值。
- 点击“Enter”键或点击公式栏旁边的“√”图标来确认并创建新的度量值。
原理:
通过创建自定义的度量值,你可以定义自己的聚合函数和计算逻辑。这些度量值可以基于单个表的数据,也可以跨多个表进行计算。它们提供了一种灵活的方式来满足特定的分析需求,并可以根据你的业务逻辑进行定制。