创建计算列
适用于:SQL Server 2019 及更高版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium
在本课中,将通过添加计算列在模型中创建数据。 在使用“获取数据”时,可以使用Power Query 编辑器或稍后在模型设计器中创建 (作为自定义列) 创建计算列,就像在本课程中所做的那样。 若要了解详细信息,请参阅计算列。
将在三个不同的表中创建五个新的计算列。 每个任务的执行步骤稍有不同,说明可通过多种方法创建列、对其进行重命名,以及将其放置在表中的各种位置。
还将在本课中首次使用数据分析表达式 (DAX)。 DAX 是一种特殊语言,用于为表格模型创建可高度自定义的公式表达式。 在本教程中,将使用 DAX 创建计算列、度量值和角色筛选器。 若要了解详细信息,请参阅表格模型中的 DAX。
学完本课的估计时间: 15 分钟
先决条件
本文是表格建模教程的一部分,应当按顺序完成。 在执行本课中的任务之前,应当已完成上一课:第 4 课:创建关系。
创建计算列
在 DimDate 表中创建 MonthCalendar 计算列
单击“ 扩展>模型>模型视图>数据视图”。
只能在数据视图中使用模型设计器创建计算列。
在模型设计器中,单击“DimDate”表(选项卡)。
右键单击“CalendarQuarter”列标题,并单击“插入列”。
一个名为“Calculated Column 1”的新列将插入到“Calendar Quarter”列的左侧。
在表上方的编辑栏中,键入以下 DAX 公式:自动完成有助于键入列和表的完全限定名称,并列出可用的函数。
=RIGHT(" " & FORMAT([MonthNumberOfYear],"#0"), 2) & " - " & [EnglishMonthName]
然后,会在计算列中为所有行填充值。 如果在表中向下滚动,可看到,根据每行中的数据,各行中的此列可能具有不同的值。
将此列重命名为“MonthCalendar”。
MonthCalendar 计算列提供月份的可排序名称。
在 DimDate 表中创建 DayOfWeek 计算列
在 DimDate 表仍然处于活动状态的情况下,单击“ 扩展>列>添加列”。
在公式栏中,键入以下公式:
=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”。
Margin 计算列用来分析每次销售的利润率。