首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的计算列sum与我在DAX中的自然列sum不同?

在DAX(数据分析表达式)中,计算列和自然列的计算方式是不同的,这可能导致它们的结果不同。

自然列是从数据源中直接获取的列,它们的值是存储在数据库中的原始数据。而计算列是通过在数据模型中定义的表达式计算得出的,它们的值是在查询时动态计算的。

以下是计算列和自然列的一些区别:

  1. 计算方式:自然列的值是在数据加载时计算并存储的,而计算列的值是在查询时根据定义的表达式计算的。
  2. 存储方式:自然列的值是实际存储在数据库中的,而计算列的值并不存储在数据库中,而是在查询时根据需要计算的。
  3. 数据类型:自然列的数据类型是根据数据源中的定义确定的,而计算列的数据类型是根据定义的表达式计算得出的。
  4. 聚合方式:自然列可以直接进行聚合操作,如求和、平均值等,而计算列需要通过使用聚合函数来进行聚合操作。
  5. 灵活性:计算列可以根据需要定义复杂的表达式,可以使用各种函数和运算符进行计算,而自然列的计算方式相对固定。

由于计算列和自然列的计算方式和存储方式不同,所以它们的结果可能会有差异。如果你发现计算列的sum与自然列的sum不同,可能是由于以下原因:

  1. 计算表达式的问题:计算列的表达式可能存在错误或不完整,导致计算结果与预期不符。你可以检查计算列的表达式,确保它正确地计算出所需的结果。
  2. 数据筛选的问题:计算列的值是在查询时根据筛选条件计算的,而自然列的值是从整个数据源中获取的。如果你在查询中使用了筛选条件,可能会导致计算列的sum与自然列的sum不同。
  3. 聚合函数的问题:如果你在计算列中使用了聚合函数,如SUM、AVERAGE等,可能会导致计算结果与预期不符。你可以检查聚合函数的使用方式,确保它正确地计算出所需的结果。

总之,计算列和自然列在计算方式、存储方式和使用方式上存在差异,这可能导致它们的结果不同。如果你希望计算列的sum与自然列的sum相同,你需要仔细检查计算列的定义和使用方式,确保其正确地计算出所需的结果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2.7 PowerBI数据建模-DAX计算列中的几种VLOOKUP

使用DAX在数据表中新建计算列,经常从另一个表中查找返回符合条件的值,类似于Excel的VLOOKUP,又高于Excel的VLOOKUP。...举例以销量表和价格表为例,为销量表从价格表中查找返回产品的价格。基于查找表(价格表)的3种形式,对应有3种方案。...1 方向是多端查找一端2 支持跨表的关系传递3 性能优于其他方案4 非活动的虚线关系不适用价格表中每个产品只出现一次,每个产品只对应一个价格,存在多对一关系。...1 返回的值必须唯一,否则返回空或者预设结果(公式的最后一个参数)2 支持多条件查找价格表中产品的价格需要靠产品列和年份锁定唯一值。...原因是:在某些情况下(比如数据量大),LOOKUPVALUE会因为CallbackDataID请求存储引擎查询,导致执行慢、低性能、丢数据。此时,请考虑方案3。

6710

DAX学习分享:十条经验

很多人说国内的学习资料太少,在学习的过程中坎坷不断,我与大多数PowerBI学习者一样,一边读外文的博客摸索一边铺路,在不断尝试和与人分享的过程中,总结了个人认为最宝贵的十条DAX学习经验,分享给读者。...而这不同的语境就好比DAX的“上下文”。使用不同的切片器、筛选器、数据透视表的行和列,都会创造不同的“语境”(筛选上下文)。在不同的表中新建计算列,也会有不同的“语境”(行上下文)。 ?...自然而然,度量值、计算列在不同的语境下输出的结果也会不同。这个道理就是“毕竟西湖六月中,风光不与四时同”。懂得了这点,你会少走很多弯路。 ? 所以,第一条经验是,在写公式之前,先理解上下文是什么。...二 使用度量值,而不是计算列 在PowerBI中有三个地方可以写DAX公式:度量值、列、表。这三者理想的使用频率是由大到小,度量值>列>表。 ?...下图这个图是我经常用来脑补DAX的工作原理,度量值和计算列都是先执行筛选再来计算,而所谓的“DAX用作查询语言”其实就是主要应用了筛选功能,所以某些观点“DAX查询将取代数据透视表”是没有道理的,一个东西你只用了一半的功能

3.3K41
  • Thinking in DAX with PowerBI - 逻辑框架 - 计算逻辑

    在任何关于 DAX 的资料里,只会告诉你 DAX 中存在两个上下文:筛选上下文和行上下文,但没有任何资料讲它们为什么要存在。就好像是上帝,说要有光,于是就有了光,那为什么要有光呢?...我们后续会计算展示不同数据结构的使用,但这些仅仅是《Thinking in DAX》的一个部分哦。 计算逻辑 这是本文的重点内容了。...结构,就是因为当你习惯大脑用顺序思考问题时,自然用这种结构很贴合人的思考过程。 DAX 中的分支逻辑 首先,我们要看懂什么是顺序逻辑,如下: ? 在 DAX 中,如何表示分支逻辑呢?...在反复的重复中,这个思维模式会变成自然的习惯,从大脑进入身体内化成自然的身体反应。 接着,大脑思考业务问题,手中流淌出 DAX 公式,如是而已。...本文详细阐述了计算方法中的三大逻辑以及在 DAX 中的实现并本质地揭示了行上下文的运行逻辑,最后给出了大家修炼 DAX 运算能力的建议。

    1.6K62

    Power BI DAX 中的表以及概念澄清 - 99% 的人没搞懂

    DAX 的世界,其实,也非常混乱。为什么用了一个也字呢?读完本文,你就懂了。 正如很多人说自己熟悉 Excel ,但问一个基础问题时: 在 Excel 中,到底什么是表?...在 DAX 中,大概会看到与表相关的概念如下: 表,基础表,基表,表引用,列引用,临时表,表表达式,桥表,计算表,维度表,事实表,中间表,一维表,二维表,汇总表,矩阵表等等。...表引用与列引用 SUM 是一个最基本的函数,本来没有什么好说的。但很快人们会遇到: 这里出现了第一个重要的名词:列引用。...那么 SUM 的准确注解应该是:SUM 的参数,列引用,指向基表中的列,SUM 将对该列的所有数值求和。 随着对 DAX 使用,会继续发现: 此时,会看到:SUMX 的第一个参数叫:表。...其中的列,叫:基列。 明确的概念 根据以上极为严谨的逻辑,我们得到了两个重要的概念: 表(table) ,可以在 DAX 公式中使用的语法元素,它表示一个表结构。

    1.8K50

    从SUM让人看看PowerBI DAX的坑爹之深

    现给出结论:在DAX中不存在真正的SUM。...很多人一定懵了,DAX 在被设计的时候被刻意地与Excel函数的用法做了贴近,而导致PowerBI的运算可以很快入门,但很快就会遇到一个普遍现象:DAX的计算结果和你期望的结果完全不同,而你无法解释为什么...SUM的迷思 从一道经典的问题来看: ? 用户在订单表创建了一个计算列,并写入一个简单的公式,在按下回车的时候,每行的值应该是多少?请思考10秒继续。...真正的原因在于:在DAX中,是不存在SUM的,任何的SUM在计算时都会转化成SUMX。...回到这个问题来看,这里确实不会忽略行上下文,而是将SUM转换成了SUMX,并进入SUMX进行计算,而SUMX将创建新的迭代过程,在表中逐行迭代,进而得到了整列的聚合结果。

    3.1K20

    上下文系列小讲堂(回顾1)

    常规情况就是这样 那我们再来看下如果不按常规会有怎样的后果 把涉及概念性的操作经常这样反方向尝试,有助于深入理解上下文本质 (一)计算列里使用SUM函数 ?...别急着往下看,自己先思考一下,这个“总销量”的计算列,使用SUM后会出现什么效果 ...... ...... ...... 1. 由于是计算列,所以DAX会自动创建“行上下文” 2....(二)度量值里引用列 在度量值下,直接采用列运算会有什么结果 ? ? 公式栏里,无论是第一种直接引用列,还是第二种表名列名绑定一起,都会出现错误提示 说明在度量值里,这种方式是不允许的 为什么会这样?...因为度量值不会自动创建“行上下文”,而计算列可以,所以在语法源头上就出错了 (三)度量值里使用聚合类迭代函数(SUMX) 从语法上来说,度量值就是由DAX函数构成的,迭代函数也是DAX的一种,自然更没障碍...根据不同的可视化元素,度量值(利润)做出相应汇总 至此,我们再次认识到 ★行上下文”只告诉DAX该使用数据模型的哪一行,任何时候都无法筛选模型,也无法覆盖外层的筛选上下文 ★“筛选上下文”只能依靠报表视图各类筛选器的叠加组合来产生

    1.1K20

    PowerBI 基于移动平均及最小二乘法的动态趋势预测

    一个很自然的问题就来了,这个线是否有方程,我们可以让预测按趋势线延长吗? 很可惜这个问题在 Power BI 中是不行的。...最小二乘法 我们发现趋势线的计算在 Power BI 中其实是采用了最小二乘法,那么如果我们可以实现最小二乘法,我们就可以绘制这个趋势线,进而自行去延长了。 下面来详细说明最小二乘法的实现。...感兴趣的伙伴可以自行搜索关于最小二乘法的的求解过程以及更一般化内容,这是一项非常重要的数学发现以及有很强的实用价值。它大致在高中和大学一年级时是标准的教学内容。...给出其 DAX 实现如下: KPI.Forecast.LeastSquaresMethod = // 初始化设置 // 参数 1:原列区间列引用,如:'Calendar'[年份序号] // 参数 2:...如上图所示,没有办法显示趋势线的延长部分,我们使用自行实现的最小二乘法进行修复如下: ? 可以看出,PowerBI 内置的趋势线的确是最小二乘法的实现,这与我们实现的最小二乘法完全吻合。

    2.7K22

    【致知篇57】DAX CALCULATE vs. Tableau LOD:从SUM+IF条件计算到SUMIF

    01—不同工具中的SUM+IF 在2022年写作《数据可视化分析2.0》的过程中,我补充了此前的一个关键知识盲区:指标分类、条件计算。 聚合是分析的本质过程,聚合度量的业务形态则是指标。...在没有学习PBI的 DAX之前,我误以为只有一种条件计算的逻辑,就是SUM+IF,殊不知在Excel及其体系中,还有一个性能优化plus方案——SUMIF方案。...我在2021年5月写过一篇博客,题名“【高级】Tableau性能优化之关键:两种计算对性能的影响实证”(见于yupengwu.com),介绍过不同的筛选方法对性能的巨大影响。...从SQL的优先级来看,WHERE是早于GROUP BY,也早于SELECT的,这样就实现了下图中右侧的计算方案: 理解了上述EXCEL、SQL的过程,就可以轻松地理解,为什么DAX设计了一个专门的CALCULATE...CALCULATE(聚合表达式, FILTER条件) 通过在每一个度量中单独指定filter计算条件,DAX可以在引擎中将其优先级提前,从而避免了SUM+IF的低下性能。

    11800

    Extreme DAX-第4章 上下文和筛选

    定义计算列的 DAX 公式在表中的每一行分别计算一次。计算结果通常特定于对应的行。原因是,同一表中其他列中的值被用在计算中,而这些值在每行中一般是不同的。...注意,在计算列中直接对某些列进行引用时,只能对当前计算所在的行上的列值起作用,如果要从其他行中检索值,您需要采用完全不同的方法。这与 Excel 中的计算完全不同。...显然,使用 CALCULATE 计算的两个度量值返回了不同的结果。为什么会有这种差异呢?...换句话说:激活另一个关系意味着更改计算的上下文。而改变上下文自然要用到 CALCULATE。 USERELATIONSHIP 函数需要两个参数,是对想要激活的关系的两端的列引用。...更重要的是,在整个度量值的书写过程中,不同位置的上下文可能完全不同,在得到正确结果的道路上往往会出现各种问题。 DAX 变量,使得这类设计高级 DAX 代码的工作变得轻松了不少。

    5.8K21

    理解上下文

    2.Calculate是DAX中最有力量的函数,它可能无处不在,我来带你识别隐藏的Calculate。 ? 什么是上下文?...筛选上下文最容易理解,是纵向的列筛选条件。比如下面的表中销售量2974的筛选上下文是"2016年-第2季度-拿铁",即对日期列和咖啡种类列的筛选。 ? 行上下文,顾名思义,是要横向的看。...在原材料表中新建列[咖啡数量] = sum('咖啡数据'[数量]),结果是每一行都是同一个结果54245。这是为什么呢? ?...以第一行卡布奇诺行为例,在计算咖啡数量时,行上下文是原材料表中的当前行,而计算的公式sum('咖啡数据'[数量])是求数据表中的[数量]列的和。...两者在不同的表中,所以原材料表的行上下文对数据表的计算并没有影响,输出的结果为咖啡数据表中数量列的总计。

    1.6K21

    《DAX进阶指南》-第6章 动态可视化

    所有其他关系位于两个表中具有相同名称的ID列之间。 销售数据可提供许多不同的视图,在同一报表页上为每个视图放置单独的视觉对象会导致报表单一而并非有见地。...在模型中,我们现在辅助表上有一个上下文查询,我们可以使用DAX来确定所做的选择。如果在“代码”列上使用DAX的SUM函数,则二次幂可确保所选项的每个组合对应于代码值的唯一总和。...由于其他日期列中的值可能不同,因此我们需要调整12个月滚动总计的DAX公式以使用正确的日期列。 同样,我们需要一个辅助表来允许我们在日期列之间进行选择。...6.3.1解决方案概述 动态标签与前面讨论的动态度量值之间的根本区别在于,视觉对象中的标签无法通过计算结果填充。相反,标签使用模型中单个列的值。不过,我们要使用的标签来自模型中的三个不同表。...图6.8 辅助轴表 在创建此计算表的公式中,定义了三个DAX变量,每个变量创建辅助表的一部分。以下是第一个变量。

    5.7K50

    DAX 2 - 第一章 什么是 DAX

    在关系的一端,列的每一行都必须是非重复的唯一值,并且不能包含空值(注意:空值与空格概念不同,空格也是值)。在关系的多端,相同的值可以在许多不同的行中重复,而且经常如此。...在图 1-5 中,SalesAmount 列中计算的表达式没有引用工作簿中的单元格,而是引用该表的列: ?...你可能认为 Excel 有两种不同的计算方式,我们可以标准引用单元格,单元格 F4 的公式显示为 E4*D4,或者在表中引用列。...在 Excel 中,公式仅在这个表中运行,我们不需要添加表前缀。但是,DAX 需要对数据模型里的许多表进行操作,因此,我们必须特别指明表名(可能不同表中的两列的列名相同)。...因为我们在聚合函数中用了列名称(此例聚合函数为 SUM 函数),这让列名变成一个整体参数,导致 DAX 认为我们要这一列的所有值的总和。

    4.7K30

    Extreme DAX-第3章 DAX 的用法

    在本章中,我们将简要介绍 DAX 在 Power BI 中的不同用法。 计算列 计算表 度量值 安全筛选器 DAX 查询 除此之外,我们还将讨论如何使用 DAX 创建日期表。...尤其是当您经常使用 Excel,这个操作会非常自然且顺手,因为大多数 Excel 用户借助 Excel 工作时都是直接在列中写公式进行计算。...这与 DAX 和 Power BI 报表的动态特性相悖。 计算列的问题在于,大多数情况下,这些操作属于数据准备层面,或者属于我们在第1章“商业智能中的 DAX”中讨论的五层模型中的“数据预处理”层。...3.7.1 首先考虑使用 DAX 度量值 如果在上文中没有足够地表达清楚,那么容我再重复一边:您的主要 DAX 工具应该是度量值。...总结 在本章中,你已了解 DAX 在 Power BI 模型中的不同用法:计算列、计算表、度量值、安全规则和查询。

    7.2K20

    【DAX 系列】高清图解迭代原理并弃用 EARLIER

    对于一个表的迭代,由于表是行的集合,每一行都表示同类事物的不同个体,如:不同的每一笔订单。很自然地可以将对表的迭代理解为对表中的行集合的迭代。...在遍历的时候一般顺便可以做点坏事,例如,记住遍历过的每个值,这样就有了: SUM.Value = SUM( SomeTable[Value] ) \\ 本质上等价于:SUM.Value = SUMX(...ADDCOLUMNS,迭代时,添加一列,并算出对应行中的元素。 干得坏事是加一列。 因此,我们可以发现:迭代 + 干坏事是不可分割的整体。...因此,在 DAX 中,所有带有需要处理集合中元素语义的功能都是干坏事,都内部包裹了一个看不见的迭代器。 总结 迭代,是很自然的。...记得,在迭代的时候做坏事,不做坏事,DAX 不爱。 祝你玩得开心。

    1.2K10

    学习CALCULATE函数(三)

    数量= SUM('表'[列])//这里我替换成了示例文件 这是我们熟悉了很久的基础代码,聚合。 [1240] 首先缕清思路,求总体占比就是求出当下各品类的数量以及总体的情况进行除法运算。...[1240] 当然,我不光想知道总体占比,我还想知道各个产品在各自所属的类别中是怎么个情况,来,继续: 修改上面的代码如下: 分类占比= CALCULATE('表'[求和项],ALL('表'[类别]))...//这里需要自己替换数据 结果如图: [1240] 很清楚的体现不同名称的销售额在其所属的类别中占比情况。...这里做一下总结: 计算总体占比 DAX= DIVIDE(SUM('表'[求和项]),CALCULATE(SUM('表'[求和项]),ALL('表'))) 计算分类占比 DAX= DIVIDE(SUM('...表'[求和项]),CALCULATE(SUM('表'[求和项]),ALL('表'[项目]))) 计算筛选总体占比 DAX= DIVIDE(SUM('表'[求和项]),CALCULATE(SUM('表'[

    96020

    函数周期表丨时间智能丨表丨FIRSTNONBLANKLASTNONBLANK

    严格来说,这两个函数的用途是非常重要的,适用于很多类型的数据,白茶有点搞不懂为什么微软把这两个函数划分为“时间智能函数”。 用途1:可以用来计算数据的非空日期。...语法 语法1: DAX= FIRSTNONBLANK(列>,) 语法2: DAX= LASTNONBLANK(列>,) 参数 列:任何列,或者具有单列的表,也可以是表达式。...表达式:计算空值的表达式,也就是判定条件。 返回结果 单列的表,只有一行数据。也就是只返回一个值,只不过这个值在表中。...如果这里不嵌套CALCULATE函数的话,会导致计算忽略计算上下文,只考虑行上下文,那么呈现的结果将是2020年1月3日。...白茶会不定期的分享一些函数卡片哦。 (文件在知识星球PowerBI丨需求圈) [deb49a4b86e7588aed094a6098e341da.png] 这里是白茶,一个PowerBI的初学者。

    51100

    阅读圣经丨DAX数据类型

    [strip] DAX,也就是数据模型语言,它一共可以执行八种不同的数据类型。...为什么要说一下可以执行的数据类型?因为这个对于我们的运算逻辑会有影响。比如说:我有一个表,其中的一列是日期,那么这个数据能进行汇总统计么?比如说1月1日+2月1日,结果等于3月2日?...比如:SUM('表'销售金额),这就是一个布尔值,也是计算表达式。 文本:文本函数。比如说:我有一组销售事实表,里面有一列是订单号:2019010112034001。...虽然是纯数字的整数,但是这个订单这个名字能直接计算么?比如使用SUM进行聚合,那出来的结果会是一个无限大数值,也不符合我们的计算逻辑,我可能只是想知道近期的订单成交数量。...这就是DAX函数可以执行的八种数据类型,这里提醒各位小伙伴一声,将数据导入PQ中的时候,一定要对数据的格式进行设置,这个很重要。 好啦,就说到这里。 * * * 小伙伴们❤GET了么?

    47140

    函数周期表丨筛选丨表丨ALLSELECTED

    其用途,常常是用来计算或者显示明面上的筛选影响,而忽略其行上下文的影响。 如果说,CALCULATE函数是DAX中最灵活的函数,那么ALLSELECTED函数就是DAX中最复杂,也是最难的函数。...作为ALL函数系列家族中的一员,它并不像其他ALL系列函数那样,可以称得上是个性鲜明。...语法 DAX= ALLSELECTED([ | 列>[, 列>[, 列>[,…]]]] ) 参数 表:(可选项)不能是表达式,现有表的名称。...列:(可选项可重复)不能是表达式,现有列的名称。 注意:要么是表,要么是列;如果是多列,必须在同一表中。返回结果 不带任何列或行上下文的上下文。...白茶会不定期的分享一些函数卡片 (文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]

    1K00

    PowerBI中的排名问题丨RANKX函数

    这个问题是一个特别严重的问题,白茶疏忽了,这里补上一下原因:为什么格式书写很重要?...如下: DAX = CALCULATE ( SUM ( '表'[求和项] ), FILTER ( '表', [条件] = "M" ) ) 3.如果函数和参数太多了,那么左括号"("和函数在一行;参数如果是新行...[1240] 下面是今天的示例文件: [1240] [1240] 这是一份服装销售的模拟数据,将其导入PowerBI中,并且输入如下代码,求出销售金额: 销售 = SUM ( '产品表'[销售价] )...这里解释一下含义,IF不多说了,最基础的判定条件;HASONEVALUE函数的定义当列中只有一个唯一值的时候,返回TURE,没有则为空,因为总计栏没有产品名称这一说,所以排名总计消失。...如果不考虑分组、分类这类东西,ALL整个表;考虑分组、分类要ALL具体的列。 [1240] 这是绝对排名,但是有时候我还想知道筛选之后的结果,比如说就几项,该咋整?

    3.1K20

    【大招预热】—— DAX优化20招!!!

    低效率的DAX会减慢处理速度,阻塞高级容量,增加等待时间,并妨碍刷新和报告加载时间。 在优化DAX之前清除DAX缓存 缓存由内部VertiPaq查询产生。 从DAX Studio中清除缓存。...对于直接查询,因为Power BI无法检查违规,所以Power BI在列中添加了空白值。...DISTINCT()和VALUES()函数不同: 在整个报表中,保持DISTINCT()和VALUES()函数的用法一致。 如果没有空白值,Power BI建议使用VALUES()函数。...Rows]; Ratio = IF(totalRows > 10, SUM(Revenue) / totalRows,0) 您可以将结果度量值存储在变量中,而不必多次计算相同的表达式。...根据列值使用正确的数据类型 如果一列中只有两个不同的值,请检查是否可以将其转换为布尔数据类型(真/假)。 当您有大量的行时,这可以加快处理速度。

    4K31
    领券