如何用tableau_api_lib提取指定Tableau组用户至DataFrame?
解决方案
核心思路
借助tableau_api_lib封装的REST API能力,先定位目标组的ID,再通过组ID拉取对应组内的用户列表,最终整理成包含group id和user name的DataFrame。
优化后代码
from tableau_api_lib import TableauServerConnection import pandas as pd from tableau_api_lib.utils.querying import get_groups_dataframe # 配置Tableau服务器连接信息 tableau_server_config = { 'my_env': { 'server': 'https://tableau-eu.cloud.server.com', 'api_version': '3.21', 'username': 'name', 'password': 'pass', 'site_name': 'FT', 'site_url': 'FT' } } # 建立连接并登录 conn = TableauServerConnection(tableau_server_config, env='my_env') conn.sign_in() # 1. 获取所有组的信息,筛选目标组的ID target_group_names = ['All Users', 'Developers'] groups_df = get_groups_dataframe(conn=conn) target_groups = groups_df[groups_df['name'].isin(target_group_names)] # 2. 遍历目标组,获取每个组内的用户 group_users_list = [] for _, group in target_groups.iterrows(): group_id = group['id'] # 调用封装的API方法获取组内用户数据 group_users_response = conn.query_group_users(group_id=group_id) # 解析响应JSON,提取用户名 users_in_group = [user['name'] for user in group_users_response.json()['users']['user']] # 配对组ID与用户名,存入列表 for user_name in users_in_group: group_users_list.append({ 'group id': group_id, 'user name': user_name }) # 3. 转换为目标格式的DataFrame group_users_df = pd.DataFrame(group_users_list) # 4. 导出到Excel(可选操作) group_users_df.to_excel(r'C:\tmp\python\group_users.xlsx', index=False) # 登出连接 conn.sign_out()
代码说明
- 筛选目标组:通过
get_groups_dataframe获取全量组数据,用isin方法精准筛选出指定名称的组,提取对应的group id。 - 拉取组内用户:调用
conn.query_group_users(group_id)方法(该方法封装了Tableau REST API的Query Group Users接口),解析返回的JSON结构提取用户名。 - 整理数据结构:将每个组的用户与对应组ID绑定,最终生成符合需求的DataFrame。
内容的提问来源于stack exchange,提问作者Snyder Fox
相关产品推荐
相关产品推荐

