首页
学习
活动
专区
工具
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哦。

74000

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] 根据上下文,计算次年销售数量

    47500

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

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

    50900

    学习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.7K21

    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

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

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

    50700

    上下文系列小讲堂(三)

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

    86930

    DAX基础函数

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

    2.6K10

    函数周期丨时间智能丨丨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] 计算每个季度末最后一天销售额

    99900

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

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

    5.6K50

    上下文系列小讲堂(回顾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 中唯一同时创建行上下文和筛选上下文函数。

    95330

    如何在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

    PowerBI DAX 如何使用变量表里

    进一步地,我们想对这个求和,可能会这样写: VAR vResult = SUM( vTable[LineSellout] ) 这里是希望表达计算销售额,但会遭遇一个语法错误,这里不能使用 vTable...解决方案 ,在 DAX 分为模型以及非模型。 直接加载到 DAX 数据模型就是模型,又称为:基(base table)。...如果希望使用基中列,可以使用这样语法[列] 因此, VAR vResult = SUM( 'Order'[LineSellout] ) 是有效正确语法,而 VAR vResult = SUM...( vTable[LineSellout] ) 是无效错误语法。...这一思考,是本质,对于一套公式语言来说,这考察了该语言完备性,如果存在这种情况,则是 DAX 缺失和必须弥补问题了。

    4.3K10

    基础手札丨创建

    一、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了么?

    52420
    领券