You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power BI中基于员工-经理层级实现全层级下属筛选

实现层级员工筛选器(选中经理显示全层级下属)

需求说明

我有两列数据:employee(员工)和direct_manager(直属经理)。直属经理也会出现在员工列中,形成多层级管理结构。需要创建一个筛选器,选中某位经理时,结果表格能显示该经理所有层级下的下属,而非仅直接下属。

示例数据

employee direct_manager
1        6
2        3
3        1
4        7
5        4

示例逻辑:数据存在多层级关系(比如员工2的经理是3,3的经理是1,1的经理是6),但表格仅记录直属经理信息。

实现方案(按常用工具分类)

1. Excel/Power Query 实现

  • 构建完整层级链:
    1. 将原始数据导入Power Query,添加自定义列,通过递归查询生成每个员工的全链路上级列表。
    2. 展开层级链列表,让每个员工对应其所有上级节点。
  • 配置筛选器:
    以经理列作为筛选选项,选中目标经理后,筛选出层级链中包含该经理的所有员工。

2. SQL 实现

用递归CTE遍历层级结构:

WITH recursive employee_hierarchy AS (
    -- 初始查询:选中经理的直接下属
    SELECT employee, direct_manager
    FROM your_table
    WHERE direct_manager = '目标经理ID' -- 替换为实际筛选的经理ID
    UNION ALL
    -- 递归查询:向下遍历所有下属的下属
    SELECT e.employee, e.direct_manager
    FROM your_table e
    JOIN employee_hierarchy eh ON e.direct_manager = eh.employee
)
SELECT * FROM employee_hierarchy;

若需动态筛选,可将'目标经理ID'替换为参数变量。

3. Python(Pandas)实现

通过递归函数获取全层级下属:

import pandas as pd

# 加载示例数据
df = pd.DataFrame({
    'employee': [1,2,3,4,5],
    'direct_manager': [6,3,1,7,4]
})

def get_all_subordinates(manager_id, df):
    # 获取直接下属
    direct_subs = df[df['direct_manager'] == manager_id]['employee'].tolist()
    if not direct_subs:
        return []
    # 递归获取下属的下属
    all_subs = direct_subs.copy()
    for sub in direct_subs:
        all_subs.extend(get_all_subordinates(sub, df))
    return all_subs

# 示例:获取经理1的所有下属并筛选结果
target_subs = get_all_subordinates(1, df)
result_df = df[df['employee'].isin(target_subs)]
print(result_df)

内容的提问来源于stack exchange,提问作者vizualizing123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:07:17