要说DAX学习过程存在哪些难点,我以为“度量值”算一个,“上下文”算一个
“度量值”和“计算列”的区别,令很多初学新人纠结不已。毕竟大部份人是从EXCEL里绕过来的,遇到问题,习惯拉起公式添加列,操作近乎条件反射,毕竟添加的计算列实实在在嵌在表格里,公式、数字、格式都看得见摸得着。若是发现哪里不对,公式里稍做微调,立马就能看到列中数字的变化
“度量值”却不然。敲完公式,还必须把它放到可视化元素里才会显出数字。若第一次数字不符预期,尝试着改公式,却发现越改越错,越错越急,干脆把公式改回初始状态,又发现结果跟第一遍不同……顿时两脚踏空,感受到了三体人的威胁
下图中四个百分比度量值,对初学者来说算是个不小的困难
即便熟悉Excel透视表的朋友,也很有可能对此束手无策
为什么会出现这种状况?因为有“上下文”的存在
“上下文”——就是前后语境
在中英文阅读里,识别上下文是基本技能。一个词语是褒是贬,一句对白是轻是重,都要靠前后语境来判断。功力不够火候不到,就会端着嘲讽当赞美,捧着枷锁当奖杯,徒增笑柄
DAX中,“上下文”就是“前后数境”。数境这个词,是我自己拼凑的——既然阅读靠语境,数据环境下自然就要靠数境
这个“数境”,可以是表格里相邻的行记录,也可是页面里各筛选器的叠加集合,前者称为“行上下文”,后者称为“筛选上下文”
“上下文”是通向DAX高级功能的门槛。DAX公式无论何时何地,始终都受到两种上下文的影响——即前面提到的“行上下文”和“筛选上下文”
一个DAX公式的结果,同时取决于这两种上下文,这点务必牢记。后期碰到公式循环函数嵌套,很容易会忽略这一点,清晰的概念又会重新被迷雾笼罩。你只要记住,筛选上下文只管筛选,行上下文只管迭代,两者互不干涉,各司其职
“上下文”尽管从概念上来讲很简单,但从理解掌握到熟练运用,仍需时间。有些细节,初看或许一头雾水,不要灰心,更别放弃,暂时搁置疑问。请相信,这些纠结和困惑,绝不是你才有。建议定期回看本系列,每次必有新收获
(未完待续)