Power BI DAX函数

在这里插入图片描述
1、聚合函数——由表达式定义的列或表中所有行的(标量)值,例如计数、求和、平均值、最小值或最大值。

<
函数 说明
APPROXIMATEDISTINCTCOUNT 在列中返回唯一值的估计计数
AVERAGE 返回列中所有数字的平均值(算术平均值)
AVERAGEA 返回列中值的平均值(算术平均值)
AVERAGEX 计算针对表进行计算的一组表达式的平均值(算术平均值)
COUNT 计算指定列中包含非空值的行数
COUNTA 计算指定列中包含非空值的行数
COUNTAX 在对表计算表达式的结果时统计非空白结果数
COUNTBLANK 对列中的空白单元格数目进行计数
COUNTROWS 统计指定表中或由表达式定义的表中的行数
COUNTX 在针对表计算表达式的结果时,对包含数字或计算结果为数字的表达式的行数目进行计数
DISTINCTCOUNT 对列中的非重复值数目进行计数
DISTINCTCOUNTNOBLANK 对列中的非重复值数目进行计数
<think>嗯,用户想了解PowerBI中的DAX函数使用指南和示例。首先,我需要回顾一下之前提供的引用内容,确保回答准确。引用[1]提到DAX是用于创建计算列、度量值的数据分析表达式语言,核心功能包括聚合、时间智能等。引用[2]给出了一些具体的函数示例,比如CALCULATE和DATEADD。引用[3]和[4]讨论了变量和表操作函数,比如SUMX。用户可能需要基础概念和实际例子结合。我应该先介绍DAX的基本概念,然后分核心功能类别讲解,每个类别下给出常用函数和示例代码。例如,聚合函数如SUM,逻辑函数如IF,时间智能函数如TOTALYTD。同时,要强调变量和上下文的重要性,这有助于他们理解DAX的执行逻辑。 还要注意用户可能的误区,比如行上下文和筛选上下文的区别,这会影响计算结果的正确性。此外,示例代码需要准确,比如CALCULATE的用法,可能需要结合FILTER函数。还要考虑性能优化,比如避免使用过多的迭代函数,这可能导致处理速度变慢。相关问题部分,应该涵盖学习资源、调试技巧、性能优化、与其他工具对比以及常见错误处理。这样用户可以有进一步探索的方向。最后,确保回答结构清晰,分点说明,每个部分都有示例代码,并正确引用之前的资料,比如TOTALYTD的示例来自引用[2],变量部分参考引用[3],SUMX来自引用[4]。</think>### Power BI DAX函数使用指南与示例 DAX(Data Analysis Expressions)是Power BI的核心分析语言,用于创建计算列、度量值和复杂的数据逻辑。以下从**核心概念**、**常用函数分类**、**使用技巧**和**示例**展开说明: --- #### 一、核心概念 1. **上下文** - **行上下文**:在计算列中自动生成,逐行计算(如`SUMX`遍历表的每一行)[^4]。 - **筛选上下文**:由可视化控件、切片器或`CALCULATE`函数动态生成,影响聚合结果[^1]。 - 示例:`CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East")` 仅计算“东部”区域的销售额。 2. **变量(VAR)** 通过变量简化复杂公式,提升可读性和性能: ```DAX Total Sales = VAR Total = SUM(Sales[Amount]) RETURN IF(Total > 1000, "High", "Low") ``` --- #### 二、常用函数分类与示例 1. **聚合函数** - `SUM`/`AVERAGE`:基础聚合 ```DAX Total Revenue = SUM(Sales[Amount]) ``` - `SUMX`:逐行计算后聚合[^4] ```DAX Total Profit = SUMX(Sales, Sales[Amount] * Sales[Profit Rate]) ``` 2. **时间智能函数** - `DATEADD`:时间偏移 ```DAX Last Month Sales = CALCULATE(SUM(Sales[Amount]), DATEADD(Sales[OrderDate], -1, MONTH)) [^2] ``` - `TOTALYTD`:年初至今累计 ```DAX YTD Sales = TOTALYTD(SUM(Sales[Amount]), 'Date'[Date]) ``` 3. **逻辑函数** - `IF`:条件判断 ```DAX Sales Category = IF([Total Revenue] > 1000, "A", "B") ``` - `SWITCH`:多条件分支 ```DAX Region Code = SWITCH(Sales[Region], "East", 1, "West", 2, 0) ``` 4. **关系函数** - `RELATED`:跨表引用关联字段 ```DAX Product Category = RELATED('Product'[Category]) ``` --- #### 三、优化与调试技巧 1. **避免隐式度量值**:显式定义度量值以提高性能。 2. **使用`FILTER`谨慎**:筛选大表时优先用`CALCULATE`替代直接筛选。 3. **性能分析工具**:通过Power BI的“性能分析器”检查DAX执行时间。 --- #### 四、综合示例 **目标**:计算“每个产品类别的年度同比增长率” ```DAX Sales YoY Growth = VAR CurrentYearSales = SUM(Sales[Amount]) VAR PreviousYearSales = CALCULATE(SUM(Sales[Amount]), DATEADD('Date'[Date], -1, YEAR)) RETURN DIVIDE(CurrentYearSales - PreviousYearSales, PreviousYearSales) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值