python - 如何使用 Pyspark/Python 从 Microsoft Graph API 有效地获取组织层次结构?
问题描述
我正在尝试使用 Azure Databricks 中的 Microsoft Graph API 获取组织层次结构(从上到下的方法)。
以下是我要查询的 API -
https://graph.microsoft.com/v1.0/users/{id}/directReports
使用的代码 -
url = "https://graph.microsoft.com/v1.0/users/{id}/directReports"
payload={}
response = requests.request("GET", url, headers=headers, data=payload)
df = spark.read.json(sc.parallelize([response.text]))
df = df.select(f.explode_outer('value').alias('data'))
df = df.select("data.*")
df.write.mode("overwrite").saveAsTable("default.orgTree")
现在,对于第一个实例(最高级别是 CEO)它可以工作。以下是我能够在其中填充的列列表default.orgTree
-
['@odata.type', 'businessPhones', 'displayName', 'givenName', 'id', 'jobTitle', 'mail', 'mobilePhone', 'officeLocation', 'preferredLanguage', 'surname', 'userPrincipalName']
但是,在某些情况下,下一个级别(我id
在第一次迭代下提取的所有 - 提取)开始存在空白,并且在某些情况下它包含列表中的多个字符串字典。我的要求是迭代到最低级别(直到任何级别的直接报告人可用)并default.orgTree
分别为父母和孩子附加。
有没有一种有效的方法来实现这种复杂的场景?我有点困惑如何处理后续迭代。
请帮忙。
解决方案
组织层次结构目前存在以下一些端点。
向上
GET /me/manager
GET /users/{id | userPrincipalName}/manager
下
GET /me/directReports
GET /users/{id | userPrincipalName}/directReports
话虽如此,对于您的特定场景,请考虑归档用户语音,以便将来实施。
推荐阅读
- javascript - NPM 注册 API,通过 JSON 响应查看包的内部结构和文件
- java - 查看我们从 jar 文件导入的类中的内容
- python - 在字符串中找到特定单词后查找单词
- azure - 从 Azure Active Directory 摄取超过 30k 的用户详细信息
- sql - 如何在一个 oracle 表中查找多对
- ansible - 无法通过 ansible playbook 连接到远程服务器
- laravel-5 - 我已经通过 post 方法将图像文件存储在管理员中,但是当尝试为 pdf/word 放置相同的代码时,它不起作用
- jquery - jquery数据表每一行的下拉菜单
- mosquitto - MosquittoClient 的订阅者在间隔时间段内不显示单个订阅的消息
- javascript - 访问 Braintree 数组内部的问题