喜乐君视频录制的框架,后期再逐渐补充。
欢迎观看系列视频: UDEMY【另眼看DAX分析世界】 (该视频23年仅在UDEMY试发行)
一、从SQL看,问题分析的本质是什么?
案例:每个产品 的 销售数量总和
1、分析的本质是对业务的抽象概况
典型的分析问题,是对大量业务事实的抽象概括、归纳升华,从而获得一些有概率的线索,比如哪些品牌更加畅销,哪些产品价格异常等等。“归纳”(induction)是人类文明发展过程中构建的最重要的学习方法之一。
在日常工作中,业务领导时常会提出一些要求我们总结、归纳、概括的问题,英文中也有sum up(口语化)、summarize(归纳)等对应的说法。
这个抽象概括、升华总结的过程,我们可以简而言之为”抽象“(abstract),或者总结(summarize)。
如今,业务细节都以数据的形式保存。从数据角度看,抽象概括的过程,就是对成千上万数据明细行的计算,只是不同计算的抽象程度有高有低,选择怎样的计算类型、计算方法,以何种方式呈现,才是重点。
2、抽象总结的基本方式是聚合
在计算机的世界中,所有的操作都是计算(computation),所以才称之为“计算机”(computer)。
以SQL为例,为了完成“每个产品 的 销售数量总和”,我们可以查询所有的产品销售细节,如下图左侧所示。但是这样的细节不能直接回答问题——我们依然不知道哪个产品销售多少,也就是抽象化程度太低、概括不足。
在计算的世界,分析概括是从聚合函数开始的,聚合是抽象概括的典型形式。其中,使用最多的是SUM求和,在Tableau、Power BI,甚至Excel中,它都是默认的聚合方式,从它的名字(sum)就知道,它是summarize的默认选项。
3、聚合的典型形式是sum求和
除了最常见的聚合形式SUM求和,常见的聚合类型还有AVERAGE平均值、MAX最大值、MIN最小值等等。它们分别代表了不同的视角。
(有待补充)
小结:问题分析就是抽象概括,后者借助聚合计算完成,聚合的典型形式是求和sum,因此说“聚合是分析的本质”,所以常常两个关键词连用讲“聚合分析”,它和“明细查询”相对应。
换个角度看,聚合分析的基础是明细查询,二者借助于聚合过程连接在一起。可以用Measure一词进一步理解二者的区别和联系。
二、聚焦“聚合”的过程:理解Measure的多种涵义
1、从业务过程看Measure(形成明细表的过程)
Measure是动词形式,是对业务的准确记录,比如销售数量多少、成交价格多少。
秦始皇“统一度量衡”,这里的“度量衡”(dù liàng héng )分别代之三种测量器具:计量长短用的器具称为度,测定计算容积的器皿称为量,测量物体轻重的工具称为衡。其中,测量轻重还有一个词语是“权”,这也是“权重”一词的来源。孟子就留下了“权,然后知轻重;度,然后知长短”的名言。度、量、衡、权,组成了很多通用词汇:度量、权重、权衡、计量、量化。由于计量长度的历史最为悠久、使用最为普遍,因此,我们推荐使用“度量”一词,与Measure的动词形式相对应,而不推荐使用量化这种新词。
在西方管理学中,就有“if you cannot measure it,you cannot manage it”(德鲁克)的管理格言。如何measure你的业务?如今最普遍的形式就是能完整记录在数据库的数据表明细行中,也正为此,我们常常称数据表明细行为“记录”(Record),而把用于精确表示数据值的数量、单价、折扣等数字型字段称之为“度量字段”。沿着这条路讲下去,就是数据库的知识了。
当然,把明细行的字段称之为“measure”是相对粗糙的说法,喜乐君并不推荐,而是推荐把它作为问题阶段的专用名词,代表问题的答案。
2、从问题角度看,Measure是问题的答案
比如,每个产品的销售数量总和、每个日期的销售数量总和,这里“销售数量总和”代表不同问题的类似答案,借助于Measure来实现。
…… 有待补充。
3、aggregation是问题分析的过程,是measure的载体
聚合是分析的本质,聚合是从数据表明细行到问题的由多变少的抽象概括过程。aggregate聚合
聚合过程
聚合函数
三、SQL和DAX的Measure对比
1、SQL编程式语言:聚合的关键是分组依据GROUP by
2、DAX,函数式语言,而非编程式语言
使用sum或者sumx函数完成求和聚合,但从问题角度看,问题是维度和度量构成的整体,是从明细表的概括,形成问题的基本函数是summarizecolumns函数,当然还有很多类似形态。
有待补充
3、DAX:从多个问题中“剥离”出常用的聚合计算
比如,同时要分析“不同产品的销售数量总和” 与 “不同日期的销售数量总和”,可以预先定义一个Measure,代表“销售数量总和”这一聚合形式,而后和不同的问题组合。
//事例:每个产品 的 销售数量总和 DEFINE MEASURE // 数量总和 ,度量值被独立出来了 ,适用于所有的问题 sales[amt] = SUMX ( sales, Sales[Quantity] ) EVALUATE //所有的分析都是计算,查询也是计算 SUMMARIZECOLUMNS ( Sales[ProductKey], "total qty", sales[amt] ) EVALUATE SUMMARIZECOLUMNS ( Sales[Delivery Date], "delivery qty", sales[amt] )
点击链接,查看我的DAX代码
https://dax.do/cpCoU8lAqAj2Xj/
嵌入测试1(DIV)
1//分析的本质是什么? 抽象---聚合方式实现的---聚合的具体形式 是 sum,聚合要有分组依据2//事例:每个产品 的 销售数量总和34DEFINE MEASURE // 数量总和 ,度量值被独立出来了 ,适用于所有的问题5 sales[amt] = SUMX ( sales, Sales[Quantity])678EVALUATE //所有的分析都是计算,查询也是计算 9SUMMARIZECOLUMNS ( 10 Sales[ProductKey],11 "total qty", sales[amt] 12)13EVALUATE 14SUMMARIZECOLUMNS ( Sales[Delivery Date],15 "delivery qty", sales[amt])16
嵌入测试2(dax,缺少css)
[dax try="https://dax.do/cpCoU8lAqAj2Xj/mJrwj74/"] //分析的本质是什么? 抽象---聚合方式实现的---聚合的具体形式 是 sum,聚合要有分组依据 //事例:每个产品 的 销售数量总和 DEFINE MEASURE // 数量总和 ,度量值被独立出来了 ,适用于所有的问题 sales[amt] = SUMX ( sales, Sales[Quantity]) EVALUATE //所有的分析都是计算,查询也是计算 SUMMARIZECOLUMNS ( Sales[ProductKey], "total qty", sales[amt] ) EVALUATE SUMMARIZECOLUMNS ( Sales[Delivery Date], "delivery qty", sales[amt]) [/dax]
总结
分析的本质、聚合过程、度量、度量值,一脉相承。
Sep 2, 2023 V0.1
喜乐君
了解 喜乐君 的更多信息
订阅后即可通过电子邮件收到最新文章。
Pingback: 深刻理解聚合函数:理解它们的关系 – 喜乐君
评论已关闭。