分享免费的编程资源和教程

网站首页 > 技术教程 正文

PowerPivot数据分析表达式DAX数据类型通俗讲解

goqiw 2024-09-18 15:14:55 技术教程 13 ℃ 0 评论

PowerPivot超级数据透视表,关于DAX数据分析表达式中的数据类型的通俗讲解。。。

依据过往的经验,大家也许已经意识到,每个PowerPivot函数只能以特定的顺序接受指定类型的参数。比如,日期函数通常只能处理日期类型的参数,字符串函数通常只能处理文本类型的参数等等,而有的DAX函数,只能接受表格作为参数。

有些函数能够接受两个或者两个以上的参数,这些函数严格要求其参数的顺序不能颠倒,并且,数据类型必须符合每一个参数位置处的要求。

上面说的是函数对于其参数数据类型的要求。对于函数的计算结果,我们会发现,每一个函数的运算结果也只能属于某种特定的数据类型。

比如CALCULATE()函数的计算结果是数值(数字或者文本),而CALCULATETABLE()的计算结果是一个表格。

我们之所以要清晰地了解一个函数的参数所要求的数据类型,以及,我们之所以要清晰地了解一个函数的运算结果得到的数据类型是什么,是因为,当设计复杂的DAX函数嵌套公式时,必须保证:

当一个函数(我们暂且称之为函数A)的运算结果作为另一个函数(函数B)的参数时,函数A的运算结果必须是函数B参数所要求的数据类型,否则,我们设计的公式就会报错。

关于PowerPivot数据分析表达式函数所能处理的数据类型,作为非计算机科班出身的我们,可以简单地认为:在DAX数据分析表达式中,只处理“数字”、“日期”、“字符串”和“表格”四种类型数据。

对于数字,日期,字符串以及表格四种类型的数据,我们又可以把它们进一步分成两类:数值(数字,日期,字符串)和表格。

无论是Excel函数还是PowerPivot函数,对它所能接受的数据(也就是函数的参数)的要求是非常严格,参数的位置(对于需要多个参数的函数来说)和每一个位置处参数的类型都不能错误。

对于函数运算的结果,我们也必须清晰地了解运算结果的数据类型,这样,我们才能在设计复杂的函数嵌套公式时(一个函数的运算结果作为另一个函数的参数)不会出错。

在大多数场景下,数据的分析的结果往往需要放到PowerPivot数据透视表的值区域中呈现。我们知道,PowerPivot的值区域由一个个Excel单元格构成,因此,我们放到PowerPivot值区域单元格中的内容只能是数字,日期,字符串,即只能是数值,而不能是一个表格。

了解了这些,我们在设计DAX数据分析表达式时,当一个DAX表达式计算的结果需要放到PowerPivot数据透视表值区域中去呈现的时候,我们必须保证:该DAX数据分析表达式的最终运算结果必须是数值,而不能是表格,除非这个表格只有一行一列。

当一个DAX度量值的运算结果是只有一行一列的表格时,我们把这个DAX度量值拖入到值区域时,PowerPivot会启动一个自动转换机制,自动把这个只有一行一列的表格转换成普通数值,从而能够在PowerPivot的值区域里面呈现。

一行一列的表格自动转换成数值的过程,在DAX函数嵌套过程中也可能发生。比如,当我们能够确定一个函数返回的运算结果是只有一行一列的表格,那么,我们就可以把这个函数的计算结果看成一个数值,然后作为需要一个数值参数的函数使用。

事实上,这种数据类型自动转换的机制在Excel工作表函数中也有发生,比如布尔值TRUE和FALSE在Excel公式中使用时,可以自动转换成1和0。

举个例子,Excel公式=(2=3)*1相当于公式=FALSE*1,计算结果是0;而Excel公式=(2=2)*1相当于公式=TRUE*1,计算结果为1。

现在,我们来回顾一下两个已经非常熟悉的函数:CALCULATE()和CALCULATETABLE()。我们知道,CALCULATE()函数计算得到的是一个值(数字、日期或者文本),CALCULATETABLE()函数计算得到的是一个表格。

因为CALCULATE()计算结果是一个数值,因此CALCULATE()的计算结果可以在PowerPivot的单元格里直接显示;而CALCULATETABLE()函数的计算结果是一个表,因此CALCULATETABLE()的计算结果一般不能直接在PowerPivot的单元格里显示,我们必须根据需要,用适当的DAX函数(比如COUNTROWS,CONCATENATEX函数等)把这个表格汇总成一个数值(数字或者文本)才能显示在PowerPivot值区域中的单元格里?。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表