运行元数据扫描

下面的简短演练展示了如何使用扫描程序 API 从组织的 Fabric 项目中检索元数据。 它假定 Fabric 管理员已在组织中设置元数据扫描。

有关元数据扫描返回的项目和子项目元数据的列表,请参阅管理员文档 - WorkspaceInfo GetScanResult API

以下是扫描仪 API。 它们支持公有云和主权云。

重要

开发用于扫描的应用可以通过使用标准委派管理员访问令牌或服务主体进行身份验证。 这两个身份验证路径是相互排斥的。 在服务主体下运行时,你的应用必须未设置 Power BI 管理员同意所需的权限。 有关详细信息,请参阅为只读管理 API 启用服务主体身份验证

步骤 1:执行完全扫描

调用不带有 modifiedSince 参数的 workspaces/modified 以获取租户中工作区 ID 的完整列表。 此扫描将检索租户中的所有工作区,包括个人工作区和共享工作区。 如果要从扫描中排除个人工作区,请使用 workspaces/modified excludePersonalWorkspaces 参数。

将列表分为多个块,每个块最多包含 100 个工作区。

对于 100 个工作区的每个块:

调用 workspaces/getInfo 以触发对这 100 个工作区的扫描调用。 你将在响应中收到 scanId,可将其用于后续步骤。 在位置标头中,还会接收到下一步要调用的统一资源标识符 (URI)。

注意

可以同时进行不超过 16 个调用。 调用方应等待来自 scanStatus API 的扫描成功/失败响应,然后再进行另一个调用。

如果未返回预期接收的一些元数据,请与 Fabric 管理员联系以确保它们已启用所有相关管理员开关

使用从调用 workspaces/getInfo 接收的位置标头中的 URI,并轮询 workspaces/scanStatus/{scan_id},直到返回的状态为“成功”。 此状态表示扫描结果已准备就绪。 建议使用 30-60 秒的轮询间隔。 在位置标头中,你还将接收到在下一步中要调用的 URI。 仅在状态为“成功”后使用它。

使用从调用 workspaces/scanStatus/{scan-id} 接收的位置标头中的 URI,并使用 workspaces/scanResult/{scan_id} 读取数据。 数据包含基于 workspaces/getInfo 调用所传递参数的工作区列表、项信息及其他元数据。

步骤 2:执行增量扫描

现在,你已拥有所有工作区及其资产的元数据和世系,因此建议引用之前的扫描,只执行增量扫描。

调用 workspaces/modified,并将 modifiedSince 参数设置为上次扫描的开始时间,以获取已更改并因此需要再次扫描的工作区。 modifiedSince 参数应设置为近 30 天内的日期。

正如步骤 1 所述,将此列表划分为多个最多包含 100 个工作区的块,并通过使用 workspaces/getInfoworkspaces/scanStatus/{scan_id}workspaces/scanResult/{scan_id} 这三个 API 调用来获取这些已更改工作区的数据。

注意事项和限制

  • 未刷新或重新发布的语义模型将在 API 响应中返回,但不包含其子工件信息和表达式。 例如,响应中包含语义模型名称和世系,但不包含语义模型的表名和列名。
  • 仅当对语义模型执行某种操作(例如某人基于它生成报表、某人查看基于它的报表等)时,仅包含 DirectQuery 表的语义模型才会返回子工件元数据。
  • 实时数据集、具有对象级别安全性的语义模型、与 AS-Azure 和 AS 本地实时连接的语义模型以及 Excel 全保真数据集都不支持子项目元数据。 对于不支持的数据集,响应会返回未从数据集获取子项目元数据的原因。 可以在名为 schemaRetrievalError 的字段中找到,例如“schemaRetrievalError: 不支持的请求。不支持 RealTime 数据集”。
  • 对于共享工作区中大于 1 GB 的语义模型,API 不会返回子项目元数据。 在高级工作区中,语义模型没有大小限制。

许可

元数据扫描无需特殊许可证。 它适用于你的所有租户元数据(包括位于非高级工作区中的项的元数据)。