创建度量值

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

在本课中,将创建要在模型中包括的度量值。 与所创建的计算列类似,度量值是使用 DAX 公式创建的计算。 但与计算列不同,度量值基于用户所选筛选器进行计算。 例如,添加到数据透视表中“行标签”字段的特定一列或切片器。 然后,所应用的度量值将计算筛选器中每个单元格的值。 度量值是强大而灵活的计算,在几乎所有表格模型中都希望包括这类计算来对数值数据执行动态计算。 若要了解详细信息,请参阅度量值

若要创建度量值,需要使用度量值网格。 默认情况下,每个表都有一个空的度量值网格;不过,通常不会为每个表都创建度量值。 在数据视图中时,度量值网格显示在模型设计器中的表下方。 若要隐藏或显示表的度量值网格,请单击“表” 菜单,然后单击“显示度量值网格”

可以通过以下方式创建度量值:单击度量值网格中的某个空单元格,然后在公式栏中键入一个 DAX 公式。 当单击 Enter 以完成公式时,度量值就显示在单元格中。 还可以通过以下方式使用标准聚合函数创建度量值:单击某个列,然后单击工具栏上的“自动求和”按钮 ()。 使用“自动求和”功能创建的度量值显示在该列正下方的度量值网格单元格中,但可以移动。

在本课中,通过在公式栏中输入 DAX 公式和使用“自动求和”功能这两种方式创建度量值。

完成本课程的估计时间: 30 分钟

先决条件

本文是表格建模教程的一部分,应当按顺序完成。 在执行本课中的任务之前,应当已完成上一课:第 5 课:创建计算列

创建度量值

在 DimDate 表中创建 DaysCurrentQuarterToDate 度量值

  1. 在模型设计器中,单击“DimDate”表。

  2. 在度量值网格中,单击左上角的空单元格。

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

    DaysCurrentQuarterToDate:=COUNTROWS( DATESQTD( 'DimDate'[Date])) 
    

    与计算列不同,使用度量值公式时,可以键入度量值名称,然后键入一个冒号,再键入公式表达式。

    请注意,左上角的单元格现在包含度量值名称 DaysCurrentQuarterToDate,后跟结果。 此时的结果不相关,因为尚未应用用户筛选器。

    显示“当前季度至今天数:92”的模型设计器的屏幕截图。

在 DimDate 表中创建 DaysInCurrentQuarter 度量值

  1. “DimDate”表仍然在模型设计器中处于活动状态时,在度量值网格中,单击创建的度量值下方的空单元格。

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

    DaysInCurrentQuarter:=COUNTROWS( DATESBETWEEN( 'DimDate'[Date], STARTOFQUARTER( LASTDATE('DimDate'[Date])), ENDOFQUARTER('DimDate'[Date])))
    

    在一个不完整期间与上一个周期之间创建比较比率时,公式必须计算已用期间的比例,并将其与上一周期中的相同比例进行比较。 在本例中,[DaysCurrentQuarterToDate]/[DaysInCurrentQuarter] 给出了当前期间中已过去时间的比例。

在 FactInternetSales 表中创建 InternetDistinctCountSalesOrder 度量值

  1. 单击“FactInternetSales”表。

  2. 单击“SalesOrderNumber”列标题。

  3. 在工具栏上,单击“自动求和”() 按钮旁边的向下箭头,然后选择“DistinctCount”

    “自动求和”功能会自动使用 DistinctCount 标准聚合公式为所选的列创建一个度量值。

    模型设计器的屏幕截图,其中调出了 Distinct Count Sales Order Number:27659。

  4. 在度量值网格中,单击新的度量值,然后在“属性”窗口中,在“度量值名称”中将度量值重命名为“InternetDistinctCountSalesOrder”。

在 FactInternetSales 表中创建其他度量值

  1. 使用“自动求和”功能创建并命名以下度量值:

    度量值名称 自动求和 (∑) Formula
    SalesOrderLineNumber InternetOrderLinesCount 计数 =COUNTA([SalesOrderLineNumber])
    OrderQuantity InternetTotalUnits Sum =SUM([OrderQuantity])
    DiscountAmount InternetTotalDiscountAmount Sum =SUM([DiscountAmount])
    TotalProductCost InternetTotalProductCost Sum =SUM([TotalProductCost])
    SalesAmount InternetTotalSales Sum =SUM([SalesAmount])
    Margin InternetTotalMargin Sum =SUM([Margin])
    TaxAmt InternetTotalTaxAmt Sum =SUM([TaxAmt])
    Freight InternetTotalFreight Sum =SUM([Freight])
  2. 单击度量值网格中的空单元格,并使用编辑栏按顺序创建以下自定义度量值:

    InternetPreviousQuarterMargin:=CALCULATE([InternetTotalMargin],PREVIOUSQUARTER('DimDate'[Date]))
    
    InternetCurrentQuarterMargin:=TOTALQTD([InternetTotalMargin],'DimDate'[Date])
    
    InternetPreviousQuarterMarginProportionToQTD:=[InternetPreviousQuarterMargin]*([DaysCurrentQuarterToDate]/[DaysInCurrentQuarter])
    
    InternetPreviousQuarterSales:=CALCULATE([InternetTotalSales],PREVIOUSQUARTER('DimDate'[Date]))
    
    InternetCurrentQuarterSales:=TOTALQTD([InternetTotalSales],'DimDate'[Date])
    
    InternetPreviousQuarterSalesProportionToQTD:=[InternetPreviousQuarterSales]*([DaysCurrentQuarterToDate]/[DaysInCurrentQuarter])
    

为 FactInternetSales 表创建的度量值用于分析关键财务数据,例如用户所选筛选器定义的项的销售额、成本和利润率。

创建一组度量值后,请查看表格模型资源管理器中的 度量 值。 你将看到所有新度量值。 右键单击某个度量值,即可看到现在可以对该度量值执行的操作。

后续步骤

第 7 课:创建关键绩效指标