语义模型与 XMLA 终结点的连接
Power BI Premium、Premium Per User 和 Power BI Embedded 工作区使用 XMLA 终结点来支持从 Microsoft 和第三方客户端应用程序和工具中连接开放平台。
XMLA 终结点
工作区使用 XML for Analysis (XMLA) 协议来规范客户端应用程序与管理 Power BI 工作区和语义模型的引擎之间的通信。 这些通信通过通常所说的 XMLA 终结点进行。 XMLA 是 Microsoft Analysis Services 引擎所使用的通信协议,该协议运行 Power BI 的语义建模、治理、生命周期和数据管理。 通过 XMLA 协议发送的数据处于完全加密状态。
容量的语义模型工作负荷默认启用使用终结点实现的只读连接。 利用只读终结点,数据可视化应用程序和工具可以查询语义模型的模型数据、元数据、事件和架构。
可以启用使用终结点实现的读写操作。 读写终结点提供更多语义模型管理、治理、高级语义建模、调试和监视功能。 启用后,语义模型与 Azure Analysis Services 和 SQL Server Analysis Services 企业级表格建模工具和流程的相似之处就更多了。
Analysis Services 服务器属性
Power BI Premium 支持多种 Analysis Services 服务器属性。 若要查看这些属性,请参阅 Analysis Services 中的服务器属性。
使用条款
使用 XMLA 终结点时需遵守以下各项:
单用户应用程序 - 该应用程序通过 XMLA 终结点使用单个用户帐户或应用标识来访问 Power BI 语义模型。 单用户应用程序的示例包括开发人员工具、管理员脚本和自动化流程。 这些应用程序可以执行数据建模和管理任务等任务(更改语义模型的元数据、执行备份或还原操作,或者触发数据刷新)。 客户端应用程序用于访问语义模型的用户帐户或应用标识必须具有有效的 Premium Per User (PPU) 许可证,除非语义模型驻留在高级容量上。
多用户应用程序 - 该应用程序为多个用户提供对 Power BI 语义模型的访问权限。 例如,中间层应用程序将语义模型集成到业务解决方案中并代表其业务用户访问语义模型。
- Premium Per User (PPU) 工作区 - 应用程序必须要求每个用户登录 Power BI。 应用程序使用每个用户的访问令牌来访问语义模型。 该应用程序不能使用服务帐户或其他应用标识代表各个用户执行任务。 每个用户都必须使用自己的 Power BI 帐户来打开报表、访问语义模型和执行查询。
- 对于 Premium 工作区,应用程序可以代表最终用户使用服务帐户或应用标识,而无需要求每个用户登录 Power BI。
客户端应用程序和工具
下面是一些常与 Azure Analysis Services 和 SQL Server Analysis Services 配合使用的应用程序和工具,现在也受到 Power BI Premium 语义模型的支持:
Microsoft Excel - Excel 数据透视表是最常用的工具之一,用于汇总、分析、浏览和呈现 Power BI 语义模型中的汇总数据。 必须启用只读终结点,才能执行查询操作。 即点即用 Office 版本必须为 16.0.13612.10000 或更高版本。
Visual Studio with Analysis Services projects - 一般称为 SQL Server Data Tools (SSDT)。 SSDT 是用于 Analysis Services 表格模型的企业级模型创作工具。 所有 Visual Studio 2017 及更高版本(包括免费的 Community 版本)都支持 Analysis Services 项目扩展。 必须具有 2.9.14 版或更高版本的扩展,才能将表格模型部署到 Premium 工作区。 模型的兼容性级别必须为 1500 或更高级别才能部署。 必须为语义模型工作负荷启用 XMLA 读写终结点。 若要了解详细信息,请参阅 Analysis Services 工具。
SQL Server Management Studio (SSMS) - 支持 DAX、MDX 和 XMLA 查询。 使用表格模型脚本语言 (TMSL) 对语义模型元数据执行精细刷新操作,并为之编写脚本。 必须启用只读终结点,才能执行查询操作。 必须启用读写终结点,才能为元数据编写脚本。 需要 SSMS 18.9 或更高版本。 下载 SSMS。
SQL Server 探查器 - SQL Server 探查器随 SSMS 一起安装,通过它可以对语义模型事件进行跟踪和调试。 尽管 Profiler 已正式被 SQL Server 弃用,但仍在 SSMS 中保留,并仍支持 Analysis Services 和 Power BI。 需要 SQL Server Profiler 18.9 或更高版本。 与 XMLA 终结点连接时,用户必须指定语义模型(初始目录)。 若要了解详细信息,请参阅适用于 Analysis Services 的 SQL Server Profiler。
Analysis Services 部署向导 - 随 SSMS 一起安装,此工具可以将 Visual Studio 创作的表格模型项目部署到 Analysis Services 和 Premium 工作区。 它可以交互运行,也可以通过命令行自动运行。 必须启用 XMLA 读写终结点。 若要了解详细信息,请参阅 Analysis Services 部署向导。
PowerShell cmdlet - 使用 Analysis Services cmdlet 自动执行语义模型管理任务(如刷新操作)。 必须启用 XMLA 读写终结点。 SqlServer PowerShell 模块必须为 21.1.18256 或更高版本。 Power BI 语义模型不支持 Az.AnalysisServices 模块中的 Azure Analysis Services cmdlet。 若要了解详细信息,请参阅 Analysis Services PowerShell 参考。
Power BI Report Builder - 用于创作分页报表的工具。 创建报表定义,用于指定要检索的数据、数据获取位置和数据显示方式。 可以先在 Report Builder 中预览报表,再将报表发布到 Power BI 服务。 必须启用 XMLA 只读终结点。 若要了解详细信息,请参阅 Power BI Report Builder。
表格编辑器 - 开放源代码工具,用于使用直观的轻量级编辑器来创建、维护和管理表格模型。 层次结构视图显示表格模型中的所有对象。 按显示文件夹组织对象,支持多选属性编辑和 DAX 语法突出显示。 必须启用 XMLA 只读终结点,才能执行查询操作。 必须启用读写终结点,才能执行元数据操作。 若要了解详细信息,请参阅 tabulareditor.github.io。
DAX Studio - 用于 DAX 创作、诊断、性能优化和分析的开放源代码工具。 功能包括对象浏览、集成跟踪、包含详细统计信息的查询执行情况分解、DAX 语法突出显示和格式设置。 必须启用 XMLA 只读终结点,才能执行查询操作。 若要了解详细信息,请参阅 daxstudio.org。
ALM 工具包 - 用于 Power BI 语义模型的开放源代码架构比较工具,最常用于应用程序生命周期管理 (ALM) 方案。 跨环境执行部署,并保留增量刷新历史数据。 区分和合并元数据文件、分支和存储库。 在语义模型之间重用共同定义。 必须启用只读终结点,才能执行查询操作。 必须启用读写终结点,才能执行元数据操作。 若要了解详细信息,请参阅 alm-toolkit.com。
第三方 - 包括客户端数据可视化应用程序和工具,可用于连接到、查询和使用 Premium 工作区中的语义模型。 大多数工具都需要最新版本的 MSOLAP 客户端库,但部分工具可以使用 ADOMD。 需要启用只读还是读写 XMLA 终结点取决于操作是什么。
客户端库
客户端应用程序和工具不直接与 XMLA 终结点通信。 而是使用客户端库作为抽象层。 这些也是应用程序用于连接到 Azure Analysis Services 和 SQL Server Analysis Services 的相同客户端库。 Excel、SQL Server Management Studio (SSMS) 和 Visual Studio 的 Analysis Services 项目扩展等 Microsoft 应用程序安装了所有这三个客户端库,并将它们与常规应用程序和扩展更新一起更新。 开发人员可以使用客户端库来生成自定义应用程序。 在某些情况下,特别是对于第三方应用程序,如果客户端库没有与应用程序一起安装,可能需要安装更高版本的客户端库。 客户端库会每月更新。 若要了解详细信息,请参阅用于连接到 Analysis Services 的客户端库。
通过启用大型模型优化用于写入操作的语义模型
若要将 XMLA 终结点用于执行包含写入操作的语义模型管理,建议为语义模型启用大型模型。 这减少了写入操作的开销,从而大大提高了写入操作的速度。 对于(压缩后)超过 1GB 的语义模型,差异可能非常显著。 若要了解详细信息,请参阅 Power BI Premium 中的大型模型。
启用 XMLA 读写终结点
默认情况下,Premium 容量或 Premium Per User 语义模型工作负荷启用了 XMLA 终结点属性设置,以确保只读。 也就是说,应用程序只能查询语义模型。 为了让应用程序能够执行写入操作,必须启用设置为“读写”的“XMLA 终结点”属性。
为 Premium 容量启用读写
选择“设置”>“管理门户”。
在管理门户中,依次选择“容量设置”>“Power BI Premium”>容量名称。
展开“工作负荷”。 在“XMLA 终结点”设置中,选择“读写”。 “XMLA 终结点”设置应用于分配给容量的所有工作区和语义模型。
为 Premium Per User 启用读写
- 选择“设置”>“管理门户”。
- 在管理门户中,选择“Premium Per User”。
- 展开语义模型工作负荷设置。 在“XMLA 终结点”设置中,选择“读写”。
连接到 Premium 工作区
分配给容量的工作区具有 URL 格式的连接字符串。 例如:
powerbi://api.powerbi.com/v1.0/[tenant name]/[workspace name]
。
连接到工作区的应用程序使用此 URL,就像是在使用 Analysis Services 服务器名称一样。 例如:
powerbi://api.powerbi.com/v1.0/contoso.com/Sales Workspace
。
注意
目前不支持使用 XMLA 终结点连接到我的工作区。
B2B 和来宾用户
当用户访问主租户中的工作区时,URL 中的租户名称部分可以替换为 myorg
。 例如:
powerbi://api.powerbi.com/v1.0/myorg/Sales Workspace
。
当 B2B\来宾用户访问其他租户中的工作区时,必须在数据源 URL 中指定该租户名称。 例如,当 contoso.com 用户受邀加入 fabrikam.com 租户并被授予对“销售工作区”的权限时,则必须使用以下 URL 连接:
powerbi://api.powerbi.com/v1.0/fabrikam.com/Sales Workspace
。
若要确定租户的主域名和 ID,请登录到 Azure 门户,从主菜单中选择 Microsoft Entra ID,然后记下 Microsoft Entra 概述页上的信息。 有关详细信息,请参阅查找 Microsoft Entra 租户 ID 和主域名。
获取工作区连接 URL 的具体步骤
在工作区中,依次转到“设置”>“Premium”>“工作区连接”,然后选择“复制”。
连接要求
初始目录
使用某些工具(例如 SQL Server Profiler)时,你必须指定初始目录,它是要在你的工作区中连接到的语义模型(数据库)。 在“连接到服务器”对话框中,依次选择“选项”>“连接属性”>“连接到数据库”,然后输入语义模型名称。
重复的工作区名称
Power BI 验证中的工作区可防止使用重复名称创建或重命名工作区。 连接到与另一工作区同名的工作区时,可能会收到以下消息:
无法连接到 powerbi://api.powerbi.com/v1.0/[tenant name]/[workspace name]
。
若要解决此问题,除了指定工作区名称之外,还需要指定 ObjectIDGuid。 可从 URL 中的工作区 objectID 复制 ObjectIDGuid。 将 objectID 追加到连接 URL。 例如:
powerbi://api.powerbi.com/v1.0/myorg/Contoso Sales - 9d83d204-82a9-4b36-98f2-a40099093830
。
重复的语义模型名称
若要连接到与同一工作区中另一个语义模型同名的语义模型,请将语义模型 GUID 追加到语义模型名称。 在 SSMS 中连接到工作区时,可以同时获取语义模型名称和 GUID。
显示的语义模型中的延迟
连接到工作区后,新的、已删除的和已重命名的语义模型中的更改可能需要几分钟才会显示。
不支持的语义模型
使用 XMLA 终结点无法访问以下语义模型。 在 SSMS 或其他工具中,这些语义模型不会显示在工作区下:
- 基于与 Azure Analysis Services 或 SQL Server Analysis Services 模型的实时连接的语义模型。
- 基于与另一工作区中的 Power BI 语义模型的实时连接的语义模型。 要了解更多信息,请参阅跨工作区语义模型简介。
- 使用 REST API 推送数据的语义模型。
- “我的工作区”中的语义模型
- Excel 工作簿语义模型。
服务器/工作区别名
Azure Analysis Services 中支持的服务器名称别名不可用于 Premium 工作区。
安全性
除了要由容量管理员启用为“读写”的“XMLA 终结点”属性,还必须启用管理门户中的“允许对本地语义模型使用 XMLA 终结点和‘在 Excel 中分析’功能”租户级设置。 如果需要生成连接到 XMLA 终结点的“在 Excel 中分析”(AIXL) 文件,还应启用“用户可以使用使用实时连接 Excel 中的语义模型”租户级设置。 默认情况下,这些设置都处于启用状态。
“允许对本地语义模型使用 XMLA 终结点和‘在 Excel 中分析’功能”属于集成设置。
用户可以使用使用实时连接 Excel 中的语义模型是一项导出和共享设置。
下表描述了这两种设置的影响:
设置 | 允许通过本地语义模型在 Excel 中使用 XMLA 终结点和分析 = 已禁用 | 允许通过本地语义模型在 Excel 中使用 XMLA 终结点和分析 = 已启用 |
---|---|---|
用户可以使用实时连接在 Excel 中处理语义模型 = 已禁用 | XMLA:不允许 在 Excel 中分析:不允许 |
XMLA:允许 在 Excel 中分析:不允许 |
用户可以使用实时连接在 Excel 中处理语义模型 = 已启用 | XMLA:不允许 在 Excel 中分析:允许 |
XMLA:允许 在 Excel 中分析:允许 |
通过 XMLA 终结点进行的访问遵守在工作区/应用级别设置的安全组成员身份。
工作区参与者及更高级别角色拥有“写入”语义模型权限,这实际上相当于 Analysis Services 数据库管理员。 他们可以从 Visual Studio 部署新的语义模型,并在 SSMS 中执行 TMSL 脚本。
拥有“生成”语义模型权限的用户相当于 Analysis Services 数据库的读者。 他们可以连接到并浏览语义模型,从而使用并可视化数据。 由于遵守的是行级别安全性 (RLS) 规则,因此他们无法查看内部语义模型元数据。
通常不支持需要 Analysis Services 服务器管理员权限(而不是数据库管理员)的操作。
模拟
连接到 Premium 工作区语义模型时,支持使用 EffectiveUserName 连接字符串属性模拟用户。 EffectiveUserName 中指定的帐户必须位于租户的 Microsoft Entra ID 中,并且必须同时拥有要连接到的语义模型的“读取”和“生成”权限。 如果该帐户没有“读取”和“生成”权限,Power BI 无法模拟该用户帐户。 连接将失败,并返回错误。
还可通过在 Roles 连接字符串属性中指定一个或多个工作区角色来执行模拟。 使用 Roles 属性,可以测试具有写入权限的角色成员是否降级到读取权限。 以下角色权限是否适用取决于登录的用户帐户:
如果执行模拟的用户是工作区管理员(这实际上相当于 Analysis Services 中的服务器管理员),则他们不需要是任何指定角色的成员。
如果执行模拟的用户不是工作区管理员,则他们必须属于一个或多个指定角色,否则将返回“找不到用户”或“无权限”类型错误。
模型角色
使用 XMLA 终结点,可以为租户的 Microsoft Entra ID 中的用户定义角色、角色成员身份、行级别安全性 (RLS) 和对象级安全性 (OLS)。 Power BI 中的模型角色只用于实现 RLS 和 OLS。 要控制 RLS 和 OLS 以外的权限,请使用 Power BI 安全模型。
对于在 Visual Studio 中创作的表格模型项目,可通过使用模型设计器中的角色管理器来定义角色。 对于 Power BI 中的语义模型,可以在发布到服务之前在 Power BI Desktop 中定义角色。 角色成员身份在 Power BI 服务中指定。 还可使用 SSMS 创建和管理角色。 在大多数情况下,可以通过使用 TMSL 创建或修改角色对象来编写角色对象定义的脚本。 TMSL 脚本可在 SSMS 中执行,也可使用 Invoke-ASCmd PowerShell cmdlet 来执行。
通过 XMLA 终结点处理角色时,需要遵循以下限制:
- 对于语义模型,唯一可设置的角色权限是读取权限。 其他权限是使用 Power BI 安全模型授予的。
- 服务主体不能使用 RLS 和 OLS,并且不能添加为模型角色成员。
- 无论语义模型角色是否存在,都必须设置语义模型的生成权限,才能通过 XMLA 终结点读取访问语义模型。
设置数据源凭据
通过 XMLA 终结点指定的元数据可以创建与数据源的连接,但无法设置数据源凭据。 相反,可以在 Power BI 服务的“语义模型设置”页中设置凭据。
服务主体
服务主体是在租户中创建的 Microsoft Entra 应用注册,用于执行无人参与的资源和服务级别操作。 服务主体是独特类型的用户标识,具有应用名称、应用程序 ID、租户 ID 和表示密码的客户端机密或证书。 Power BI Premium 使用与 Power BI Embedded 相同的服务主体功能。
可以搭配使用服务主体与 XMLA 终结点来自动执行语义模型管理任务,例如预配工作区、部署模型以及使用以下工具刷新语义模型:
- PowerShell
- Azure 自动化
- Azure 逻辑应用
- 自定义客户端应用程序
若要了解详细信息,请参阅使用服务主体自动完成 Premium 工作区和语义模型任务。
部署 Visual Studio 中的模型项目 (SSDT)
将 Visual Studio 中的表格模型项目部署到 Premium 工作区,与部署到 Azure Analysis Services 或 SQL Server Analysis Services 服务器大致相同。 唯一的不同之处在于,为项目指定的“部署服务器”属性,以及如何指定数据源凭据才能让处理操作将数据从数据源导入到工作区中的新语义模型内。
若要部署 Visual Studio 中创作的表格模型项目,请在项目“部署服务器”属性中设置工作区连接 URL。 在 Visual Studio 的“解决方案资源管理器”中,右键单击项目>“属性”。 在“服务器”属性中,粘贴工作区连接 URL。
指定“部署服务器”属性后,就可以部署项目了。
首次部署时,语义模型是通过使用 model.bim 中的元数据在工作区中创建。 在部署操作过程中,在工作区中通过模型元数据创建语义模型后,无法完成将数据从数据源加载到语义模型的处理操作。
处理操作之所以失败是因为,在部署到 Azure 或 SQL Server Analysis Server 实例时,系统会在部署操作过程中提示提供数据源凭据,而在部署到 Premium 工作区时,无法在部署操作过程中指定数据源凭据。 相反,在元数据部署成功且语义模型创建后,数据源凭据则在 Power BI 服务的语义模型设置中指定。 在工作区中,选择“语义模型”>“设置”>“数据源凭据”>“编辑凭据”。
如果数据源凭据已指定,则可以在 Power BI 服务中刷新语义模型、配置计划刷新,或从 SQL Server Management Studio 执行处理操作(刷新)以将数据加载到语义模型中。
可以观察到在 Visual Studio 项目中指定的部署“处理选项”属性。 不过,如果数据源未在 Power BI 服务中指定凭据,即使元数据部署成功,处理操作也会失败。 可以将属性设置为“不处理”,防止尝试在部署过程中进行处理。 可能需要将属性设置回“默认”,因为在数据源设置中指定了新语义模型的数据源凭据后,在后续部署操作过程中进行处理将会成功。
与 SSMS 连接
使用 SSMS 连接到工作区就像连接到 Azure Analysis Services 或 SQL Server Analysis Services 服务器一样。 唯一的不同之处在于,在服务器名称中指定工作区 URL,且必须使用“Active Directory - 通用且具有 MFA 支持”身份验证。
使用 SSMS 连接到工作区
在 SQL Server Management Studio 中,选择“连接”>“连接到服务器” 。
在“服务器类型”中,选择“Analysis Services”。 在“服务器名称”中,输入工作区 URL。 在“身份验证”中,选择“Active Directory - 通用且具有 MFA 支持”,然后在“用户名”中输入组织用户 ID。
连接时,工作区显示为 Analysis Services 服务器,工作区中的语义模型显示为数据库。
若要详细了解如何使用 SSMS 编写元数据脚本,请参阅:
语义模型刷新
XMLA 终结点支持各种方案,如使用 SSMS 实现精细刷新功能、使用 PowerShell 实现自动化、使用 TOM 实现 Azure 自动化和 Azure Functions。 例如,可以刷新特定增量刷新历史分区,而无需重新加载所有历史数据。
与在 Power BI 服务中配置刷新不同,通过 XMLA 终结点执行的刷新操作不限于每天 48 次刷新,并且不强制实施计划刷新超时。
通过 XMLA 终结点的语义模型刷新操作(包括写入事务)的日期、时间和状态会记录并显示在语义模型刷新历史记录中。
注意
XMLA 终结点执行的刷新操作不会自动刷新磁贴缓存。 仅当用户访问报表时,磁贴缓存才会刷新。
动态管理视图 (DMV)
Analysis Services DMV 公开了语义模型元数据、世系和资源使用情况。 可用于在 Power BI 中通过 XMLA 终结点进行查询的 DMV 最多仅限于需要数据库管理员权限的 DMV。 例如,一些 DMV 不可访问,因为它们需要 Analysis Services 服务器管理员权限。
Power BI Desktop 创作的语义模型
增强型元数据
若要对 Power BI Desktop 中创作并发布到 Premium 工作区的语义模型执行 XMLA 写入操作,需要增强型元数据。 若要了解详细信息,请参阅增强型语义模型元数据。
注意
目前,对在 Power BI Desktop 中创作的语义模型执行写入操作会阻止将它下载回 PBIX 文件。 请务必保留原始 PBIX 文件。
数据源声明
连接到数据源和查询数据时,Power BI Desktop 使用 Power Query M 表达式作为内联数据源声明。 虽然在 Premium 工作区中受支持,但 Power Query M 内联数据源声明并不受 Azure Analysis Services 或 SQL Server Analysis Services 支持。 相反,Analysis Services 数据建模工具(如 Visual Studio)使用结构化或提供程序数据源声明来创建元数据。 对于 XMLA 终结点,Premium 也支持结构化和提供程序数据源,但不支持用作 Power BI Desktop 模型中的 Power Query M 内联数据源声明的一部分。 若要了解详细信息,请参阅了解提供程序。
Live Connect 模式下的 Power BI Desktop
Power BI Desktop 可以通过实时连接来连接 Power BI Premium 语义模型。 使用实时连接功能时,用户不需要在本地复制数据,因此可以更轻松地使用语义模型。 用户可以通过两种方式连接:
选择“Power BI 语义模型”,然后选择语义模型以创建报表。 用户可采用这种建议方法实时连接语义模型。 这种方法提供了更好的发现体验,能够显示语义模型的认可级别。 用户无需查找和跟踪工作区 URL。 若要查找语义模型,用户只需键入语义模型名称或滚动查找所需的语义模型。
使用“获取数据”>“Analysis Services”,将 Power BI Premium 工作区名指定为 URL,选择“实时连接”,然后在导航器中选择一个语义模型。 在这种情况下,Power BI Desktop 将使用 XMLA 终结点实时连接语义模型,就像它是 Analysis Services 数据模型一样。
如果组织的现有报表实时连接到要迁移到 Premium 语义模型的 Analysis Services 数据模型,则只需在“转换数据”>“数据源设置”中更改服务器名称 URL。
审核日志
当应用程序连接到工作区时,通过 XMLA 终结点进行的访问记录到包含以下操作的 Power BI 审核日志中:
操作易记名称 | 操作名称 |
---|---|
从外部应用程序连接到 Power BI 语义模型 | ConnectFromExternalApplication |
从外部应用程序请求刷新 Power BI 语义模型 | RefreshDatasetFromExternalApplication |
从外部应用程序创建 Power BI 语义模型 | CreateDatasetFromExternalApplication |
从外部应用程序编辑 Power BI 语义模型 | EditDatasetFromExternalApplication |
从外部应用程序删除 Power BI 语义模型 | DeleteDatasetFromExternalApplication |
若要了解详细信息,请参阅审核 Power BI。
注意事项和限制
无法使用 XMLA 终结点修改默认 Power BI 语义模型。
相关内容
有关本文的详细信息,请参阅:
- Power BI 使用方案:高级数据模型管理
- 是否有任何问题? 尝试咨询 Power BI 社区
- 建议? 提出改进 Power BI 的想法