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

使用来自另一个过滤表的多个列的条件计算sum DAX PowerBi

基础概念

DAX(Data Analysis Expressions)是Power BI中用于数据分析和建模的公式语言。它类似于Excel中的公式,但功能更强大,适用于复杂的分析需求。DAX中的SUM函数用于计算数值列的总和。

相关优势

  1. 灵活性:DAX允许你创建复杂的计算,如条件求和、时间智能计算等。
  2. 性能:DAX引擎经过优化,能够高效处理大量数据。
  3. 易用性:DAX语法类似于Excel公式,易于学习和使用。

类型

在DAX中,有多种类型的函数可以用于计算,包括但不限于:

  • 聚合函数:如SUM、AVERAGE、COUNT等。
  • 计算列:在数据模型中添加新的列,基于现有列的值进行计算。
  • 度量值:在报表视图中动态计算的值,通常用于可视化。

应用场景

当你需要根据多个条件对数据进行汇总时,DAX非常有用。例如,你可能有一个销售数据表和一个产品分类表,你想计算每个产品类别的总销售额。

示例问题及解决方案

假设你有两个表:SalesProductCategoriesSales 表包含销售数据,ProductCategories 表包含产品分类信息。你想计算每个产品类别的总销售额。

问题

如何使用DAX在Power BI中实现这一目标?

解决方案

  1. 创建关系:首先,在Power BI中创建Sales表和ProductCategories表之间的关系。假设Sales表有一个CategoryID列,ProductCategories表有一个ID列。
  2. 编写DAX公式:使用SUM和FILTER函数来计算每个产品类别的总销售额。
代码语言:txt
复制
Total Sales per Category = 
SUMX(
    VALUES(ProductCategories[CategoryName]),
    CALCULATE(
        SUM(Sales[SalesAmount]),
        ProductCategories[CategoryName] = EARLIER(ProductCategories[CategoryName])
    )
)

解释

  • VALUES(ProductCategories[CategoryName]):获取所有唯一的产品类别名称。
  • CALCULATE:用于根据条件计算值。
  • SUM(Sales[SalesAmount]):计算销售额的总和。
  • ProductCategories[CategoryName] = EARLIER(ProductCategories[CategoryName]):确保只计算当前类别的销售额。

参考链接

通过这种方式,你可以轻松地在Power BI中使用DAX进行复杂的数据计算和分析。

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

相关·内容

“无知之幕”:帆软DEF官方案例之吐槽

我们看看“李启方之流”的一个案例: 举个例子吧,DEF函数的语法是: def(指标, [维度1,维度2,...], [过滤条件1, 过滤条件2,...])...是以函数中维度为分组、函数中过滤条件做过滤,实现对指标的计算。 “比如对这张表,我想计算A城市的销售额,可动态汇总车型、月份等。”...哪怕你只有 Excel 的基础,你都应该知道,这只是一个最简单不过的 SUM+IF 组合,Excel 还可以用 SUMIFS 完成。只需要嵌套筛选条件(过滤)的聚合好了。...只是帆软还没有表计算,这里恨不得把更适合窗口函数完成的事情都称之为 DEF 的功劳(虽然二者都可以完成,但窗口是此处最优解)。 也许,这就是文章不写这个 DEF 函数的原因?...注: 1、帆软的“过滤”,基本对应 Tableau 的“筛选”,但和 PowerBI 中的“筛选”截然不同;‍‍‍‍‍‍‍ 2、帆软没有明确的“详细级别”(LOD)的概念,文章使用了“详细级别(粒度)”

9010

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

但是,Power BI自动过滤所有带有空白值的行。当从具有大量数据的表中查看结果时,这会限制结果集并防止性能下降。 如果更换了空白,则Power BI不会过滤不需要的行,从而对性能产生负面影响。...使用变量而不是在IF分支内重复测量 由于度量是连续计算的,因此[Total Rows]表达式将计算两次:首先用于条件检查, 然后用于真实条件表达式。...KEEPFILTER函数不会覆盖现有的过滤器集。而是使用两者中存在的值的交集,从而保持当前上下文。当您想要在执行计算时维护切片器应用的任何过滤器或在报告级别上使用 此过滤器。...使用FILTER(all(ColumnName))代替FILTER(values())或FILTER(T) bid sqlbi 若要计算独立于应用于列的任何过滤器的度量,请将All(ColumnName...它不考虑表的任何列中包含的空白。 公式的意图更加清晰和自我描述。 将SEARCH()与最后一个参数一起使用 如果未找到搜索字符串,则SEARCH()DAX函数接受最后一个参数作为查询必须 返回的值。

4K31
  • PowerBI 2018年11月更新 支持PowerBI工程式开发

    并粘贴到另一个 PBIX 文件中。其原理如下: 将视觉对象从A文件复制粘贴至B文件,如果B文件具有同样名称的列和度量值则使用,否则则报错,并提供修复错失: ?...参考:PowerBI 实现中国式复杂报表设计 另一个巨大的缺陷是:无法针对某些列单独设置颜色。 在有了按字段设置颜色后,看看优化后的结果: ?...度量值由全局表统一管理;尽量避免计算列,度量值优先;在需要使用计算列的时候,可以在PQ阶段完成;在需要辅助表完成报表计算的时候使用虚拟关系(TREATAS)。...值得一提的是:PowerBI的任何视觉对象都可以转为数据汇总表结构,而这个数据汇总表来自不同字段和度量值的组合运算效果,这个表其实是一个汇总表(对应于Tableau中的表计算),由于PowerBI并不提供表计算...,而作为补偿,PowerBI直接提供DAX进行全局(跨越所有数据,跨越所有粒度)计算,因此也就消除了表计算和行级别表达式的概念。

    4.1K20

    大数据分析工具Power BI(七):DAX使用场景及常用函数

    具体操作步骤如下: 1、在"度量值表"中新建度量值"总营收金额" 度量值DAX公式为:总营收金额 = SUM('2022年点播订单表'[套餐价格])-SUM('2022年点播订单表'[优惠金额]) 注意在...CALCULATE函数是DAX函数中最重要和常用的函数,主要功能是根据指定的条件对数据进行筛选然后按照指定的表达式进行计算,找出满足条件的数据,其用法如下: CALCULATE(表达式,[筛选器1],[...复制 以上"表达式"参数是指对筛选后的数据进行计算的表达式,可以执行各种聚合计算,后续参数是一系列的筛选器,筛选器也可以为空,多个筛选器之间用逗号分割,多个筛选器都满足的数据集合才会被指定的表达式进行计算...以上需求我们可以使用TOTALYTD进行统计,TOTALYTD用法如下: TOTALYTD(表达式,日期列,[筛选器],[截止日期]) 复制 表达式参数代表统计的表达式,日期列参数指定日期时间列,筛选器参数可以过滤数据...度量值DAX公式为:当月工资 = SUM('2021~2022年工资表'[工资]) 在"度量值表"中创建新的度量值"去年同期月份工资" 度量值DAX公式为:去年同期月份工资 = CALCULATE('

    10.2K42

    3.11 PowerBI报告可视化-矩阵:使用计算组改变列小计的计算逻辑及条件格式设置

    Excel是单元格级别的报表,而PowerBI是列级别的报表(本质是透视表),所以有时候在Excel中可以展示的报表在PowerBI中比较难展示。...解决方案虽然可以使用辅助表双层表头和SWITCH度量值(根据表头返回结果)的方案,但是度量值相对复杂。...推荐使用计算组,把汇总列放在列小计上,相对简单还可以复用给别的度量值,而且支持给小计列设置不同的条件格式。举例按上图做一个矩阵,小计列带不同的条件格式。...模型 度量值销量 = SUM(Sheet2[销量])操作步骤 STEP 1点击左侧边栏的模型视图,在菜单栏主页下点击计算组,新建计算组,此时可以在数据窗格的模型下可以看到计算组,命名为Dim_YTD,列命名为...STEP 4 在画布中添加矩阵视觉对象并拖入字段,把省份放入行,把计算组的YTD字段和年月字段放入列,把销量度量值放入值,双击列中的YTD,重命名为“.”

    6510

    一步一步教你制作销售业绩分析报告

    小结:Excel的方式处理日期表最大的优势在于可以随时进行改动,也可以添加列,方便在报表中使用数据。   ...2、使用DAX函数创建日期表   DAX函数创建日期表的方式网上有很多种,这里我就介绍最简单的两种方式:CALENDARTAUTO和CALENDAR函数构建日期表。   ...小结:使用DAX函数创建日期表最大的好处不用外置表格,不用担心文件路径发生改变。这里只是展现了PowerBI DAX函数创建日期表的两种方式。...设置完成后我们就完成了所有图表的工作,接下来进行排版后的效果图 四、总结 本文中展现的报告看似简单,但却使用了了PowerBI的时间智能函数相关核心技术,主要内容有如下: 1、使用Excel表格、DAX...函数以及M函数创建日期表 2、使用时间智能函数DATEADD,TOTALYTD与万能函数CALCULATE进行计算指标 3、使用应用商店的图表控件进行多种类型的KPI展现,并介绍了两种处理方式 注意:PowerBI

    5.4K21

    学习CALCULATE函数(一)

    [1240] 有位大佬曾经告诉过我,如果你深入理解了CALCULATE,那么你就相当于理解了DAX函数的基础,因为它是DAX函数中最灵活多变,也是适应性最强的函数之一。...第一参数是计算的表达式,可以进行各种聚合运算 从第二参开始,是一系列的筛选条件,可以为空,如果是多个筛选条件的话,用半角逗号分隔开 返回结果为筛选出所有筛选条件的交集,并根据第一参的表达式计算出相对应的结果...[strip] 编写如下代码: 数量= SUM('表'[列])//这里我替换成了示例文件 如下图: [1240] [1240] 呈现结果如图,很明显,我们想要的是分别计算销售和退货,这样才符合我们对销售数量的计算...VAR是将变量转换为常量,方便根据外部筛选计算,同时可以节省代码空间;SQ在这里的公式意义是聚合在表中销售方式为“销售”的数量,HQ是聚合“退货”的数量,并且还有在最后进行总数量计算。...这是CALCULATE最经典的用法之一,单条件筛选求和,以后会继续分享学习CALCULATE的其他心得。我是白茶,一个PowerBI的初学者。 * * * 小伙伴们❤GET了么?

    1.2K30

    【DAX 系列】总计行问题终极解决方案

    晕~~~ 理解 PowerBI PowerBI 进行这项计算的主要方式是通过 DAX,考虑到 通用性 和 一般性,DAX 的设计满足: 在可视化层的汇总表的每个单元格都在独立的环境计算。...其实,平时我们使用的度量值是[KPI.Row],之所以出现总计行问题,也是因为没有考虑总计行问题。 在第二步中谈到的兼容计算,就是为了兼容元素,小计,总计,外部筛选等苛刻条件,保持极高的用户友好。...【情况3】多列总计,不同表,同桥 这种情况更加复杂,多列来自不同的表,当然,有个特点是他们有一个共同的桥。 什么是桥表? 在多个一对多关系中,作为共享的多端的表,就是桥表。...度量值: Topic.Value.Display.FromMultiTable.ButSameBirdge = // 多列总计,多列来自不同的表,但共享一个桥表 // 什么是桥表,在多个一对多关系中,作为共享的多端的表...【情况4】多列总计,不同表,无桥 这种情况更加更加复杂,多列来自不同的表,而且没有共同的桥表。如下: ?

    3.7K20

    DAX学习分享:十条经验

    二 使用度量值,而不是计算列 在PowerBI中有三个地方可以写DAX公式:度量值、列、表。这三者理想的使用频率是由大到小,度量值>列>表。 ?...很多人刚开始学习PowerBI时,喜欢使用计算列,然而这意味着你并没有体验到PowerBI的精华。...计算列不是什么新知识,就好像在Excel中使用Vlookup添加一列一样,这一列是基于现有的表基础上做运算,它是“静态”的,运算结果不会因为切片器或透视筛选而变化,当你建立好后,它就会保存在文件中,增加你的内存...下图这个图是我经常用来脑补DAX的工作原理,度量值和计算列都是先执行筛选再来计算,而所谓的“DAX用作查询语言”其实就是主要应用了筛选功能,所以某些观点“DAX查询将取代数据透视表”是没有道理的,一个东西你只用了一半的功能...如果是仅仅完成多个文件的汇总整理,没有后续的分析和可视化工作,你完全可以使用Excel的编辑查询器。 ?

    3.3K41

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

    语法 DAX= ALLSELECTED([表> | 列>[, 列>[, 列>[,…]]]] ) 参数 表:(可选项)不能是表达式,现有表的名称。...列:(可选项可重复)不能是表达式,现有列的名称。 注意:要么是表,要么是列;如果是多列,必须在同一表中。返回结果 不带任何列或行上下文的上下文。...切片器这种,通过一些摆在明面的控制器,来影响计算,筛选的条件,这里称之为显性筛选,即肉眼可见的控制。 例子 模拟数据: [1240] 这是白茶随机模拟的一份数据,很简单。...如果不是深度研究DAX的内部运行原理,以及开发者,后续的东西掌握多了,反而会影响我们对此的使用。 当然,如果以后有时间了,或者实际案例用到这了,白茶会说说后续的事情的。 小伙伴们❤GET了么?...白茶会不定期的分享一些函数卡片 (文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]

    1K00

    2.14 PowerBI数据建模-度量值空值返回0及3个坑点的应对方案

    举例模型度量值销量:Sales = SUM('订单表'[数量])度量值+0:Sales+0 = SUM('订单表'[数量])+0度量值使用条件判断:Sales_IF_Blank = IF(ISBLANK...(SUM('订单表'[数量])), 0, SUM('订单表'[数量]))坑点1 如果是使用星型架构建模,报告中的维度字段来自于维度表,上述方案可以奏效。...如果是单表模型,DAX有一个Auto-Exist机制,当同一个表的两个或多个列被同时筛选时,Auto-Exist机制就会发挥作用,未产生交叉的部分不会做无用计算。...即便用了上述方案,不交叉的部分在矩阵中的行和列中交叉依然会显示空白(不是空值,是没有交叉,什么内容都没有)。在矩阵中使用订单表中的人员和产品,上述方案度量值依然显示空白。...此时,要么将品类合并到产品表中(PowerQuery合并查询或在产品表中使用RELATED新建列),调整成不带雪花维度的星型架构;要么使用ISEMPETY函数,先判断产品表是不是空,然后基于判断结果,控制度量值返回的值

    6310

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

    语法 DAX= ALLEXCEPT(表>,列>[,列>[,…]]) 参数 表:要清除筛选器的表。 列:(可重复)位于第一参数表中,需要保留筛选的列。除了这一列之外,其他列全部不受筛选影响。...注意:不能使用表的表达式和列的表达式。 返回结果 除了保留筛选器的那一列,清除了其他筛选条件的一个表。 例子 模拟数据: [1240] 这是白茶随机模拟的一份数据。...例子1: ALLEXCEPT例子1 = ALLEXCEPT ( '例子', '例子'[类别] ) 结果: [1240] 因为当前上下文环境为行上下文,默认筛选条件为空,结果返回为剔除了保留筛选的列一个表...: [1240] 除了颜色这一列保留筛选之外,清除其他筛选条件,因为当前上下文每组颜色都有多个选项,所以可以利用其特性求组内占比。...白茶会不定期的分享一些函数卡片 (文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]

    73600

    学习CALCULATE函数(三)

    数量= SUM('表'[列])//这里我替换成了示例文件 这是我们熟悉了很久的基础代码,聚合。 [1240] 首先缕清思路,求总体占比就是求出当下各品类的数量以及总体的情况进行除法运算。...这里做一下总结: 计算总体占比 DAX= DIVIDE(SUM('表'[求和项]),CALCULATE(SUM('表'[求和项]),ALL('表'))) 计算分类占比 DAX= DIVIDE(SUM('...表'[求和项]),CALCULATE(SUM('表'[求和项]),ALL('表'[项目]))) 计算筛选总体占比 DAX= DIVIDE(SUM('表'[求和项]),CALCULATE(SUM('表'[...求和项]),ALLSELECTED('表'))) 计算筛选分类占比 DAX= DIVIDE(SUM('表'[求和项]),CALCULATE(SUM('表'[求和项]),ALLSELECTED('表'[项目...白茶会不定期的分享一些函数卡片 (文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]

    96020

    帕累托分析模板

    首先基于该表可以简单地写一个度量值,求销售金额合计。 [销售额]=Sum('销售明细表'[销售金额]) 有了度量值你可以尝试着去构造一张ABC模样的表。...3.Addcolumns的作用是在该All表的后面加入一列“销售额列”,求得每种商品的销售额。 ? 4.Addcolumns的妙处是刚刚添加完的这个“销售额列”可以再次被利用起来。...使用Filter('Addcolumns表', [销售额列]>=currentsales),就可以把[销售额列]大于等于1,420,202的所有商品都筛选出来。 ?...相比之下,我写的公式仅有五六行,而且只用了数据源一张表,思路清晰且算法更优。 ? 在上一篇文章PowerBI大师知识变现能力分析使用到的购物篮分析也是以极简的方法实现了4级难度的模板。...为什么这是实用的模板?主要有三点主要原因: 第一,这个方法并不复杂,任何PowerBI、Excel PowerPivot、DAX的初学者都可以学习掌握,即使不懂你也可以把该模板直接复制使用。

    1.6K30

    DAX - 正确地提出好问题 - 你真的理解SUM吗

    在学习 Power BI 的 DAX 过程中,不免会遇到一些问题和你想的不一致。例如以下问题来自伙伴在实际业务中涉及到的公式,我们来拆解并帮助大家梳理对于 DAX 的理解。...2、在计算 SUM 的时候,FILTER 会创建自己的迭代环境,针对仅有的一行客户,计算:SUM (' 订单 '[数量] ) > 20000 3、在 2 中计算的 SUM (' 订单 '[数量] ),由于在筛选上下文中...条件的,那么 FILTER 的 ALL (' 客户 ') 全部都会返回 TRUE 导致得到全表。...2、关于 DAX 的使用的建议 DAX 的使用是有着清晰规律的,对于业务人员(强调 100 次:业务人员)使用 DAX 往往需要遵循一些套路,而不是像工程师一样要死扣所有细节,或者自己给自己编制一个有问题的陷阱...如图: 相关文章 彻底理解 PowerBI DAX 函数 EARLIER 【DAX 系列】高清图解迭代原理并弃用 EARLIER 从SUM让人看看PowerBI DAX的坑爹之深

    1.1K30

    PowerBI中的排名问题丨RANKX函数

    下面是一些DAX的书写要求: 1.如果参数只有一个,那么参数和函数需要放在一块。如下: DAX = SUM ( '表'[求和项] ) 2.如果参数函数有两个,或者更多参数,那么每个参数一行。...如下: DAX = CALCULATE ( SUM ( '表'[求和项] ), FILTER ( '表', [条件] = "M" ) ) 3.如果函数和参数太多了,那么左括号"("和函数在一行;参数如果是新行...如下: DAX = CALCULATE ( SUM ( '表'[求和项] ), FILTER ( '表', [条件] = "M" && [条件] = "N" ) && FILTER...( '表', [条件] = "S" ) ) 最后,给小伙伴们一个DAX格式网址,会自动将你的DAX代码转换为标准格式: http://www.daxformatter.com/raw/ 具体的使用办法白茶在这里就不一一赘述了...[1240] 下面是今天的示例文件: [1240] [1240] 这是一份服装销售的模拟数据,将其导入PowerBI中,并且输入如下代码,求出销售金额: 销售 = SUM ( '产品表'[销售价] )

    3.1K20

    一个简单现实案例挑战 PowerBI 水平测试 - 深度解析

    某列若有按列排序,则该列和按列排序列是同时参与计算的,按列排序列处于隐藏状态。 业务使用名称列,但同时应该伴随主键列,确保名称唯一性。...而 PowerBI 中使用 DAX 构建公式却没有这样的便利,这是很多业务伙伴无法从 Excel 切换思维到 PowerBI 的重要原因。 而该问题已经在 PowerBI 社区被投票投成了热门: ?...我会将这些内容做一个专门的主题发出,并整理进入我的《PBI 高级》中。 本文的精华包括: 几个 DAX 的深坑; 来自业务本身的坑; 复杂模型层计算的探究; 视图层计算的探究。...这启发了我们做很多问题的方法。另外,它直接将我要提出的 PowerBI DAX 视图级通用计算模式呼之欲出。 你可以再看一遍:视图环境克隆 + 静态化 提出了使用 DAX 的新思路和玩法。...而震撼的 PowerBI DAX 视图级通用计算模式 就要来了。

    2.7K31

    函数周期表丨时间智能丨值丨TOTAL函数系列

    日期:日期列。 筛选器:(可选项)筛选条件。 结束日期:(可选项)用来定义年度结束日期,只有YEAR有,前两者没有。 返回结果 月初/季度初/年初至今的数据值累计之和。...DATESMTD可以用来计算日期生成表,也可以与CALCULATE函数搭配求累计值。 而TOTALMTD只是单纯的计算累计值,用途更纯粹一点。 后续不再对比QTD和YTD,效果都差不多。...例子2: TOTALQTD例子 = TOTALQTD ( SUM ( '销售明细'[销售数量] ), '销售明细'[销售日期] ) 结果: [1240] 逐日累计,计算本季度至今为止的累计值。...到这里,时间智能函数基本上就告一段落了,对于刚开始学DAX的小伙伴来说,这一类函数作为过渡使用是再好不过的了,如果想根据具体的案例去解决具体的问题,那么还需要多多深入了解DAX哦。...白茶会不定期的分享一些函数卡片哦。 (文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]

    75000

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

    函数,当然,有些时候也可以作为“值函数”使用。...语法 语法1: DAX= FIRSTNONBLANK(列>,) 语法2: DAX= LASTNONBLANK(列>,) 参数 列:任何列,或者具有单列的表,也可以是表达式。...表达式:计算空值的表达式,也就是判定条件。 返回结果 单列的表,只有一行数据。也就是只返回一个值,只不过这个值在表中。...如果这里不嵌套CALCULATE函数的话,会导致计算忽略计算上下文,只考虑行上下文,那么呈现的结果将是2020年1月3日。...白茶会不定期的分享一些函数卡片哦。 (文件在知识星球PowerBI丨需求圈) [deb49a4b86e7588aed094a6098e341da.png] 这里是白茶,一个PowerBI的初学者。

    51100

    PowerBI DAX 度量值管理 - 基本编写到高级管理

    符号等)使用大写英文字母,如: SUMX 【必】DAX 表达式中的函数与符号之间使用空格进行分隔,如: Sales = SUM( Order[Value] ) 【必】DAX 表达式中函数的开始括号与函数名称之前不使用空格...创建表有两种方法: DAX 创建 输入数据(也就是 PQ 创建) 推荐使用后者,且不要删除务意义的列,仅做隐藏即可。 这样,将度量值放入表,则有: ?...在 DAX 中,什么时候可以使用名称空间呢? 例如,如果某个部分是来自 ZM 设计编写的度量值,可以用 @ZM: 作为前缀,表示有锅找他。...由于 PowerBI 的 DAX 目前无法实现很多编程类语言的特点,我们只好通过手工的办法做一些记录。 这里在于说明整个模块依赖于这些列引用,原始数据模型必须包括同等语义的列引用。...此时,在定义 @ZM:Z:AC 的时候,就可以依赖注入了,如下: ? 到底 Z 曲线的 AC 值怎么计算的,我们根本不 Care ,它的计算由另外的逻辑独立给出,但我们只是使用这个逻辑即可。

    2.3K21
    领券