返回列表 发帖

创建计算列

适用于:SQL Server 2019 及更高版本 Analysis Services  Azure Analysis Services  Power BI Premium

在本课中,将通过添加计算列在模型中创建数据。 使用 Get Data 时,可以使用 Power Query 编辑器 或更高版本在模型设计器中创建计算列 (作为自定义列) ,就像在本课中那样。 若要了解详细信息,请参阅计算列。

将在三个不同的表中创建五个新的计算列。 每个任务的执行步骤稍有不同,说明可通过多种方法创建列、对其进行重命名,以及将其放置在表中的各种位置。

还将在本课中首次使用数据分析表达式 (DAX)。 DAX 是一种特殊语言,用于为表格模型创建可高度自定义的公式表达式。 在本教程中,将使用 DAX 创建计算列、度量值和角色筛选器。 若要了解详细信息,请参阅表格模型中的 DAX。

学完本课的估计时间: 15 分钟

先决条件
本文是表格建模教程的一部分,应当按顺序完成。 在执行本课中的任务之前,应当已完成上一课:第 4 课:创建关系。

创建计算列
在 DimDate 表中创建 MonthCalendar 计算列
单击 ExtensionsModelModel>>ViewData>视图。

只能在数据视图中使用模型设计器创建计算列。

在模型设计器中,单击“DimDate”表(选项卡)。

右键单击“CalendarQuarter”列标题,并单击“插入列”。

一个名为“Calculated Column 1”的新列将插入到“Calendar Quarter”列的左侧。

在表上方的编辑栏中,键入以下 DAX 公式:自动完成有助于键入列和表的完全限定名称,并列出可用的函数。


复制
=RIGHT(" " & FORMAT([MonthNumberOfYear],"#0"), 2) & " - " & [EnglishMonthName]  
然后,会在计算列中为所有行填充值。 如果在表中向下滚动,可看到,根据每行中的数据,各行中的此列可能具有不同的值。

将此列重命名为“MonthCalendar”。

Screenshot of the model designer with the column renamed to MonthCalendar.

MonthCalendar 计算列提供月份的可排序名称。

在 DimDate 表中创建 DayOfWeek 计算列
当 DimDate 表仍然处于活动状态时,单击 ExtensionsColumnAdd>>列。

在公式栏中,键入以下公式:


复制
=RIGHT(" " & FORMAT([DayNumberOfWeek],"#0"), 2) & " - " & [EnglishDayNameOfWeek]  
完成公式构建后,按 ENTER。 新列将添加到表的最右侧。

将此列重命名为“DayOfWeek”。

单击列标题,然后将该列拖动到 EnglishDayNameOfWeek 列和 DayNumberOfMonth 列之间。

提示

移动表中的列可使表变得更易于浏览。

DayOfWeek 计算列提供周几的可排序名称。

在 DimProduct 表中创建 ProductSubcategoryName 计算列
在“DimProduct”表中,滚动到表的最右侧。 请注意,最右侧的列名为 “添加列”,单击列标题使其处于活动状态。

在公式栏中,键入以下公式:


复制
=RELATED('DimProductSubcategory'[EnglishProductSubcategoryName])  
将该列重命名为“ProductSubcategoryName”。

ProductSubcategoryName 计算列用于在 DimProduct 表中创建层次结构,该层次结构将包括 DimProductSubcategory 表的 EnglishProductSubcategoryName 列中的数据。 层次结构不能跨多个表。 稍后将在第 9 课中创建层次结构。

在 DimProduct 表中创建 ProductCategoryName 计算列
如果 DimProduct 表仍然处于活动状态,请添加新列。

在公式栏中,键入以下公式:


复制
=RELATED('DimProductCategory'[EnglishProductCategoryName])
将该列重命名为“ProductCategoryName”。

ProductCategoryName 计算列用于在 DimProduct 表中创建层次结构,该层次结构包括 DimProductCategory 表的 EnglishProductCategoryName 列中的数据。 层次结构不能跨多个表。

在 FactInternetSales 表中创建 Margin 计算列
在模型设计器中,选择“FactInternetSales”表。

在“SalesAmount”列与“TaxAmt”列之间创建一个新的计算列。

在公式栏中,键入以下公式:


复制
=[SalesAmount]-[TotalProductCost]
将此列重命名为“Margin”。

Screenshot of the model designer with the Margin column called out.

返回列表