我想使用 TSC 包获取我们 Tableau 服务器站点上 3 个 AD 组的所有用户的列表。根据现有的一些资源,我使用 Python 进行了以下操作。
第一个代码片段返回我们网站上的所有用户并将列表导出到 Excel。第二个片段是我尝试应用一个过滤器,该过滤器仅返回 3 个 AD 组中的用户,但它返回 0 个用户。
我们的网站使用 AD 组来提供访问权限。我需要验证这 3 个组的成员是否有权访问仪表板使用的数据源。计划是从 Tableau 服务器获取用户列表,并将组列表与有权访问数据源的用户列表合并,以返回一个输出,该输出将标记我仅在 _merge 中留下的实例。
如有任何意见,我们将不胜感激。
返回站点上的所有用户。
import tableauserverclient as TSC
import pandas as pd
tableau_auth = TSC.PersonalAccessTokenAuth('Y14_Dashboard_Update','access-token-xyz',site_id = 'site-name')
server = TSC.Server('https://tableau-site/',use_server_version=True)
with server.auth.sign_in(tableau_auth):
request_options = TSC.RequestOptions(pagesize=1000)
all_users, pagination_item = server.users.get(request_options)
print("\nThere are {} user on site: ".format(pagination_item.total_available))
all_users_on_site = pd.DataFrame({'Users': [user.name for user in all_users]})
all_users_on_site.to_excel(r"C:\\Users\TABLEAU_User_ME\Documents\Projects\Tableau_Users.xlsx", index = False)
修改为按3组进行过滤;返回 0 个用户。
import tableauserverclient as TSC
import pandas as pd
tableau_auth = TSC.PersonalAccessTokenAuth('Y14_Dashboard_Update','access-token-xyz',site_id = 'site-name')
server = TSC.Server('https://tableau-server-site/',use_server_version=True)
with server.auth.sign_in(tableau_auth):
request_options = TSC.RequestOptions(pagesize=1000)
request_options.filter.add(TSC.Filter(TSC.RequestOptions.Field.Name,
TSC.RequestOptions.Operator.In,
["AD-Group1","AD-Group2", "AD-Group3"],)
)
matching_groups, pagination_item = server.users.get(request_options)
print("\nThere are {} user on site: ".format(pagination_item.total_available))
all_users_on_site = pd.DataFrame({'Users': [user.name for user in matching_groups]})
all_users_on_site.to_excel(r"C:\\Users\TABLEAU_User_ME\Documents\Projects\Tableau_Users.xlsx", index = False)
是否必须在 python 中使用 tableauserverclient ? 否则,您可以查询 Tableau 存储库(启用访问权限后)