"掌握'FILTER'魔法:玩转数据筛选的高级技巧!"

"掌握'FILTER'魔法:玩转数据筛选的高级技巧!"

 

解锁Power BIFILTER函数,让数据分析如虎添翼!

 

Power BI中,FILTER函数是数据筛选的瑞士军刀,灵活多样,助力深度洞察。

深入Power BIFILTER函数,用实战案例解锁数据分析新高度!

以下是一些具体例程,带你领略其无限可能:

 

1、 基础筛选:FILTER(Table, Condition),直接根据条件筛选表格数据,如FILTER(Sales, Sales[Year] = 2023),轻松获取2023年销售数据。

想象一下,你有一个名为Sales的表格,包含年份Year和销售额Amount字段。要获取2023年的销售数据,你可以这样写:

 

Sales_2023 = FILTER(Sales, Sales[Year] = 2023)

 

 

逻辑解释:FILTER函数接受两个参数,第一个是表格名Sales,第二个是筛选条件Sales[Year] = 2023。它返回满足条件Year等于2023的所有行。

 

2、 多层嵌套:FILTER(FILTER(Table, Condition1), Condition2),实现复杂逻辑,如先按地区筛选,再进一步筛选销售额。

现在,我们想在2023年的基础上,进一步筛选出销售额超过100万的记录。

 

High_Sales_2023 = FILTER(FILTER(Sales, Sales[Year] = 2023), Sales[Amount] > 1000000)

 

 

逻辑解释:这里使用了FILTER函数的嵌套。外层FILTER基于内层FILTER的结果进行进一步筛选。内层首先筛选出2023年的数据,外层再从中筛选出销售额超过100万的记录。

 

 

3 DAX函数结合:如CALCULATE(SUM(Sales[Amount]), FILTER(Sales, Sales[Region] = "East")),计算特定区域的总销售额,增强报表灵活性。

结合CALCULATE进行汇总:

想要计算上述高销售额记录的总金额,可以使用CALCULATEFILTER结合。

 

Total_High_Sales_2023 = CALCULATE(SUM(Sales[Amount]), FILTER(Sales, Sales[Year] = 2023 && Sales[Amount] > 1000000))

 

 

逻辑解释:CALCULATE函数允许你改变计算上下文,这里的上下文是通过FILTER函数定义的。FILTER返回满足条件的行,然后CALCULATE在这些行上执行SUM函数,计算总销售额。

 

 

4 动态筛选:结合切片器或参数表,动态调整Filter条件,如FILTER(Sales, Sales[Category] IN VALUES(SelectedCategories[Category])),实现用户自定义筛选。

假设你有一个名为SelectedYears的切片器,用户可以选择多个年份。要动态筛选这些年份的数据,可以这样做:

 

 

用户自定义筛选 = FILTER(Sales, Sales[Year] IN VALUES(SelectedYears[Year]))

 

 

逻辑解释:VALUES(SelectedYears[Year])返回切片器中选中的年份值列表。IN操作符检查Sales[Year]是否在这个列表中,从而动态地筛选出用户选定的年份数据。

 

5、跨表筛选:跨表筛选是一个常见的需求,特别是当你需要基于一个表中的数据来过滤另一个表中的数据时。

尽管FILTER不能直接用于新建列,因为它是在行上下文外部操作的但我们可以利用其他函数与FILTER结合如CALCULATEIFMAXCOUNTXSUMX等),在新建列中实现类似筛选的效果,新建列主要用于基于当前行的上下文来计算值。不过,我们可以通过一些技巧来模拟跨行或跨表的筛选效果。

以下是一些FILTER函数在新建列中的间接用法示例:

例程 1: 检查是否有符合条件的订单

 

假设我们有两个表:Customers(客户)和Orders(订单),它们通过CustomerID关联。我们想要在新建列中标记每个客户是否有在2023年之后的订单。

 

新建列公式:

 

2023年之后的订单 =

VAR MaxOrderDate = CALCULATE(MAX(Orders[OrderDate]), FILTER(Orders, Orders[CustomerID] = EARLIER(Customers[CustomerID])))

RETURN IF(MaxOrderDate >= DATE(2023, 1, 1), "Yes", "No")

 

 

逻辑解释:

 

使用VAR定义一个变量MaxOrderDate,该变量存储了当前Customers行对应客户在Orders表中的最大订单日期。

CALCULATE函数内部使用了FILTER来筛选出与当前CustomersCustomerID相匹配的Orders行。

EARLIER函数用于在CALCULATE的筛选上下文中引用当前Customers行的CustomerID

如果MaxOrderDate大于或等于202311日,则RETURN子句返回"Yes",否则返回"No"

例程 2: 计算最近订单的延迟天数

 

 

// 注意:MAXXCOUNTXSUMX结合FILTER跨报表筛选的用法是相同的,语法形式如下

当前订单编号最大金额=

 MAXX( FILTER(Sales,Sales[ProductID] = EARLIER(Sales[ProductID]) ),Sales[Amount])

 

FILTER函数在Power BI中的应用远不止于此,它是你进行数据分析和报表设计的强大工具。通过结合其他DAX函数和报表功能,你可以创造出更加动态、交互和深入洞察的数据可视化作品

 

目前已组建有BI在线服务团队,活跃接单老师超百人,专注解决BI横向、纵向相关的各类技术问题,包括但不限于各类BI工具、python、数据仓库、编程开发等服务。
BI包括但不限于永洪bi、quickbi、PowerBI、FineBI、Finereport、smartbi、tableau、qliksense等BI工具 ,可以制作BI系统,或解决单个项目,单个问题,考试相关、一对一教学等服务
有意联系瓶子微信:wdfyqx

posted @ 2024-07-03 20:28  瓶子xf  阅读(5)  评论(0编辑  收藏  举报