Excel环境下使用MDX查询定制透视表 在Excel透视表连接PowerBI模型(广义,含AzureAS/Sqlserver SSAS),用的就是MDX查询。...并且Excel已经在界面上做了很大的优化,可以轻松地加工出自己需要的个性化的计算度量值、计算成员和成员集。...同样地除了项目维,还可以做指标维,自定义一个度量值组,一次性拖出来,这个可是先有MDX建模的度量值组,才有后来DAX建模的计算组的效法。在Excel上的体验很无敌。...计算度量值,也是可以界面辅助拖拉操作。 类似传统透视表的计算成员效果,可以在olap多维模型里,自己增加一些维度成员并计算结果。...上述的界面操作,如果在熟悉MDX后,可以写出更方便智能好用的计算成员、计算度量值和行列集合来使用。上述的经过MDX查询改造的透视表仍然是标准透视表,可以有透视表一切的功能保留。
NOTE] 这里的报表一词,和透视表同义。指的是具体的一个图表,而非整个页面。 ? 图 1-2 此报告显示的是跨越多表进行筛选的效果。 Calendar Year(日历年份)位于 Date 表的列。...不过,DAX 和 Excel 函数还是有一些根本性区别的。 单元格与表 Excel 在单元格中执行计算。...在图 1-5 中,SalesAmount 列中计算的表达式没有引用工作簿中的单元格,而是引用该表的列: ?...你可能认为 Excel 有两种不同的计算方式,我们可以标准引用单元格,单元格 F4 的公式显示为 E4*D4,或者在表中引用列。...DAX 可以作为编程语言来定义计算列,计算表和度量值。DAX 新提出的计算列和计算表的概念,MDX 里面没有。DAX 的度量值和 MDX 的计算集合类似。
计算产品销售总金额和销售贡献度(占整体比重),度量值可以分别写为: 产品销售总金额: = SUM('订单明细表'[产品销售金额]) 销售贡献度(占整体比重): = DIVIDE([产品销售总金额...在工作表中先准备好相应的字段和值,再将其添加到数据模型中,这两个参数表不与其他任何表建立关系,如图11-2所示。如图所示。 第3步:编写计算各个大区门店产品销售总金额和毛利润排名的度量值。...第1步:将上述准备好的度量值放置于数据透视表中,并且将相关的切片器添加到数据透视表中。但是当前使用“前N名”和“排序依据”这两个切片器还无法进行筛选,需要进行后续的设置。...第3步:此时,可以根据“排序依据”筛选数据了,但是“前N名”切片器还无法进行工作。这里我们可以借助数据透视表的值筛选功能,给筛选设置一个规则即可。例如,当选择“前3名”时,筛选出前3名的数据。...经过以上的几个步骤,这个查看TOP-N门店销售和利润贡献度的模型就建立完成了,核心点就是参数表的建立。最后在Power Pivot的管理界面中将不需要在数据透视表里显示的度量值“筛选条件”隐藏即可。
三、 OLAP的特点 电子数据表与OLAP相比,不具备OLAP的多维性、层次、维度计算以及结构与视图分离等特点。 多维。...钻过操作涉及多个事实表的查询并把结果合并为单个数据集,一个典型的例子就是预测数据与当前数据的结合:通常预测数据与当前数据存在于不同的表中,当用户比较预测销售与当月销售时,需要跨多个事实表查询。...如图1中一个cell中包含了两个度量值:装箱数和截至时间,可以对其进行多维分析。 事实表:存放度量值的表,同时存放了维表的外键。所有的分析用的数据最终都是来自与事实表。...如果没有明确设置默认成员,默认成员就是 All 成员,如果没有 All 成员,默认成员就是第一个成员。 4、元组和集合 元组和集合是 MDX 中的两种数据类型,也是 MDX 语句的构件。...,在 MDX 中叫计算成员(CalculatedMember)。
笔者这大半年时间里,在一个PowerBI企业级项目里,因着有【PBI催化剂】的助力,可以轻松应付大量的模型度量值、计算组成员的批量性创建与更新。...对应的功能菜单如下: Excel透视表现有PowerBI模型连接更新 以前面一点所述,因端口号每次打开同一个pbix都会变化,所以已创建好的数据透视表连接,下次使用,仍然存在端口号不对,访问失败的情形...特别是对常用的元数据如度量值、计算列、表关系信息等,在Excel上可方便一次性浏览所有特定相关内容,体验更好。 此功能下,分别提供简易版和完整版,简易版生成速度快,可供大部分场景使用。...使用场景如批量设置度量值的数字显示格式、显示文件夹信息等,在Excel上批量性进行维护将变得更轻松。...例如只需创建基础度量值如销售额,其他同比、环比、YTD、MTD等一系列指标都可以使用度量值模板方式批量创建。 创建过程中,还自动继承基础度量值的显示格式、存放表位置等,非常贴心。
答:这个要看实际情况,我一般建议优先考虑在PQ里添加列,因为PQ里添加的自定义列,在PP里能用,而在PP里添加的计算列,在PQ里不能用。...问-3:同样添加列, 同一表中PP会比PQ要快吗?比如,金额 = 数量*单价 答:单纯从计算的角度来说,这种简单的计算应该没有什么大的效率差异。 问-4:行数不受影响吗?...可参考圣经以下总结: 当你想要执行以下操作时,你必须定义一个计算列: 需要将计算结果置于 Excel 切片器;透视表行区域、列区域(而不是值区域);作为 DAX 查询的筛选条件。...然而,当你想在由用户设定筛选条件的数据透视表值区域中看到计算结果时,你必须定义一个度量值,例如: 基于透视表的选择计算利润率百分比。...存在年份和地区筛选器的情况下,计算一个产品占所有产品的比率。 你可以使用计算列和度量值来表示同一计算,即使在这种情况下需要使用不同的 DAX 表达式。
但它只是推送了原始数据,一些计算逻辑没有带上,例如它模型中的成员公式就没有了。...,再拉一些度量值出来,最终的矩阵表呈现度量值为空的情况,如成本维度细分只与成本度量值交叉有值,与收入、利润等度量值交叉就为空。...上面的问题其实还不是最大问题,只抽取明细数据,丢失了成员公式的元数据,个人觉得这个是最大的痛点,因为没有了成员公式,其他的指标计算,要重新自己去组织逻辑,而且在SAP的BW里面,有指标维和父子结构的层级结构维度这种概念下...,在前端交互的方式下直接通过整个大的维度表找到某个成员的难度非常高。...所以就有必要通过MDX查询的方式,在其一个巨大的模型中精确地切割出自己想要的部分数据,再重新建模,并且理想情况下,可以调用其成员公式,将指标的计算也拿到手,不需要再重新摸黑构建。
可以点击【修复此问题】进行修复,修复的方法是删除该视觉对象使用的不存在的字段。在复制粘贴后保持各种设置与来源一致。这有点像Excel中的复制粘贴后,使用目标主题还是使用源主题。...当选择任何视觉对象后,可以将该视觉对象的视觉级筛选放置在该筛选器面板,甚至包括图片和前N项,如下: ? 这个更新很有用,对于不同的视觉对象,可以均开放筛选器,可以让用户随时筛选需要看到的内容。...设置筛选的内容与未设置筛选的内容有格式的区别,这是很好的,但可惜很多地方在中文翻译后变得比较不太接地气,如:顶端对齐 3 的意思就是 TOP 3。 与此同时,在视觉对象上,也会有一个显示: ?...鼠标悬停在该图标后,会显示当前视觉对象使用了哪些筛选器,这倒是十分实用的。 所有视觉对象颜色均支持条件格式高级控件 首先来看看条件格式的高级控件是什么,此前我们在矩阵中使用这个特性,如下: ?...度量值由全局表统一管理;尽量避免计算列,度量值优先;在需要使用计算列的时候,可以在PQ阶段完成;在需要辅助表完成报表计算的时候使用虚拟关系(TREATAS)。
在Excel中,我们可以使用Power Pivot和数据透视表相结合的方法来动态计算近N天的数据变化的情况。比如,我们按选择一个日期,计算当前日期的前7天、前15天,前30天等近期的数据变化情况。...这个例子是简化过来的。 为了当我们选择一个日期的时候,在我们透视表中和数据透视图中能显示选择的近N天的数据,我们还需要做两件事: (1)新建一个用于切片器的近N天的表。如图所示。...可以在excel工作表中输入,然后导入到Power Pivot中。 (2)按日期表再建立一个用于透视图的x轴和透视表的日期列的日期表。同时该表也标记为日期表。...建立拟关系的作用是因为表中我们使用的是物理关系的日期表来做切片器来控制多个透视表或者透视图,所以需要一个虚拟关系来搭接日期表与切片日期表,用于筛选。...插入一个数据透视表,日期列来自于切片日期表中的日期列,放入度量值salestotal。如图所示,当我们选择一个日期的时候,就可以自动计算这个日期的近N天的总金额。
在Excel中,使用Power Pivot搭建的模型通常用透视表展现结果,如下图所示。...除了透视表,还可以是表格样式: 在《将透视表伪装成表格的两种方式》这篇文章中,我讲解了如何制作表格样式的透视表。 无论是表格还是透视表展现,都不够灵活。...一个表示多维数据集的连接名称的文本字符串。 Member_expression 可选。多维表达式 (MDX) 的文本字符串,用来计算出多维数据集内的成员或元组。...如果 member_expression 中未指定度量值,则使用该多维数据集的默认度量值。 微软官网 那么如何使用呢?我们以一个有三个数据源的销售模型为例。...第二个参数再次输入双引号,会提示选择表格或者度量值,此处我们需要提取销售员表中的姓名,因此选择销售员表。 选择销售员表后,输入一个".",弹出该表中的所有列,选择销售员列。 再次输入一个"."
当时我们参考了三种市面已有的语言:Excel公式,SQL,MDX。商业分析师(BA)一般会选择使用Excel,我们定位这类用户为自助BI用户,但Excel公式无法直接处理在数据库中的关系型数据。...因此,我们想到只在简单的表,列和关系的基础上设计一个语言,相比MDX,这更容易被业务用户自然地理解。...如果是业务用户,我会告诉他们:DAX是一种编程语言,写法上有点像Excel公式,但这种公式允许用户定义业务逻辑,例如:度量值,这样可以在很多业务报告及分析中复用。...我甚至希望有一天Excel团队可以把DAX查询功能加入到透视表和透视图的原生功能以充分释放Power Pivot引擎的能力。...而实际上,所有在筛选上下文中的DAX筛选器都是返回表的表达式,并且满足左外连接的关系代数逻辑(BI佐罗注:扩展表原理)。
任何在企业中的应用首先涉及的就是:权力。错了,是权限。因此权限控制是任何解决方案应该率先考虑的。本文给出在PowerBI中的动态权限控制的终极解决方案:用Excel配置权限后自动适应。...已经描述过,其核心在于: 通过 USERNAME() 来判断当前登录云端的用户账号 建立一个权限表 通过 DAX 表达式 来判断权限 该方案已经足够好用,但本文将做进一步改进,改进成全自动形式并且完全对用户透明的方法...首先,看下PowerBI文件的查询结构: 可以看出我们单独设置了权限控制部分的配置表和度量值,来看看权限控制表的实现: 这里对用户的配置,进行了逆透视以及规范化处理,形成了便于在PowerBI中便于使用...然后,在角色中这样控制权限: 由于这个方案已经将实际的权限控制全部交给配置表动态处理,其实已经不需要利用PowerBI的多角色机制了,只需要一个角色,随便起个名字即可,然后使用刚刚的度量值,分别对应要控制的表放入即可...最后的补充:双向安全筛选器 在学习PowerBI建立关系时,很多人好奇一个地方: 这个在两个方向上应用安全筛选器是什么意思,在这里的场景下: 会出现两种理解: 由于客户表并没有受到权限控制,应该显示所有客户
当前没有任何筛选上下文,图里孤零零挂着一个汇总值。不过也确实体现了公式本意——SUM函数不就是汇总求和的意思么?上图显示完全没问题 接下来我们往图里放点其他东西——把“大类”拖进去 ?...这一点,粗看起来,跟Excel的透视表效果差不多,但背后原理却大相径庭。还记得第一篇《什么是上下文》里,那四个百分比指标吗(下图),如果换成Excel环境,这四个指标不把你搞到肾出血我不姓东 ?...,单元格内的值也会随之不同 所有的这些筛选决定了该单元格的“筛选上下文”,DAX公式在计算前,将先把筛选上下文应用到数据模型,得到筛选子集后,再进行计算 因此,筛选上下文是多个筛选的集合,这便是它的入门定义...1)可视化图表指的是大部分可视化元素 2)筛选器,在可视化面板隔壁 3)Calculate函数(该函数语法结构很简单,但运算逻辑较为复杂,将在后续章节专门介绍) ? ?...筛选上下文在创建的初始状态是静态的,但由于报表具有交互操作功能,在用户与之互动过程中,筛选上下文随时都可以修改调整其范围。以下四种操作,可以达到调整筛选上下文的目的 ?
6.2.4 实例4:批量提取Excel工作簿中不规则的防疫数据 第7章 认识Power Pivot与DAX 7.1 Power Pivot介绍 7.1.1 认识Power Pivot 7.1.2 从数据透视表的不重复计算说起...DAX中的数据类型与运算符 7.3.3 创建DAX表达式时表和列的引用方式 第8章 Power Pivot和DAX基础知识 8.1 理解计算列与度量值 8.1.1 依附于数据表的计算列 8.1.2...能适应各种环境的度量值 8.1.3 度量值与数据透视表的计算字段 8.1.4 如何选择度量值与计算列 8.1.5 管理度量值 8.2 数据模型与表间关系 8.2.1 理解Power Pivot的数据模型...函数 第9章 DAX进阶知识和常见应用 9.1 Power Pivot和数据透视表 9.1.1 实例1:在数据透视表中使用自定义排序:按列排序 9.1.2 实例2:在数据透视表中创建KPI规则——设置...10.1 认识时间智能函数和日期表 10.1.1 时间智能函数与日期函数 10.1.2 日期表的创建与标记 10.1.3 与时间智能函数相关的常用计算指标 10.2 常见的时间智能计算 10.2.1
注意,在计算列中直接对某些列进行引用时,只能对当前计算所在的行上的列值起作用,如果要从其他行中检索值,您需要采用完全不同的方法。这与 Excel 中的计算完全不同。...从行上下文到筛选上下文的转换,是通过对表中的每一列创建一个筛选器来实现的,这些筛选器将对应的列中的值指定为当前行中的列的值(请记住,行上下文始终与单个行相关)。结果是生成了一个选择当前行的筛选上下文。...是否在结果中显示该空白值应该由您根据实际情况来决定。 每个州的销售额计算如下。...第二个参数是标量表达式,在第一个参数的表中每一行的行上下文中计算。 您可能已经从前面讨论的 Sales2 度量值中注意到了,该度量值在 SUMX 的第二个参数中使用了直接的列引用。...虽然在这种情况下,此差异不会影响度量值的结果,但有些时候您可能会用到一些受到此差异影响的更高级的度量值。 与 CALCULATE 一样,CALCULATETABLE 创建了筛选上下文。
汉语博大精深,同一个词在不同的语境下表达的意思都可能不同。 ? 而这不同的语境就好比DAX的“上下文”。使用不同的切片器、筛选器、数据透视表的行和列,都会创造不同的“语境”(筛选上下文)。...计算列不是什么新知识,就好像在Excel中使用Vlookup添加一列一样,这一列是基于现有的表基础上做运算,它是“静态”的,运算结果不会因为切片器或透视筛选而变化,当你建立好后,它就会保存在文件中,增加你的内存...比如在上一篇文章中最实用的帕累托分析模板, 求每种商品由大到小的累计金额,添加计算列的方法只能输出当前表中的结果,而使用度量值你可以做到ABC动态产品分类。...求北京市、咖啡大类、2017年3月份的ABC,这是瞬间就可以完成的事情。 ? 所以这第二条经验是,使用度量值,在不得已的情况下再去考虑使用计算列。...下图这个图是我经常用来脑补DAX的工作原理,度量值和计算列都是先执行筛选再来计算,而所谓的“DAX用作查询语言”其实就是主要应用了筛选功能,所以某些观点“DAX查询将取代数据透视表”是没有道理的,一个东西你只用了一半的功能
] ) 事实上,度量值的首要目标是生成在报表、数据透视表或图表中呈现的结果。...VALUES函数返回在当前筛选器中计算的列的不同值。如果在计算列或计算表中使用VALUES或DISTINCT函数,则它们与ALL函数的行为相同,因为没有生效的筛选器。...但是,当在度量值中使用时,这两个函数在计算时会考虑现有的筛选器,而ALL函数会忽略任何筛选。 如前所述,这两个函数几乎是相同的。...ALLSELECTED函数在检索表或列的值时非常有用(这类值的特点是在当前报表中可见),并且只考虑当前视觉对象之外的所有筛选器。...图19 使用ALLSELECTED函数,在基于销售额计算百分比时只考虑外部筛选器 总计恢复为100%,报表的数字反映的是占可见总计(Visible Total,即只考虑除当前视觉对象之外的所有筛选器
具体操作如下: 在PQ编辑器中对查询生成的资产负债表选择除公司代码、报告日期之外的其他列后右击,选择逆透视列,完成后更改下列名,如下: ? ?...---- 第三步:确定分析模型所需的表, 并设定表与表之间的关系 根据上面第二步分析得知,我们至少要有三个维度表,即时间、公司、科目维度表,有了这三个维度表后,我们就可以在后面分析中根据这些维度对数据进行切片计算...] 年季名称 = [年]&[季度名称] 在自动生成的日期建立这些字段主要是便于后期筛选和计算。...考虑到原来的科目中每个都有万元,直接显示显示出来不好看,因此,我们增加一列用来在报表可视化中显示出来的名称即项目名称列,为了让显示出来的项目显示出层级,更加好看,可以在项目名称的前后增加这个字签,模拟缩进效果...依次将相关度量值,加入值,项目名称加入到行 ? 同时将科目表的类型字段,加入到该矩阵的筛选器,并筛选资产 ? 2. 负债项目与资产项目一样,可直接将矩阵复制一个,将筛选器改为权益 ?
在本章中,我们将简要介绍 DAX 在 Power BI 中的不同用法。 计算列 计算表 度量值 安全筛选器 DAX 查询 除此之外,我们还将讨论如何使用 DAX 创建日期表。...例如,在 Excel 模型和数据仓库中,您可能会遇到一个指示器(indicator),该指示器确定某一行数据是否属于“当前年初至今”。同样,这是一个静态解决方案,不会让您得到两个月前的年初至今数据。...我们将在第4章 “上下文与筛选”中详细讨论这些概念。 3.4 DAX安全筛选器 DAX 还可用于在 Power BI 模型中实现安全性。当用户检索报表时,他们将能够通过该报表查看模型提供的所有结果。...Customer[Region] = "Europe" 为特定安全角色设置时,此 DAX 安全筛选器将使该角色中的用户只能查看欧洲区域中的客户以及与这些客户相关的数据。...更重要的是,与计算列一样,如果需要删除一个表并重新创建这个表,您将丢失该表下的所有度量值。 我们建议将所有度量值存储在一个或多个专用的度量值表中。这些表不包含数据,而只用来存放度量值。
领取专属 10元无门槛券
手把手带您无忧上云