DAX(筛选)

其实对于筛选函数一直都不是太懂,尤其是ALL之类的,还是不理解,反正有实例,慢慢顿悟吧,看了那种把DAX代码写得好长的,第一是佩服,第二是我情愿多建几个字段,然后用鼠标操作,虽然麻烦。还是学几个筛选函数吧。

FILTER 函数 (DAX)返回表示另一个表或表达式的子集的表 实例:FILTER(表,表达式)一般不单独使用,作为条件嵌套到其他函数里面

FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")返回作为 Internet 销售的子集的表,但不包括属于美国销售区域的所有行。RELATED 函数用于将 Internet Sales 表中的 Territory 键链接到 SalesTerritory 表中的 SalesTerritoryCountry

SUMX(FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States"),'InternetSales_USD'[SalesAmount_USD])

静下心也能行的。多重嵌套就像树结构一样,不断的把原函数的表达式用另外的函数写出来,而另外的函数也有自己的格式,思维清晰就好了,先将业务需求的数据弄清楚,再层层外嵌套。

RELATED 函数 (DAX),从另一个表返回相关值。RELATED(列)

RELATED 函数要求当前表与包含相关信息的表之间存在关系。您需要指定包含所需数据的列,该函数将通过现有的多对一关系从相关表中的指定列中提取值

也就是说当筛选的字段夸表时,要用RELATED进行非本表字段的关联。

VALUES 函数
此函数无法用于将值返回到工作表上的单元格或列中;您而是应该将其用作在公式中嵌套的中间函数,以便获取可以对其进行计数的非重复值的列表,或者用于对其他值进行筛选或求和。

计算销售订单的数量=COUNTROWS(VALUES('InternetSales_USD'[SalesOrderNumber]))

CALCULATE 函数 (DAX) 计算由指定筛选器修改的上下文中的表达式。

CALCULATE(表达式,条件,条件2…)

实例=( SUM('ResellerSales_USD'[SalesAmount_USD]))/CALCULATE(

SUM('ResellerSales_USD'[SalesAmount_USD]),ALL('ResellerSales_USD'))

ALL 函数 (DAX)

返回表中的所有行或者返回列中的所有值,同时忽略可能已应用的任何筛选器。此函数可用于清除筛选器并对表中的所有行创建计算

ALL( { 要清除筛选器的表| [要清除筛选器的列1, [, [,…]]]} )

就是避免原先表里面有筛选器造成的不良影响

当前年份销售额与总销售额的比率=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(DateTime[CalendarYear]))

各产品占总销售额的比率=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])

还是得靠实战啊,现在,至少有了战斗的粮草了吧,虽然自己依然不够熟悉,但有所了解之后,对某个函数有了印象之后,起码对以后的问题多了一个解决的办法,多看看别人家是如何写DAX的吧,这个在PP和PBI里面都用的到,而以后,随着我们这一代步入职场,会将这种更方便更低价的excel数据分析方法推向普及化。

你可能感兴趣的:(DAX(筛选))