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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:32:44