先来说几个概念,比如……

DAX语言是什么?

答:……说来话长,简而言之,DAX,即数据分析表达式语言,是PowerPivot和SQL Server分析服务表格式的语言,具有强悍而高效的数据处理和挖掘能力……

等会,PowerPivot又是什么?

答:准确的说,我们这里聊的是PowerPivot for Excel,所以,我们这里说PowerPivot是Excel的一个加载项,它可以实施一个快速而强大的内存数据库,可以集成来自不同数据源的数据,通过在数据之间建立关系来构建数据模型,而且它取消 Excel 中的行和列限制,可以处理千万条数据不费吹灰之力……

听不懂…………真听不懂……

打个响指,不懂就不懂吧,概念的东西心里过一下有个大概也就行了。

言归正传,我们今天聊DAX语言在Excel列表中的查询应用,外甥打灯笼——照舅,还是用栗子来说事。

假设我们现在有两份工作簿,一份名为【数据源】,一份名为【我的分析】;

其中【数据源】工作簿的【销售表】中存放了如下图所示的数据,我们需要在【我的分析】工作簿中对其进行计算处理。

我们知道Excel函数在处理跨工作簿数据时有很大的局限性,当被引用数据所在的工作簿关闭时,除了部分引用类函数,很难从中取值,更不用说进一步的数据处理与分析了,所以这个问题并不适合采用函数处理。

你可以使用SQL,或者VBA,再或者DAX。前两者的方法我们多少分享过,DAX近乎绝迹,今就分享下DAX的常用数据查询语句。

第1步,获取外部数据。

首先,打开【我的分析】工作簿,单击【数据】选项卡下的【现有连接】,再弹出的对话框中选择【浏览更多】,如下图所示:

寻找到目标工作簿(数据源),选取目标表格后(销售表),单击【确定】按钮,在弹出的【导入数据】对话框中,勾选【将此数据添加到数据模型】。

【数据的放置位置】设置为现有工作表的A1单元格。单击【确定】按钮,销售表的数据将会完全读入到当前工作表中,并以“列表”的形式存在。

第2步,编辑DAX语言

右键单击数据列表的任意单元格,在弹出的右键快捷菜单中,依次单击【表格】→【编辑DAX】

在弹出的【编辑DAX】对话框中,命令类型选择【DAX】,即可根据实际数据分析需求,编辑DAX语言。

常用DAX查询语句如下:

(1) 字段选取。假设我们只需要获取【销售表】的“产品”和“数量”两个字段的数据。

EVALUATE

SUMMARIZE(‘销售表’,[产品],[数量])

(2) 条件查询。假设我们只需产品名为“大花”的销售记录。

EVALUATE

FILTER(‘销售表’,[产品]=”大花”)

(3) 汇总求和。假设我们需要获取每件商品的销售总数量。

EVALUATE

SUMMARIZE(‘销售表’,[产品],”总数量”,SUM(‘销售表'[数量]))

(4) 条件求和。假设我们只需要获取“祝洪忠”的销售总数量。

EVALUATE

SUMMARIZE(FILTER(‘销售表’,[产品]=”祝洪忠” ),[产品],”总数量”,SUM(‘销售表'[数量]))

(5) 汇总计数。假设我们需要获取每件商品的销售总次数。

EVALUATE

SUMMARIZE(‘销售表’,[产品],”总次数”,COUNTROWS(‘销售表’))

(6) 条件计数。假设我们只需要获取“看见星光”的销售总次数。

EVALUATE

SUMMARIZE(FILTER(‘销售表’,[产品]=”看见星光” ),[产品],”总次数”,COUNTROWS(‘销售表’))

(7) 名次查询。假设我们只需要获取销售总额前三名的数据,并按降序排列。

EVALUATE

SUMMARIZE(TOPN(3,’销售表’,CALCULATE(SUM(‘销售表'[总价]))),[产品],[总价]) ORDER BY [总价] DESC

(8) 去重查询。假设我们只需要提取去重复的产品名称。

EVALUATE

SUMMARIZE(‘销售表’,[产品])

未完,待补,下次再聊。哈哈,别紧脏。

拱手再见,祝安康。

图文制作:看见星光

专业的职场技能充电站