PowerBI/DAX之一些不常用但有用的函数

PowerBI/DAX不常用却有用的函数介绍

本篇文章将介绍一些使用频率较低但是作用又比较有用的函数。


1、FILTERS 函数

语法:

FILTERS ( <columnName> )

作用:

只考虑参数所指定列的直接筛选器,然后返回参数所指定列的可见数据去重后的单列表。

示例:

如下图所示 ,产品类别筛选器筛选了不存在的类别,那么产品表的可见数据应该为空才对,但因为FILTERS函数只考虑直接筛选,因此以下查询将忽略非产品名称字段上的筛选器,故最终返回了产品名称字段所筛选的两个产品。


2、GENERATESERIES 函数

语法:

GENERATESERIES ( <startValue>, <endValue>[, <incrementValue>] )

作用:

返回由第一参数与第二参数所指定范围的连续数值序列,并可以使用第三参数来控制增量,默认增量为1。

示例:

1、生成数字10到数字16的连续数值序列,如下图所示:

2、生成数字10到数字16的连续数值序列,但增量为2,如下图所示:


3、CONCATENATEX 函数

语法:

CONCATENATEX ( <table>, <expression>[, <delimiter> [, <orderBy_expression> [, <order>]]...] )

作用:

迭代第一参数的表的每一行,计算第二参数的表达式,然后将得到的结果串联到一个字符串中,由第三参数指定的分隔符进行分隔。其中,第四参数可以在串联成字符串前对第二参数的表达式结果进行排序,第五参数则用来控制升序(1/ASC)还是降序(0/DESC),省略时默认升序。

示例:

将所有产品名称合并成一个字符串,并用逗号分隔,如下图所示:


4、COALESCE 函数

语法:

COALESCE ( <expression>, <expression>[, <expression>]… )

作用:

返回第一个计算结果不为空(BLANK)的表达式的结果,若所有表达式的计算结果都为空,则返回空。

示例:

如下图所示,以下查询返回1,即第一个计算结果不为空的表达式。


5、ROW 函数

语法:

ROW ( <name>, <expression>[[,<name>, <expression>]…] )

作用:

返回一个单行表,其中包含由参数所定义的各个派生列。

示例:

1、使用ROW函数返回一行多列的表,如下图所示:

2、将ROW函数与GENERATE函数配合,在达到ADDCOLUMNS函数的效果的同时又能增加代码复用率,如下图所示:


6、CONTAINSSTRING 函数

语法:

CONTAINSSTRING ( <within_text>, <find_text> )

作用:

如果一个文本字符串中包含另一个文本字符串,则返回 TRUE,不区分大小写,支持通配符。

示例:

从一个文本字符串中查找是否包含关键词,如下图所示:


7、CONTAINSSTINGEXACT 函数

语法:

CONTAINSSTRINGEXACT ( <within_text>, <find_text> )

作用:

如果一个文本字符串中包含另一个文本字符串,则返回 TRUE,区分大小写,不支持通配符。

示例:

从一个文本字符串中查找是否包含关键词,如下图所示:


8、SAMPLE 函数

语法:

SAMPLE ( <n_value>, <table>, <orderBy_expression>, [<order>[, <orderBy_expression>, [<order>]]…] )

作用:

从第二参数指定的表中进行抽样,返回第一参数指定的样本行数,如果样本行数小于等于 0 则返回空表。可以使用第三参数与第四参数进行排序,当进行排序后,此样本表将是稳定且确定性的,返回第一行、最后一行和它们之间均匀分布的行。 如果未指定顺序,此样本将是随机的、不稳定且不确定的。

示例:

对日期表进行抽样,返回每个月中的随机一行,如下图所示:


总结

以上函数虽然不常用,但它们的作用在某些场景下却是不可代替的,建议掌握,更多函数请参考官方文档

<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
发出的红包

打赏作者

PowerBI | 夕枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值