"掌握'FILTER'魔法:玩转数据筛选的高级技巧!"
"掌握'FILTER'魔法:玩转数据筛选的高级技巧!"
解锁Power BI的FILTER函数,让数据分析如虎添翼!
在Power BI中,FILTER函数是数据筛选的瑞士军刀,灵活多样,助力深度洞察。
深入Power BI的FILTER函数,用实战案例解锁数据分析新高度!
以下是一些具体例程,带你领略其无限可能:
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进行汇总:
想要计算上述高销售额记录的总金额,可以使用CALCULATE与FILTER结合。
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结合如(CALCULATE、IF、MAX、COUNTX、SUMX等),在新建列中实现类似筛选的效果,新建列主要用于基于当前行的上下文来计算值。不过,我们可以通过一些技巧来模拟跨行或跨表的筛选效果。
以下是一些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来筛选出与当前Customers行CustomerID相匹配的Orders行。
EARLIER函数用于在CALCULATE的筛选上下文中引用当前Customers行的CustomerID。
如果MaxOrderDate大于或等于2023年1月1日,则RETURN子句返回"Yes",否则返回"No"。
例程 2: 计算最近订单的延迟天数
// 注意:MAXX、COUNTX、SUMX结合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