📅  最后修改于: 2020-12-01 04:45:59             🧑  作者: Mango
DAX是一种公式语言,用于在Power PivotTables中创建自定义计算。您可以使用旨在处理关系数据并在DAX公式中执行动态聚合的DAX函数。
DAX公式与Excel公式非常相似。要创建DAX公式,请键入等号,后跟函数名称或表达式以及所有必需的值或参数。
DAX公式可以包含DAX函数并利用它们的用法。这就是DAX公式在重要方面往往与DAX函数不同的地方。
DAX函数始终引用完整的列或表。如果只想使用表或列中的特定值,则可以向公式中添加过滤器。
如果要逐行自定义计算,Power Pivot提供的功能可让您使用当前行值或相关值来执行随上下文而变化的计算。
DAX包括一种函数类型,该函数返回表作为其结果,而不是单个值。这些函数可用于向其他函数提供输入,从而计算整个表或列的值。
某些DAX功能提供了时间智能,使您可以使用有意义的日期范围创建计算并比较平行期间的结果。
每个DAX公式都具有以下语法-
每个公式必须以等号开头。
在等号右边,您可以键入或选择一个函数名称,或键入一个表达式。该表达式可以包含由DAX运算符连接的表名和列名。
以下是一些有效的DAX公式-
DAX提供了IntelliSense功能,使您能够迅速正确地编写DAX公式。使用此功能,您无需完全键入表,列和函数的名称,而是在编写DAX公式时从下拉列表中选择相关的名称。
开始键入函数名称的前几个字母。 AutoComplete将显示可用功能的列表,其名称以那些字母开头。
将指针放在任何函数名称上。将显示IntelliSense工具提示,供您使用该函数。
单击函数名称。函数名称出现在公式栏中,并显示语法,这将在您选择参数时为您提供指导。
键入所需的表名称的第一个字母。 AutoComplete将显示可用表和列的列表,其名称以该字母开头。
按TAB或单击名称,将“自动完成”列表中的项目添加到公式中。
单击Fx按钮以显示可用功能列表。要从下拉列表中选择一个函数,请使用箭头键突出显示该项目,然后单击“确定”以将该函数添加到公式中。
通过从可能的表和列的下拉列表中选择参数或输入所需的值,将参数提供给函数。
强烈建议使用此便捷的IntelliSense功能。
您可以在创建计算列和计算字段时使用DAX公式。
您可以在计算列中使用DAX公式,方法是添加一列,然后在公式栏中键入表达式。您在PowerPivot窗口中创建这些公式。
您可以在计算字段中使用DAX公式。您创建这些公式-
在Excel窗口中的“计算字段”对话框中,或
在表的计算区域的“ Power Pivot”窗口中。
相同公式的行为可能有所不同,具体取决于该公式是在计算列中还是在计算字段中使用。
在计算列中,公式始终应用于整个表中列的每一行。根据行上下文,该值可能会更改。
但是,在计算字段中,结果的计算很大程度上取决于上下文。也就是说,数据透视表的设计以及行和列标题的选择都会影响计算中使用的值。
了解DAX中上下文的概念以编写DAX公式很重要。在您的DAX旅程开始时,这可能会有些困难,但是一旦您掌握了它,就可以编写有效的DAX公式,这对于复杂和动态的数据分析是必需的。有关详细信息,请参阅“ DAX上下文”一章。
您已经在上一节中了解了IntelliSense功能。记住在创建任何DAX公式时都要使用它。
要创建DAX公式,请使用以下步骤-
键入一个等号。
在等号右侧,键入以下内容-
键入函数或表名称的首字母,然后从下拉列表中选择全名。
如果选择了函数名称,请键入括号“(”。
如果选择了表名,请输入括号'[‘。键入列名称的首字母,然后从下拉列表中选择全名。
用“]”关闭列名,用“)”关闭函数名。
在表达式之间键入DAX运算符,或键入’,’以分隔函数参数。
重复步骤1-5,直到DAX公式完成。
例如,您要查找东部地区的总销售额。您可以编写DAX公式,如下所示。 East_Sales是表的名称。金额是表格中的一列。
SUM ([East_Sales[Amount])
正如在“ DAX语法”一章中已经讨论的那样,建议的做法是在对任何列名的每次引用中都使用表名和列名。这被称为–“完全限定名称”。
DAX公式可以根据是用于计算字段还是用于计算列而变化。有关详细信息,请参见以下各节。
您可以在Power Pivot窗口中为计算列创建DAX公式。
= DIVIDE (East_Sales[Amount], East_Sales[Units])
此DAX公式对表East_Sales中的每一行执行以下操作-
将一行中“金额”列中的值除以同一行中“单位”列中的值。
将结果放在同一行中新添加的列中。
反复重复步骤1和2,直到完成表中的所有行。
您已经添加了一个单价列,使用上述公式可以在这些列处卖出这些单位。
如您所见,计算列也需要计算和存储空间。因此,仅在必要时使用计算列。尽可能使用足够的计算字段。
有关详细信息,请参见“计算列”一章。
您可以在Excel窗口或Power Pivot窗口中为计算字段创建DAX公式。对于计算字段,您需要事先提供名称。
要在Excel窗口中为计算字段创建DAX公式,请使用“计算字段”对话框。
要在Power Pivot窗口中为计算字段创建DAX公式,请在相关表中的计算区域中单击一个单元格。使用CalculatedFieldName:=启动DAX公式。
例如,东部销售总额:= SUM([East_Sales [Amount])
如果在Excel窗口中使用“计算字段”对话框,则可以在保存之前检查公式,并使其成为强制性习惯,以确保使用正确的公式。
有关这些选项的更多详细信息,请参阅“计算字段”一章。
Power Pivot窗口也有一个公式栏,类似于Excel窗口的公式栏。使用自动完成功能,使用公式栏可以更轻松地创建和编辑公式,从而最大程度地减少语法错误。
要输入表格名称,请开始输入表格名称。 “公式自动完成”提供了一个下拉列表,其中包含以那些字母开头的有效表名。您可以从一个字母开始,然后输入更多字母以缩小列表范围。
要输入列名,可以从所选表中的列名列表中选择它。在表名称的右侧键入方括号'[‘,然后从所选表的列列表中选择该列。
以下是使用自动完成功能的一些技巧-
您可以在DAX公式中嵌套函数和公式。在这种情况下,可以在具有嵌套函数的现有公式中间使用“公式自动完成”。紧接插入点之前的文本用于显示下拉列表中的值,插入点之后的所有文本保持不变。
您为常数创建的已定义名称不会显示在“自动完成”下拉列表中,但是您仍然可以键入它们。
函数的右括号不会自动添加。您需要自己做。
您必须确保每个函数在语法上都是正确的。
您可以在Power Pivot窗口和Excel窗口中找到标记为fx的Insert Function按钮。
Power Pivot窗口中的“插入功能”按钮位于编辑栏的左侧。
Excel窗口中的“插入函数”按钮位于“公式”右侧的“计算字段”对话框中。
当您单击fx按钮时,将出现“插入功能”对话框。 “插入函数”对话框是查找与DAX公式相关的DAX函数的最简单方法。
“插入功能”对话框可帮助您按类别选择功能,并提供每个函数的简短说明。
假设您要创建以下计算字段-
Medal Count: = COUNTA (]Medal])
您可以按照以下步骤使用“插入函数”对话框:
Medal Count: =
出现插入功能对话框。
在“选择类别”框中选择“统计”,如以下屏幕截图所示。
在“选择函数”框中选择COUNTA,如以下屏幕截图所示。
如您所见,将显示所选的DAX函数语法和函数说明。这样可以确保它是您要插入的函数。
单击确定。奖牌计数:= COUNTA(出现在编辑栏中,并且还会显示一个显示函数语法的工具提示。
键入[。这意味着您将要输入列名。当前表中所有列的名称和计算所得的字段将显示在下拉列表中。您可以使用IntelliSense来完成公式。
键入M。下拉列表中显示的名称将仅限于以“ M”开头的名称。
单击勋章。
双击勋章。奖牌数:= COUNTA([奖牌]将显示在编辑栏中。关闭括号。
按Enter键。大功告成您也可以使用相同的过程来创建计算列。您也可以按照相同的步骤插入使用插入功能特性Excel窗口计算字段对话框的函数。
单击“公式”右侧的“插入函数”( fx )按钮。
出现插入功能对话框。其余步骤与上述相同。
DAX公式最多可以包含64个嵌套函数。但是,DAX公式不太可能包含这么多嵌套函数。
如果DAX公式具有许多嵌套函数,则具有以下缺点-
在这种情况下,您可以将公式拆分为较小的可管理公式,然后逐步构建较大的公式。
执行数据分析时,将对汇总数据执行计算。您可以在DAX公式中使用几种DAX聚合函数,例如SUM,COUNT,MIN,MAX,DISTINCTCOUNT等。
您可以使用Power Pivot窗口中的AutoSum功能,使用标准聚合自动创建公式。
如您所见,“奖牌数量”的计算字段显示在“奖牌”列下方的计算区域中。 DAX公式也出现在编辑栏中-
Count of Medal: = COUNTA([Medal])
AutoSum功能已为您完成工作-创建了用于数据聚合的计算字段。此外,AutoSum采用了DAX函数COUNT的适当变体,即COUNTA(DAX具有COUNT,COUNTA,COUNTAX函数)。
注意事项–要使用自动求和功能,您需要单击功能区上自动求和旁边的向下箭头。如果您单击自动求和本身,您将获得-
Sum of Medal: = SUM([Medal])
并且错误消息被标记为Medal不是数字数据列,并且该列中的文本无法转换为数字。
您可以参考“ DAX错误参考”一章以获取有关DAX错误的详细信息。
如您所知,在Power Pivot的数据模型中,您可以使用多个数据表并通过定义关系来连接这些表。这将使您能够创建有趣的DAX公式,这些公式使用相关表中各列的相关性进行计算。
在两个表之间创建关系时,应该确保用作键的两列具有匹配的值,至少对于大多数行,如果不是完全匹配的话。在Power Pivot数据模型中,可能会在键列中包含不匹配的值并仍然创建关系,因为Power Pivot不会强制执行参照完整性(有关详细信息,请参阅下一节)。但是,键列中存在空白或不匹配的值可能会影响DAX公式的结果和数据透视表的外观。
建立引用完整性涉及在输入或删除数据时建立一组规则来保留表之间的已定义关系。如果您不能完全确保执行此操作,因为Power Pivot不会强制执行此操作,则在进行数据更改之前创建的DAX公式可能无法获得正确的结果。
如果您强制执行参照完整性,则可以避免以下陷阱-
当主表中没有关联行时(即键列中具有匹配的值),将行添加到相关表中。
更改主表中的数据将导致相关表中的孤立行(即,键列中的数据值与主表键列中的值不匹配的行)。
当相关表的行中有匹配的数据值时,从主表中删除行。