PowerBI DAX语言学习笔记 【CALCULATE、FILTER、ALL、RELATED】(一)

一、了解上下文

行上下文:行上下文指的是当前正在计算的那一行的数据。

筛选上下文:当前数据模型中的筛选状态,通常是由用户在数据透视表或其他可视化组件中所做的选择形成的。

二、DAX

(一)CALCULATE筛选计算函数

顾名思义,既可以筛选,又可以计算。

【举例】假设你有一个销售数据表 Sales,其中包括 DateProductSalesAmount 字段。你可以创建一个计算度量值来表示总销售额:

1、疑惑问题的回答

  • 与度量值的区别?

        Total Sales = SUM(Sales[SalesAmount])

        这个表达式本身并没有任何筛选逻辑。这意味着,如果你直接在报表中使用这个度量值而不附加任何额外的筛选条件,它将总是返回整个SalesAmount列的总和,无论你在数据模型中的其他地方如何筛选数据。

  • 不带筛选器

        Total Sales by Filter = CALCULATE(SUM(Sales[SalesAmount])) ——不带筛选器

        尽管这里没有明确给出筛选参数,但是CALCULATE函数会考虑来自报表或数据透视表的上下文筛选器。当这个度量值在一个数据透视表或可视化中使用时,它会根据用户在该报表上的选择(例如通过切片器、行或列标签等)来动态地改变其计算结果。

  • 带筛选器:

        Total Sales on Specific Date = CALCULATE(SUM(Sales[SalesAmount]), 'Sales'[Date] = "2024-09-10")

        这个度量值总是计算2024年9月10日这一天的销售额,不管报表中的其他筛选条件是什么。即使用户在报表中选择了不同的日期或者其他过滤条件,这个度量值仍然只会返回2024年9月10日的销售额。

2、CALCULATE(【表达式】,【筛选器】)

(1)表达式可以是哪些?

  • 聚合函数:如 SUMAVERAGECOUNTMINMAX

        Total Sales = CALCULATE(SUM(Sales[SalesAmount]))

  • 度量值(Measures):已定义的度量值可以直接作为表达式。
  • 复杂计算

        Total Sales Weighted = CALCULATE(SUMX(Sales, Sales[Quantity] * Sales[Price]))

(2)筛选器可以是哪些?

  • 单值筛选:如等于某个特定值。

        Sales for Product A = CALCULATE(SUM(Sales[SalesAmount]), Sales[Product] = "Product A")

  • 多值筛选:如包含多个值的列表。

        Sales for Products A and B = CALCULATE(SUM(Sales[SalesAmount]), Sales[Product] IN {"Product A", "Product B"})

  • 表达式:如使用 FILTERRELATEDTABLE 等函数来定义筛选条件。

        Sales in Current Year = CALCULATE(SUM(Sales[SalesAmount]), FILTER(Sales, Sales[Year] = YEAR(TODAY())))

  • 日期和时间智能筛选:如使用 DATESBETWEENDATEADD 等函数来定义日期范围。

        Sales in Last Quarter = CALCULATE(SUM(Sales[SalesAmount]), DATESBETWEEN(Sales[Date], TODAY() - QUARTER(YEAR(TODAY())), TODAY()))

  • ALL函数:筛选器调节——移除指定列的筛选器,返回一个未受这些列筛选的表

        如果用户在数据透视表中选择了一个特定的颜色(例如红色),那么正常情况下         SUM('Sales'[SalesAmount]) 将只计算红色商品的销售额。但是,使用 ALL('Sales'[Color])         后,CALCULATE 函数会忽略颜色的筛选条件,计算所有颜色的总销售额。

        Total Sales All Dates = CALCULATE(SUM('Sales'[SalesAmount]), ALL('Sales'[Date]))

        如果你想同时忽略颜色和地区的筛选条件,可以这样写:

        Total Sales All Colors and Regions = CALCULATE(SUM('Sales'[SalesAmount]),         ALL('Sales'[Color]), ALL('Sales'[Region]))

3.CALCULATETABLE(Expression, [Filter1], [Filter2], …)

  • CALCULATE类似,但返回一个表而不是一个标量值。
  • 例如,CALCULATETABLE(SUMX(Sales, Sales[Amount]), Sales[Date] = "2024-09-10")

(二)FILTER(【表】,【筛选器】)

        计算某个特定产品(如Product A)的销售额:

        Total Sales for Product A = CALCULATE( SUM(Sales[SalesAmount]), FILTER(Sales,         Sales[Product] = "Product A") )

        FILTER(Sales, Sales[Product] = "Product A")创建了一个新的表,该表仅包含产品为"Product         A"的行。然后,CALCULATE函数使用这个筛选后的表来计算SalesAmount的总和。

【补充 FILTER和CALCULATE筛选的区别】

  • CALCULATE函数筛选条件简单(如基于列等于某个值或属于某个集合)。

Total Sales on Sep 10 = CALCULATE( SUM(Sales[SalesAmount]), 'Sales'[Date] = "2024-09-10" )

  • FILTER函数筛选条件复杂,(如多个条件的组合、逻辑运算符的使用等)。
  • FILTER函数返回一个经过筛选的新表,然后CALCULATE使用这个新表来执行计算。

Total Sales for Product A in Sep 1 to Sep 10 = CALCULATE( SUM(Sales[SalesAmount]), FILTER( Sales, Sales[Date] >= "2024-09-01" && Sales[Date] <= "2024-09-10" && Sales[Product] = "Product A" ) )

(三)关系函数

【补充】

1.多端找一端【RELATED

  • RELATED从一个表获取与当前上下文相关的数据行,并从中提取某一列的值
  • LOOKUPVALUE(Table, Lookup_Column, Lookup_Value, Return_Column_Name)

Table:你要从中查找数据的表。
Lookup_Column:用于查找的列名。
Lookup_Value:要在Lookup_Column中查找的值。
Return_Column_Name:返回该列中的值。

查找特定值,并返回与之对应的另一个列的值。

【举例】

LOOKUPVALUE( Prices, Prices[ProductID],Sales[ProductID], Prices[LatestPrice])

在Prices表中查找与当前Sales行中的ProductID匹配的行,并返回该行的LatestPrice列的值。

2.一端找多端【RELATEDTABLE】

RELATEDTABLE获取与当前行相关的整个表的所有行。

### 回答1: Power BI中的Calculate函数是一种强大的函数,它可以帮助用户在数据模型中进行复杂的计算和筛选。该函数可以接受多个参数,其中第一个参数是要计算的表达式,后面的参数则是筛选条件。通过使用Calculate函数,用户可以轻松地创建复杂的计算和筛选逻辑,从而更好地理解数据并做出更好的决策。 ### 回答2: Power BI是一款广泛使用的数据可视化工具,可用于分析和展示企业数据。其中的Calculate函数是Power BI中最重要的函数之一,它可以对数据进行计算和筛选操作,同时还可以实现复杂的数据分析和可视化操作,以下是对Calculate函数的详细解释。 1. 功能 Calculate函数可以实现多个功能,其中包括: (1) 计算:通过Calculate函数,用户可以对数据进行各种计算操作,如求和、平均、最大值、最小值和计数等。 (2) 筛选:Calculate函数还可以根据用户自定义的筛选条件来筛选数据,比如筛选符合某一条件的数据或排除不符合某一条件的数据。 (3) 聚合:Calculate函数可以聚合数据,将多个数据做加、减、乘或除的运算,并返回结果。 2. 用法 Calculate函数的用法较为灵活,主要有以下几种方式: (1) 用法一:计算数据 Calculate函数的主要功能之一是计算数据。例如,我们可以使用以下公式来计算“销售额”的总和: SalesAmount = Calculate(Sum('Sales'[SalesAmount]) (2) 用法二:筛选数据 Calculate函数还可以用来筛选数据,例如我们可以使用以下公式来筛选出“商品销售额”大于1000的商品名称: ProductNames = Calculate(Values('Product'[ProductName]),'Sales'[SalesAmount]>1000) (3) 用法三:聚合数据 Calculate函数还可以用来聚合数据,例如,我们可以使用以下公式来计算“每个地区的平均销售额”: AvgSalesByCity = Calculate(Average('Sales'[SalesAmount]),'Sales'[City]='Seattle') 3. 参数 Calculate函数包含两个参数:第一个参数是所需计算的公式或表达式,对应的是计算逻辑;第二个参数是筛选条件或表达式,对应的是筛选条件,表示计算结果要基于哪些数据。 例如,使用以下公式来计算在“New York”城市的“销售额”总和: SalesAmountInNewYork = Calculate(Sum('Sales'[SalesAmount]),'Sales'[City]="New York") 总之,Power BICalculate函数是实现数据计算、筛选和聚合的重要函数之一。通过正确的使用Calculate函数,您可以轻松计算和展示您的数据,从而帮助您更好地分析和理解数据的本质。 ### 回答3: Power BI是一款业内领先的商业智能平台,它提供了丰富的功能和工具,包括数据可视化、报告分析、数据建模等。而其中一个非常重要的功能就是calculate函数。在Power BI中,calculate函数可以说是非常重要的一个函数,它有着非常广泛的应用,可以用来从基础数据中生成完全新的报表、图形和指标。下面我们来详细了解一下Power BI中的calculate函数。 Calculate函数基本语法 在Power BI中,如果想利用calculate函数进行数据分析,则需要了解calculate函数的基本语法,其基本语法如下: Calculate([expression], [filter1], [filter2], …) 其中,[expression]是计算表达式,[filter1]、[filter2]等是过滤器,我们可以添加任意多的过滤器。calculate函数的目的是按照规定的过滤器计算表达式,并返回结果。 Calculate函数用途 下面我们来了解一下calculate函数在Power BI中的常见用途。 1、筛选数据 calculate函数可以用来筛选数据,比如我们可以利用它来汇总并计算特定日期范围内的销售额、获取最新的销售数据等等。 2、计算变量 calculate函数还可以用来计算变量,例如我们可以利用它来计算销售额、利润率、增长率等指标。 3、创建聚合表 calculate函数还可以用来创建聚合表,改变数据模型中的原始数据。 4、了解数据分布 在进行数据分析时,人们常常需要了解一组数据的分布,并对这些数据进行进一步的分析和预测。calculate函数可以用来计算分布,进而帮助我们更好地理解和预测数据。 5、创建计算列和计算表 利用calculate函数,我们可以在Power BI中创建计算列和计算表,这对于数据分析和建模非常重要。例如我们可以利用calculate函数创建新的列用于计算总销售额、平均销售额、客户数量等等。 总结 Power BIcalculate函数是一个非常重要的函数,可以帮助我们快速、准确地分析数据。通过了解calculate函数的基本语法和常见用途,我们可以在Power BI中更加高效地进行数据分析和建模,为企业决策提供更多的支撑和帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值