在本文中,我们将介绍在 Power Pivot 中为 计算列 和 度量 值创建计算公式的基础知识。 如果不熟悉 DAX,请务必检查快速入门:在 30 分钟内了解 DAX 基础知识。
公式基础知识
Power Pivot 提供数据分析表达式 (DAX) ,用于在 Power Pivot 表和 Excel 数据透视表中创建自定义计算。 DAX 包括一些 Excel 公式中使用的函数,以及旨在处理关系数据和执行动态聚合的其他函数。
下面是一些可在计算列中使用的基本公式:
| 公式 | 说明 |
|---|---|
| =TODAY() | 在列的每一行中插入今天的日期。 |
| =3 | 在列的每一行中插入值 3。 |
| =[Column1] + [Column2] | 将 [Column1] 和 [Column2] 同一行中的值相加,并将结果置于计算列的同一行中。 |
可以像在 Microsoft Excel 中创建公式一样,为计算列创建 Power Pivot 公式。
创建公式时请按照下列步骤操作:
- 每个公式必须以等号开头。
- 可以键入或选择函数名,或键入表达式。
- 开始键入所需函数或名称的前几个字母,自动完成将显示可用函数、表和列的列表。 按 Tab 将自动完成列表中的项目添加到公式。
- 单击 Fx 按钮以显示可用函数的列表。 若要从下拉列表中选择一个函数,请使用箭头键突出显示该项,然后单击“ 确定” 将函数添加到公式中。
- 通过从可能表和列的下拉列表中选择参数,或者键入值或其他函数来为函数提供参数。
- 检查语法错误: 确保所有括号均已关闭,并且列、表和值已正确引用。
- 按 Enter 接受公式。
注意
在计算列中,一旦接受公式,该列将立即填充值。 在度量中,按 Enter 可保存度量定义。
创建简单公式
| 使用简单公式创建计算列 SalesDate子类别产品销售数量1/5/2009配件手提箱254995681/5/2009配件迷你电池充电器1099.56441/5/2009DigitalSlim Digital6512441/6/2009配件长焦转换镜头1662.5181/6/2009配件三脚架938.34181/6/2009配件USB线1230.2526
|
|---|
使用记忆式键入的提示
- 可以在具有嵌套函数的现有公式中使用公式记忆式键入功能。 与插入点紧邻的前一个文本用于显示下拉列表中的值,插入点之后的所有文本都保持不变。
- Power Pivot 不添加函数的右括号或自动匹配括号。 必须确保每个函数在语法上都是正确的,否则将无法保存或使用该公式。 Power Pivot 会突出显示括号,以便更轻松地检查括号是否已正确关闭。
使用表和列
Power Pivot 表外观类似于 Excel 表,但在处理数据和公式的方式上有所不同:
- PowerPivot 中的公式仅适用于表和列,而不适用于单个单元格、区域引用或数组。
- 公式可以使用关系从相关表中获取值。 检索到的值始终与当前行值相关。
- 不能将 PowerPivot 公式粘贴到 Excel 工作表,反之亦然。
- 不能像在 Excel 工作表中一样具有不规则或“参差不齐”的数据。 表中的每一行必须包含相同数量的列。 但是,某些列中可以有空值。 Excel 数据表和 Power Pivot 数据表不可互换,但可以从 Power Pivot 链接到 Excel 表并将 Excel 数据粘贴到 Power Pivot 中。 有关详细信息,请参阅 使用链接表将工作表数据添加到数据模型 和 在 Power Pivot 中将行复制并粘贴到数据模型中。
在公式和表达式中引用表和列
可以使用表和列的名称引用任何表和列。 例如,以下公式演示如何使用完全限定名称引用两个表中的列:
=SUM ('New Sales'[Amount]) + SUM ('Past Sales'[Amount])
计算公式时,Power Pivot 首先会检查常规语法,然后根据当前上下文中可能提供的列和表来检查所提供的列和表的名称。 如果名称不明确,或者找不到列或表,) 发生错误的单元格中将 (#ERROR 字符串而不是数据值的公式出现错误。 有关表、列和其他对象的命名要求的更多信息,请参见“ Power Pivot 的 DAX 语法规范中的命名要求”。
注意
上下文是 PowerPivot 数据模型的一项重要功能,可用于创建动态公式。 上下文由数据模型中的表、表之间的关系以及已应用的任何筛选器决定。 有关详细信息,请参阅 DAX 公式中的上下文。
表关系
表可以与其他表相关。 通过创建关系,您可以查找另一个表中的数据并使用相关值执行复杂的计算。 例如,可以使用计算列查找与当前经销商相关的所有发货记录,然后对每个记录的运费进行求和。 其效果类似于参数化查询:可以为当前表中的每一行计算不同的总和。
许多 DAX 函数要求表之间或多个表之间存在关系,以便找到引用的列并返回有意义的结果。 其他函数将尝试识别关系;但是,为了获得最佳结果,您应该始终尽可能创建关系。
使用数据透视表时,连接数据透视表中使用的所有表尤为重要,这样可以正确计算汇总数据。 有关详细信息,请参阅在数据透视表中使用关系。
公式中的错误疑难解答
如果在定义计算列时出现错误,则公式可能包含语法错误或语义错误。
语法错误是最容易解决的。 此类错误通常涉及缺少括号或逗号。 有关各个函数的语法的帮助,请参阅 DAX 函数参考。
当语法正确而值或列引用对公式上下文无意义时,就会发生其他类型的错误。 此类语义错误可能是由以下任一问题引起的:
- 公式引用了非现有的列、表或函数。
- 公式看似正确,但在 Power Pivot 获取数据时发现类型不匹配并引发错误。
- 公式为函数传递的数字或参数类型不正确。
- 公式引用了另一个出错的列,因此它的值无效。
- 公式引用尚未处理的列。 如果将工作簿更改为手动模式、进行了更改,然后从未刷新数据或更新计算,则可能会发生这种情况。
在前四种情况下,DAX 会标记包含无效公式的整个列。 在最后一种情况下,DAX 灰显该列来指示该列处于未处理状态。