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

根据另一个表的条件计算sum的DAX语法

在Power BI中,DAX(Data Analysis Expressions)是一种用于数据分析的公式语言。要根据另一个表的条件计算总和,可以使用CALCULATE函数结合SUM函数和FILTER函数。以下是一个示例:

假设我们有两个表:SalesCategories

Sales表结构如下:

  • ProductID (产品ID)
  • CategoryID (类别ID)
  • Revenue (收入)

Categories表结构如下:

  • CategoryID (类别ID)
  • CategoryName (类别名称)

我们想要计算特定类别的总收入。假设我们要计算类别名称为"Electronics"的总收入。

DAX公式如下:

代码语言:txt
复制
Total Revenue for Electronics = 
CALCULATE(
    SUM(Sales[Revenue]),
    FILTER(Categories, Categories[CategoryName] = "Electronics")
)

解释:

  1. CALCULATE: 这是一个DAX函数,用于根据指定的条件计算表达式的值。
  2. SUM: 这是一个聚合函数,用于计算某个列的总和。
  3. FILTER: 这是一个DAX函数,用于根据指定的条件过滤表中的行。

在这个例子中,CALCULATE函数首先计算Sales表中Revenue列的总和,然后使用FILTER函数根据Categories表中的CategoryName列过滤出类别名称为"Electronics"的行。

应用场景:

这个DAX公式适用于需要在Power BI中根据另一个表的条件进行聚合计算的场景。例如,在销售数据分析中,根据不同的产品类别计算总收入、总利润等。

参考链接:

希望这个解释对你有帮助!如果有更多问题,请随时提问。

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

相关·内容

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

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

75100

DAX 2 - 第一章 什么是 DAX

引用列有如下优点,列的所有单元格都是相同的表达式,Excel 会根据每一行不同的值来计算公式。...DAX 是不一样的,图 1-6 的销售总计在 DAX 中是这样写的: AllSales := SUM ( Sales[SalesAmount] ) 在特定某行取值与将整列视为整体取值,两者的语法没有区别...因此,尽管 Excel 需要一个清晰的语法,来区分要检索的两种类型的数据,DAX 会自动消除语法歧义。至少刚开始接触,这种差异可能会被混淆。...DAX 可以作为编程语言来定义计算列,计算表和度量值。DAX 新提出的计算列和计算表的概念,MDX 里面没有。DAX 的度量值和 MDX 的计算集合类似。...根据我们的经验,一开始当您掌握了一些简单的计算时,您可能会学习热情高涨,但一旦开始学习计算上下文和 CALCULATE(DAX 语言中最复杂的主题),一切看起来都很复杂,您的学习热情可能会减退,但请不要放弃

4.7K30
  • 函数周期表丨时间智能丨表丨NEXT系列

    隶属于“表函数”。 无论是语法还是用途方面都是比较类似的,统一打包处理! 用途1:生成日期表。初始为次日/次月/次季度/次年。 用途2:计算相对应范围的数据值。...语法 语法1: DAX= NEXTDAY() 语法2: DAX= NEXTMONTH() 语法3: DAX= NEXTQUARTER() 语法4: DAX= NEXTYEAR(<...例子2: NEXTDAY例子2 = CALCULATE ( SUM ( '销售明细'[销售数量] ), NEXTDAY ( '销售明细'[销售日期] ) ) 结果: [1240] 根据当前上下文计算次日销售数量...,计算次季度的销售数量。...例子8: NEXTYEAR例子2 = CALCULATE ( SUM ( '销售明细'[销售数量] ), NEXTYEAR ( '销售明细'[销售日期] ) ) 结果: [1240] 根据上下文,计算次年销售数量

    48300

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

    语法 语法1: DAX= OPENINGBALANCEMONTH(,[,]) 语法2: DAX= OPENINGBALANCEQUARTER(,[,]) 语法3: DAX= OPENINGBALANCEYEAR(,[,][,]) 参数 表达式:用来计算数据的表达式。...日期:包含日期的列。 筛选器:(可选项)应用于当前上下文的筛选条件。 结束日期:(可选项)此项只有年度函数有,前两者没有,用来定义年度结束日期。...2: ENDOFMONTH例子 = CALCULATE ( SUM ( '销售表'[购买数量] ), ENDOFMONTH ( '销售表'[订单日期] ) ) 对比结果: [1240] 对比后两者,后两者的作用是为每个月的每日匹配期末的数值...例子3: OPENINGBALANCEYEAR例子 = OPENINGBALANCEYEAR ( SUM ( '销售表'[购买数量] ), '销售表'[订单日期] ) 结果: [1240] 为年度匹配上一年度的期末数值

    51900

    学习CALCULATE函数(一)

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

    1.2K30

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

    当你跨过了经常犯一些低级错误的菜鸟阶段(如不知道要使用哪些 DAX函数、语法不正确或忘记括号等)之后,你在使用 DAX 时可能要天天和上下文打交道。...图4.2 添加 Year 计算列(为便于阅读,删除了部分列) 在使用 RELATED 函数时要注意一个限制条件:关系的另一端必须是“一”端,也就是说,另一个表(在此示例中为 Date 表)中的相应的列必须具有唯一值...SUM 函数计算表中所有行的总和,即使我们处于单个行的行上下文中也是如此。对于 DAX 初学者来说,这通常是一个令人惊讶的发现。...让我们看另一个示例,这次是 Date 表中的计算列: TotalShipping = SUM(fSales[ShippingCosts]) 同样,您将在每行中找到相同的结果,即使 fSales 表和...FILTER(Cities, Cities[Country] = "Germany") TOPN:与 FILTER 一样,TOPN 返回表中行的子集。根据某些条件,将返回表中最上面或最下面的几行。

    5.8K21

    yhd-ExcelVBA根据条件查找指定文件的数据填写到当前工作表指定列

    yhd-ExcelVBA根据条件查找指定文件的数据填写到当前工作表指定列 【问题】当我们要用一个表的数据来查询另一个表的数据时,我们常常是打开文件复制数据源表的数据到当前文件新建一个数据表,再用伟大的VLookup...【解决方法】个人感觉这样不够快,所以想了一下方法,设计出如下的东东 【功能与使用】 设置好要取“数据源”的文件路径 data_key_col = "B" data_item_col = "V"为数据源的...key列与item列 this**是当前的数据表的要的东东 Sub getFiledata_to_activesheet() Dim mydic As Object, obj As Object...设定初始数据====================================、 file = "F:\家Excel学习\yhd-Excel\yhd-Excel-VBA\yhd-ExcelVBA根据条件查找指定文件的数据填写到当前工作表指定列...\201908工资变动名册表.xls" file_sht = "工资变动名册" data_key_col = "B" data_item_col = "V" '===要取的数据的列

    1.6K20

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

    [1240] ALLSELECTED函数 ALLSELECTED函数,被微软划分为“筛选”类函数,隶属于“表函数”。其用途,常常是用来计算或者显示明面上的筛选影响,而忽略其行上下文的影响。...如果说,CALCULATE函数是DAX中最灵活的函数,那么ALLSELECTED函数就是DAX中最复杂,也是最难的函数。...语法 DAX= ALLSELECTED([表> | [, [, [,…]]]] ) 参数 表:(可选项)不能是表达式,现有表的名称。...切片器这种,通过一些摆在明面的控制器,来影响计算,筛选的条件,这里称之为显性筛选,即肉眼可见的控制。 例子 模拟数据: [1240] 这是白茶随机模拟的一份数据,很简单。...例子2,计算相对占比: 代码1: ALLSELECTED例子2 = SUM ( '例子'[数据] ) / CALCULATE ( SUM ( '例子'[数据] ), ALLSELECTED ( '例子'

    1K00

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

    我们看看“李启方之流”的一个案例: 举个例子吧,DEF函数的语法是: def(指标, [维度1,维度2,...], [过滤条件1, 过滤条件2,...])...是以函数中维度为分组、函数中过滤条件做过滤,实现对指标的计算。 “比如对这张表,我想计算A城市的销售额,可动态汇总车型、月份等。”...哪怕你只有 Excel 的基础,你都应该知道,这只是一个最简单不过的 SUM+IF 组合,Excel 还可以用 SUMIFS 完成。只需要嵌套筛选条件(过滤)的聚合好了。...比如(帆软IF 语法可能略有差异): SUM_AGG(IF [${城市}="A" THEN ${销量}*${单价}) END) 这么一看,上面兴师动众的整个 DEF_ADD,简直就是“脱裤子放屁,多此一举...只是帆软还没有表计算,这里恨不得把更适合窗口函数完成的事情都称之为 DEF 的功劳(虽然二者都可以完成,但窗口是此处最优解)。 也许,这就是文章不写这个 DEF 函数的原因?

    9010

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

    严格来说,这两个函数的用途是非常重要的,适用于很多类型的数据,白茶有点搞不懂为什么微软把这两个函数划分为“时间智能函数”。 用途1:可以用来计算数据的非空日期。...语法 语法1: DAX= FIRSTNONBLANK(,) 语法2: DAX= LASTNONBLANK(,) 参数 列:任何列,或者具有单列的表,也可以是表达式。...表达式:计算空值的表达式,也就是判定条件。 返回结果 单列的表,只有一行数据。也就是只返回一个值,只不过这个值在表中。...如果这里不嵌套CALCULATE函数的话,会导致计算忽略计算上下文,只考虑行上下文,那么呈现的结果将是2020年1月3日。...SUM ( '示例'[销售] ) ) ) ) 结果: [9587867d40a9833c335b4d042e622527.png] 求出每个人员第一笔不为空的销售额。

    51100

    上下文系列小讲堂(三)

    初识筛选上下文 介绍过“行上下文”,我们再来看看“筛选上下文” 先来建个度量值“总销量 = SUM ( '销售表'[销量] )”,把它扔进“条形图” ?...不过,再回顾一下“总销量 = SUM('销售表'[销量])”,公式里明明没有限定按大类还是小类,可图中怎么会自动根据大类显示了汇总? 如果把“小类”再拖进去呢,会有什么结果 ?...显然,这个度量值会根据矩阵环境的变化而对汇总进行自动匹配 同理,继续加入其他过滤条件,度量值的范围也会跟随条件越来越精细 ? ?...还记不记得前文“行上下文”的时候,也提过这个问题 度量值不会创建“行上下文”,那必定存在另一种上下文——对,就是“筛选上下文” 不单单是上面这个汇总公式SUM,几乎所有的DAX公式,都会根据筛选上下文而给出不同的结果...,单元格内的值也会随之不同 所有的这些筛选决定了该单元格的“筛选上下文”,DAX公式在计算前,将先把筛选上下文应用到数据模型,得到筛选子集后,再进行计算 因此,筛选上下文是多个筛选的集合,这便是它的入门定义

    87530

    DAX中的基础表函数

    当需要编写DAX查询和迭代表的高级计算时,表函数非常有用。本文会介绍相关的计算示例。 本文的目标是介绍表函数的概念,而并非提供所有DAX表函数的详细说明。...在定义度量值或计算列时,我们使用的都是标量表达式,如下面的示例所示: = 4 + 3 = "DAX is a beautiful language" = SUM ( Sales[Quantity...我们要介绍的第一个函数是FILTER,它的语法如下:  FILTER ( , ) FILTER函数接受一个表和一个逻辑条件作为参数,并返回满足条件的所有行。...如果一个条件比另一个条件更具约束性,则最佳方法是首先在内层的FILTER函数中应用最具约束性的条件。...ALL函数根据使用的参数返回表的所有行,或者一个或多个列的所有值。

    2.7K10

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

    语法 语法1: DAX= ENDOFMONTH() 语法2: DAX= ENDOFQUARTER() 语法3: DAX= ENDOFYEAR( [,]) 参数 日期:可以是日期列...可选项:这个参数只有ENDOFYEAR函数有,前两者没有,用来定义年末结束日期使用的。 返回值 单列的表,只有一行数据。也就是只返回一个值,只不过这个值在表中。...例子3: ENDOFMONTH例子3 = CALCULATE ( SUM ( '例子'[销售] ), ENDOFMONTH ( '例子'[日期] ) ) 结果: [1240] 计算每月最后一日销售额,达到半累加的目的...例子4: ENDOFQUERTER例子1 = ENDOFQUARTER ( '例子'[日期] ) 结果: [1240] 根据行上下文匹配季度末最后一日。...例子6: ENDOFQUARTER例子3 = CALCULATE ( SUM ( '例子'[销售] ), ENDOFQUARTER ( '例子'[日期] ) ) 结果: [1240] 计算每个季度末最后一天的销售额

    1K00

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

    如果你需要有关 DAX 筛选器函数的更多信息,请参见第4章。在此过程中,我们将根据我们的特定需求调整此基本计算,代码如下。...可以使用DAX公式将辅助表创建为计算表。...例如,总和5只能是同时选择“销售额”和“12个月滚动”的结果。因此,根据SUM('TimePeriod'[Code])的结果,我们可以决定选择哪种计算方式。...由于DAX公式的结构方式,对于标签类型的每个选项,都会创建与另一个表(城市、客户或产品)的虚拟关系。这些表上的真实关系将筛选器传播到模型中的其他表上。...可以通过DAX度量值来获取以切片器中所选内容这种形式的用户输入。SWITCH函数用于根据用户输入选择适当的计算。

    5.7K50

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

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

    1.1K20

    Power BI: 理解SUMMARIZE

    聚类是 SUMMARIZE 用来计算其结果的一种技术,我们使用只有七行的表来引入聚类。...聚类是基于用于分组的列创建分区。SUMMARIZE 首先根据颜色对表进行聚类,然后通过创建筛选上下文来计算每个聚类的表达式。...因为我们按 Sales[Color] 分组,SUMMARIZE 根据颜色将 Sales 表拆分为三个集群。 因为我们按颜色分组,所以每个集群都由一种颜色标识。...集群准备就绪后,SUMMARIZE 计算三个集群的 SUM (Sales[Amount]) 值。为了将计算限制在单个集群中,SUMMARIZE 不会创建仅包含集群标头的筛选上下文。...2 行上下文和筛选上下文 SUMMARIZE 的另一个方面是它是 DAX 中唯一同时创建行上下文和筛选上下文的函数。

    99330

    如何在DAX Stadio和Excel中返回表和度量值?

    需求:我们需要计算销售量大于10000的求和,我们可以使用度量值公式 calculate(sum('销售表'[销售量]),FILTER('销售表','销售表'[销售量]>10000 其有2个步骤: 筛选出销售量...在DAX Studio中返回度量值 如果我想计算大于10000销售量的个数,则需要书写度量值 calculate(COUNTROWS('销售表'),FILTER('销售表','销售表'[销售量]>10000...在Excel中返回表 在DAX Statio中,我们可以通过导出这里选择链接回表(Linked)选项 ? 在运行后返回到Excel中的表就能在结果表中查看到编辑DAX的选项, ?...这时我们就可以在编辑DAX这里直接进行编辑,其返回的结果也会根据DAX函数进行变更。 ? 4....[条件数量]:在度量值下所指定的具体某个度量值 使用技巧:和输入DAX函数一样,我们在关键的地方输入符号引用就可以快速的选择所对应的值。 ? ? ? ?

    2.6K10

    基础手札丨创建表

    一、SELECTCOLUMNS函数 语法: DAX= SELECTCOLUMNS(Table,Name,scalar_expression[,Name,]…) 第一参数Table:任何返回表的DAX表达式...二、ADDCOLUMNS函数 语法: DAX= ADDCOLUMNS(Table,Name,scalar_expression[,Name,]…) 第一参数Table:任何返回表的DAX表达式。...第三参数表达式:任何标量的DAX表达式。 相对于SELECTCOLUMNS函数的最大区别是,它可以在原表的基础上添加列。 开始在PowerBI中进行实验。...这里解释一下各部分的意义: ADDCOLUMNS—这里是添加在原有数据的基础上,添加新列,受后面的条件限制。 DISTINCT—这里是进行重复值去重。...SELECTCOLUMNS—根据'创建'这个表格中'名称'这一列,生成名为'新名称'的列,当然,它是含有重复值的。 CALCULATE是生成对销售数据的汇总。 小伙伴们,GET了么?

    53320
    领券