alculate函数的筛选条件有很大的局限性c只能输入[列]=固定值ALCULATE(度量值,<筛选条件1>,<筛选条件1>C·······)度量值=calculate([销量],'产品表‘[咖啡种类]=\拿铁\可以在原有筛选条件进行“增删改”生成新的筛选条件确的写法=calculate([销量],'产品表’[咖啡种类]=“拿铁正”)遇到多条件筛选时:可以使用逗号表示同时满足情况在calculate([销售额],产品表’[咖啡种类]in{“拿铁”,“美式”,“卡布奇诺”})可以表达不包含则是:度量值=calculate([销售额],NOT'产也品表'[咖啡种类]in{“拿铁”,“美式”,“卡布奇诺”,})意思为:求产品表不包含拿铁、美式、卡布奇诺咖啡的销售额ALL销售量=calculate([销量],ALL('销售数九表))LL筛选器函数A功能为删除(消除)某个筛选条件扩大范围all就是在下手数据表中清除了所有筛选条件的影响可以按照列来清除筛选影响:ALL销量=calculate([销还量],ALL('产品表’[咖啡种类])意思为:求产品表中消除咖啡种类的筛选条件的影响之外的销量产品表:为引用表不能只引用列会发生混淆注意all函数说清除的筛选列和初始筛选条件中的筛选列完全一致(即同一张表的同一列)1LLEXCEPTA意思为除了指定列外清除筛选影响,清除其他不在引用的列LLSELECTEDA对视图上显示的筛选条件进行清除筛选(如切片器),而其他筛选条件保留,进行直观合计LLEXCEPT=CALCULATE([销量],ALLEXCEPT('产品表'[A杯型]))意思为:求在产品表中所有杯型的销量(大、中、小)只受杯型筛选影响,清除杯型之外的条件影响。LLSELECTED=CALCULATE([销量],ALLSELECTED('产A品表\占比=sum([销量])/[ALLSELECTED]这样做可以保证占比每次都是在页面切片器筛选条件下的直接合计占比,保证每次占比都是100%。ALL系列函数是可以引用多列,并且返回的结果视表。ll系列函数全部在度量值中是不能独立使用的,需a要配合CALCULATE和COUNTROWS这些可以引用表的函数使用FILTER('表,筛选条件)ILTER的筛选条件范围很大(FILTER筛选范围包括CALCUTATE)F列]=[度量值、=公式、=[列、=度量值、=[公式、=[固定值ILTER的筛选条件为判断逻辑 由于FILTER函数会对筛选F的表进行逐行扫描所以也就迭代函数,和带X的函数一样(SUMX)与其它函数主要区别是,在工作中可以意识所指哪一行,亦把这个工作叫创造行上下文。例如:A(0.7)类销售额=CALCULATE([销售额],在 FILITER(VALUES('销售记录’[产品名称]), [累计百分比]<=0.7)))解析:在销售记录表中求得在累计百分比小于等于0.7的A类销售额ILTER函数:高级筛选器函数F?lter是最强大的筛选器,不是计算器函数,返回是一张表,所以无法单独使用,常与CALCULATE函数搭配,也可与聚合函数使用如:COUNTROWS(FILTER(表,筛选条件))计算标的行数中表可以是任意一张表,包括ALL、VALUES等函数返其回的表甚至是在套个FILTER函数返回的表例如:FILITER(FILTER('订单明细,[单价}>50&&[数量]>10),[金额]>500)第二部分为筛选条件:FILTER销量=CALCULATE([销量],FILTER('产品表','产品表'[咖啡种类]=“拿铁”&&’产品表\杯型]=“中”))解析:FILTERZ使用中注意要点:1、尽量在LOOKUP表里使用它的数据量远小于事实表(数据表),避免逐行扫描带来的计算机运行压力2、当能使用CALCULATE筛选解决时,不使用FILTER,搞不定时在使用CALCULATE+FILTER函数LLEXCEPT=CALCULATE([销量],ALLEXCEPT('产品表“,\产A品表\杯型])只受杯型影响VALUES达到同样效果 CALCULATE([销量],all('产品表','用产品表'[杯型]))原理是先用ALL函数删除产品表中的筛选条件,在选择性地获取产品表中的“杯型”列数据ALUES函数:不重复值V返回由一列构成的一个表,该表包含来自指定表或列的非重复值。格是由行与列构成,所以上下文也有两种:1、筛选山表下文2、行上下文筛选上下文是针对列(竖向)的、行上下文针对行(横向)的选上下文:指的就是反复提及的\筛选条件\这个词比如筛CALCULATE([销量],'产品表[咖啡种类]=\拿铁“,产品表[杯型]=”中“))它的的筛选上下文就是针对产品表中的“咖啡种类列”,“杯型列”,以拿铁、中杯为条件筛选出来的表上下文=当前行,当我们在数据的第一个单元格里输入行数值时,这列所有的单元格数值等于当前行例如在新建列输入265数值,所有的这列单元格都是265,并不会自动变成筛选上下文上下文不会自动转为筛选上下文:当前所在行不会转成行筛选数据的信号传达到销售数据表中,也就是说对于销售数据表并没有进行任何筛选,所有输出的数值全部固定一样。ALCULATE相当于整个关系模型的引擎启动键,当加入CCALCULATE行数时,关系模型启动,则数据信号顺流而下,这个数据信号将行上下文转换为筛选上下文,按照当前行中的筛选条件对销售数据进行筛选(如美式大杯咖啡)SERELATIONSHIP函数(销售记录'[实际送货日期]<多U端关系>,'日历年'[日期]<一端关系>)))可以配合CALCULATE例如CALCULATE(SUM('销售记录表[数量],USERALATIONSHIP('销售记录[实际送货日期],'日历年[日期]):求得是销售记录表中实际送货日期的产品数量。ASONEVALUE函数返回的是“真”或“假”,即判断的是否H只有一个值,可以把它的表达式等效看作COUNTROWS(VALUES([列]名称))=1,也就是对该列的不重复的表计算行数是否等于11、在CALCULATE([销量],FILTER('门店信息表',SUM('销售数据表'[数量]>200)中SUM会将合计数量总计传到列中每一行,行上下文不会变成筛选上下文(也就是说对销售数据表没有任何筛选,所以输出都值都是固定的值200)2、导致的结果是FILTER在进行逐行扫描时,每一行都是总计大于200.3通过聚合的度量值隐藏的CALCULATE函数把行上下文转换成筛选上下文,而在FILTER函数里SUM无CALCULATE函数引擎不会做上下文转化,只会在类似矩阵表中添加的初始筛选上下文条件下运算关系视图多关系DAX引用HASONEVALUE函数:只有一个值函数 一种排名方法是按照度量值在第字段里进行筛选器筛选RANKX是上下文函数,会对整张表进行扫描ANKX(
好文档 - 专业文书写作范文服务资料分享网站