Power BI + Dynamics 365:本机集成深入探讨
Microsoft 生态系统中的 BI 集成没有比 Power BI 和 Dynamics 365 更紧密的了。这两种产品共享相同的云基础设施、身份验证模型和数据平台 (Dataverse)。 Microsoft 投入了大量资金来实现这种无缝集成,以至于嵌入式 Power BI 报告可以在 Dynamics 365 表单、仪表板和视图中本地显示,无需单独登录。
然而,许多 Dynamics 365 组织只触及了这种集成的表面。本指南涵盖了从基本 Dataverse 连接到嵌入式报告、Dynamics 365 Sales 分析、财务仪表板设计以及跨 CRM、ERP 和 Field Service 的跨模块分析的所有集成模式。
要点
- Dataverse 连接器是所有 Dynamics 365 数据的本机首选连接方法
- 嵌入式 Power BI 报告显示在 D365 表单和仪表板内,无需离开 UI
- Microsoft Fabric 和 Dataverse 共享相同的 Azure 基础设施 - Fabric 快捷方式消除了数据移动
- Dynamics 365 Sales 具有可在几分钟内部署的本机分析应用程序(Power BI 模板应用程序)
- 财务和运营使用 Azure Data Lake 集成进行大规模分析
- 跨模块分析(销售+财务、服务+库存)需要将Dataverse表与财务数据连接起来
- 行级安全镜像 Dynamics 365 业务单位和安全角色
- Power BI 分页报告与 D365 Finance 集成以进行监管/法定报告
Dynamics 365 产品及其数据源
了解哪个 Dynamics 365 产品使用哪个数据平台对于集成设计至关重要:
| D365 产品 | 数据平台 | 主连接器 |
|---|---|---|
| 销售 | 数据宇宙 | 数据宇宙连接器 |
| 客户服务 | 数据宇宙 | 数据宇宙连接器 |
| 现场服务 | 数据宇宙 | 数据宇宙连接器 |
| 营销 | 数据宇宙 | 数据宇宙连接器 |
| 财务与运营 | Azure SQL/ADLS | 财务和运营连接器/ADLS |
| 商务中心 | Azure SQL | 商务中心连接器 |
| 商业 | 数据宇宙 + Azure SQL | 多个 |
| 人力资源 | 数据宇宙 | 数据宇宙连接器 |
| 项目运营 | 数据宇宙 | 数据宇宙连接器 |
主要区别:基于 Dataverse 构建的 Dynamics 365 应用程序(销售、服务、现场服务、营销)使用 Dataverse 连接器。 Dynamics 365 Finance & Operations 使用单独的云托管 Azure SQL 数据库以及专用 Power BI 连接器和 Azure Data Lake 导出。
连接器 1:Dataverse(主要连接器)
Dataverse 连接器是所有基于 Dataverse 的 D365 应用程序的推荐集成路径。它提供:
- 标准表:所有 D365 标准实体(客户、联系人、机会、案例等)
- 自定义表:您的组织创建的任何自定义表
- 选择列:查找带有标签的值(不仅仅是内部代码)
- 关系:可通过 Power Query 关系扩展进行导航
- 实时数据:无数据移动 — 查询直接进入 Dataverse
设置
1.在Power BI Desktop中:获取数据→Dataverse
2.环境URL:https://{your-environment}.crm.dynamics.com
3. 使用您的 Dynamics 365 凭据(或计划刷新的服务主体)登录
4. 浏览表格并选择所需实体
D365 销售分析的关键表
account — Customer/Prospect organizations
contact — Individual contacts
opportunity — Sales deals with stage, probability, close date
quote — Formal price quotes linked to opportunities
salesorder — Confirmed sales orders
invoice — Invoices from orders
lead — Incoming leads pre-qualification
activitypointer — All activities (emails, calls, meetings)
systemuser — Sales reps and users
team — Sales teams and territories
处理 Dataverse 选项集
Dataverse 选项集(选择列)在内部存储整数代码。 Dataverse 连接器返回代码和标签,但您必须在 Power Query 中处理此问题:
// Expand opportunity status code to label
Source = Dataverse.EntitySet("https://org.crm.dynamics.com", "opportunity"),
AddLabel = Table.AddColumn(Source, "Stage Label",
each if [statuscode] = 1 then "In Progress"
else if [statuscode] = 2 then "Won"
else if [statuscode] = 3 then "Cancelled"
else "Unknown")
更好的做法:使用 Dataverse 自动返回的 [email protected] 字段和格式化标签。
连接器 2:Dynamics 365 财务和运营
D365 Finance and Operations 使用单独的连接器连接到 Finance 虚拟实体层或直接连接到 Azure Data Lake(建议用于大规模分析)。
选项 A:财务和运营连接器(实体商店)
Power BI 的 Dynamics 365 Finance 连接器查询 Finance Entity Store — 由 Finance 的批处理流程更新的单独的读取优化数据库。
1.获取数据→Dynamics 365(在线)→财务
2.环境URL:https://{env}.operations.dynamics.com
3. 连接到Entity Store多维数据集和数据实体
可用实体(示例):
RetailSalesLine— 销售交易详细信息VendTransaction— 供应商付款交易CustTransaction— 客户交易LedgerTransactionEntity— 总账分录BudgetTransactionEntity— 预算条目
选项 B:Azure Data Lake 导出(推荐)
对于大规模财务分析(1000 万以上交易),配置财务的“导出到 Azure Data Lake”功能:
- 在财务和运营管理中:工作区 → 数据管理 → 配置 Azure Data Lake
- 连接到您的 Azure Data Lake Storage Gen2 帐户
- 选择要导出的表(增量或全部)
- Power BI 通过 Azure Data Lake Storage 连接器直接从 ADLS 读取
该架构可以处理任何规模的财务数据,而不影响财务应用程序的性能。
选项 C:Microsoft Fabric(推荐用于新部署)
借助 Microsoft Fabric,ADLS 中的 D365 Finance 数据成为 Fabric 快捷方式 — 通过 Direct Lake 模式即可访问 Power BI,无需额外的数据移动:
D365 Finance → ADLS Gen2 (via Export) → Fabric OneLake (Shortcut) → Power BI Direct Lake
无需 ETL 管道。 Fabric 读取 ADLS 数据,就好像它是原生 OneLake 内容一样。
Dynamics 365 中的嵌入式 Power BI 报告
这是 Power BI 最有价值的 Dynamics 365 集成功能之一 - 直接嵌入 D365 表单和仪表板中的报表。
设置嵌入报告
- 将 Power BI 报表 发布到 Premium 或 PPU 工作区(免费用户需要 Premium 容量才能查看)
- 在 Dynamics 365 设置中:管理 → 系统设置 → 报告选项卡
- 启用:“Power BI 中的可视化”
- 在任何 D365 仪表板上:添加组件 → Power BI 磁贴 → 选择您的报表/仪表板
- 在 D365 表单上:打开表单编辑器 → 插入 → 子网格或 Web 资源 → PowerBI
上下文过滤(来自 D365 记录的报告过滤器)
最强大的嵌入式场景:自动筛选到当前 D365 记录的 Power BI 报表。
例如,打开 D365 帐户记录会显示嵌入的 Power BI 报告,仅显示该帐户的收入历史记录、未结案例和管道 - 用户无需进行过滤。
通过 JavaScript Web 资源进行配置,将当前记录的 GUID 传递到 Power BI 报表筛选器:
// D365 form JavaScript — pass account ID to Power BI filter
function passRecordToReport(executionContext) {
const formContext = executionContext.getFormContext();
const accountId = formContext.data.entity.getId();
// The Power BI report uses this parameter for row filtering
const filterValue = accountId.replace(/[{}]/g, '');
// Update the Power BI visual's filter via PostMessage
const powerBiFrame = document.getElementById('powerBiReport');
powerBiFrame.contentWindow.postMessage(
JSON.stringify({ action: 'filter', accountId: filterValue }),
'https://app.powerbi.com'
);
}
跨模块分析:销售+财务+服务
当您跨模块连接数据时,D365 + Power BI 的真正分析能力就会显现出来。以下是关键的跨模块分析模式:
客户 360 度仪表板
将 Dataverse(销售、服务)与财务数据结合起来:
| 尺寸 | 来源 | 领域 |
|---|---|---|
| 帐户/客户 | 数据宇宙(账户) | 姓名、行业、地区、客户经理 |
| 销售渠道 | 数据宇宙(机会) | 开放运营,预期收入 |
| 订单 | Dataverse(销售订单) | 已确认订单、收入 |
| 支持案例 | 数据宇宙(事件) | 未结案例、SLA 状态、解决时间 |
| 付款 | D365 财经 | 未结发票、付款历史记录 |
| 合同 | 数据宇宙(合约) | 有效合同、续签日期 |
// Customer Health Score (composite measure)
Customer Health Score =
VAR PaymentScore = SWITCH(TRUE(),
[Avg Days to Pay] <= 30, 40,
[Avg Days to Pay] <= 60, 25,
[Avg Days to Pay] <= 90, 10,
0
)
VAR SupportScore = SWITCH(TRUE(),
[Open Cases] = 0, 30,
[Open Cases] <= 2, 20,
[Open Cases] <= 5, 10,
0
)
VAR PipelineScore = IF([Open Pipeline Value] > 10000, 30, 15)
RETURN PaymentScore + SupportScore + PipelineScore
销售到现金分析
跟踪从机会到收到现金的旅程:
Lead → Opportunity → Quote → Order → Invoice → Payment
DAX 阶段转换衡量指标:
// Lead-to-Opportunity Conversion Rate
Lead to Opp Rate =
DIVIDE(
CALCULATE(COUNTROWS(Lead), Lead[statuscode] = 3), -- 3 = Qualified
COUNTROWS(Lead),
0
)
// Quote-to-Order Conversion Rate
Quote Win Rate =
DIVIDE(
CALCULATE(COUNTROWS(Quote), Quote[statecode] = 1), -- 1 = Won
COUNTROWS(Quote),
0
)
// Average Days from Opportunity to Invoice
Avg Sales Cycle Days =
AVERAGEX(
FILTER(Opportunity, Opportunity[statecode] = 1), -- Won
DATEDIFF(Opportunity[createdon], Opportunity[actualclosedate], DAY)
)
安全性:镜像 D365 安全角色
Dynamics 365 使用复杂的安全模型:业务单位、安全角色、团队和字段级安全。 Power BI 的 RLS 可以反映此模型。
基于业务部门的 RLS
// RLS filter — restrict data to user's business unit hierarchy
[OwningBusinessUnit] IN
PATHCONTAINS(BusinessUnit[BusinessUnitPath],
LOOKUPVALUE(
SystemUser[BusinessUnitId],
SystemUser[Email],
USERPRINCIPALNAME()
)
)
销售人员级数据隔离
// Opportunities visible to current user (their own + manager's team)
CALCULATE(
[Total Pipeline Value],
FILTER(
Opportunity,
Opportunity[OwnerEmail] = USERPRINCIPALNAME() ||
Opportunity[OwnerManagerEmail] = USERPRINCIPALNAME()
)
)
对于复杂的 D365 安全层次结构,每天将 D365 安全角色分配同步到 Power BI 维度表,然后基于该映射应用 RLS。
D365 财务仪表板
CFO 财务仪表板 KPI
// Accounts Receivable Turnover
AR Turnover =
DIVIDE([Total Revenue], AVERAGE(Balance_Sheet[AR_Balance]))
// Days Payable Outstanding
DPO =
DIVIDE(
CALCULATE(SUM(VendTransaction[AmountCur]), VendTransaction[TransType] = "Purch"),
DIVIDE([Total COGS], 365),
0
)
// Working Capital
Working Capital =
[Total Current Assets] - [Total Current Liabilities]
// Operating Cash Flow (indirect method)
Operating Cash Flow =
[Net Income] +
[Depreciation & Amortization] +
[Change in Working Capital]
常见问题
Power BI 是否可以与 Dynamics 365 Business Central 配合使用?
是 - Microsoft 为 Power BI 提供了专用的 Business Central 连接器。默认情况下,Business Central 在其角色中心页面中包含嵌入式 Power BI 报告。连接器使用 OData API 并公开 Business Central 的 API 页面(财务条目、项目、客户、供应商)。刷新 Business Central 数据需要 Power BI Pro 或 Premium 许可证,并且 Premium 每天最多支持 48 次刷新。
我可以将 DirectQuery 与 Dataverse 结合使用吗?
是 - Dataverse 连接器支持 DirectQuery 模式。 Dataverse 查询实时针对 Dataverse 服务执行。对于大多数 D365 销售和服务分析(数百万条记录),Dataverse 上的 DirectQuery 表现良好。对于非常大的 Dataverse 环境(100M+ 行),请考虑将数据导入到 Fabric Lakehouse 以获得更好的性能。
如何为外部用户处理 Power BI 中的 Dynamics 365 安全性?
访问嵌入式 Power BI 报告的外部用户(客户、合作伙伴)需要特殊处理。选项包括:具有 Power BI Pro 许可证的 Azure AD B2B 来宾帐户,或具有服务主体身份验证和由应用程序强制执行的行级安全性的 Power BI Embedded (A SKU)。切勿在嵌入式场景中暴露未经过滤的 D365 数据 — 始终应用严格的 RLS 来隔离每个外部用户的数据。
Dynamics 365 Sales Insights 与 Power BI 的集成是什么?
Dynamics 365 Sales Insights (Viva Sales) 在 D365 中本地生成预测分析(机会评分、关系健康状况、管道预测)。该数据存储在 Dataverse 中,并且可以连接到 Power BI 以进行自定义可视化。 Power BI 可以通过外部基准、历史趋势分析和 D365 原生分析中不可用的跨模块关联来增强 Sales Insights 数据。
Power BI 能否取代 Dynamics 365 的内置仪表板?
Power BI 显着扩展了 D365 内置仪表板的功能 — 自定义可视化、复杂的 DAX 度量、跨模块分析和分页报告在 D365 的本机图表编辑器中均不可用。但是,D365 仪表板对于应用程序内的日常操作视图仍然有用。推荐的方法是:用于快速操作视图的 D365 本机仪表板、用于分析和执行报告的 Power BI。
后续步骤
Power BI + Dynamics 365 集成是企业软件市场上最原生、功能最丰富的 BI 集成。投资于这种集成的组织可以获得跨 CRM、ERP 和服务运营的统一可见性,这在以前如果没有定制开发是不可能实现的。
ECOSIRE 的 Power BI 团队专注于 Dynamics 365 分析 — 从简单的嵌入式仪表板到复杂的跨模块 Customer 360 和销售到现金分析。我们提供 Power BI 和 Dynamics 365 专业知识,以确保集成安全、高效,并与您的 D365 安全模型保持一致。
探索我们的Power BI ERP 集成服务 了解 Dynamics 365 实施详细信息,或联系我们的分析团队 设计一个 Power BI 架构,以最大限度地提高您的 Dynamics 365 投资。
作者
ECOSIRE Research and Development Team
在 ECOSIRE 构建企业级数字产品。分享关于 Odoo 集成、电商自动化和 AI 驱动商业解决方案的洞见。
相关文章
Building Financial Dashboards with Power BI
Step-by-step guide to building financial dashboards in Power BI covering data connections to accounting systems, DAX measures for KPIs, P&L visualisations, and best practices.
Case Study: Power BI Analytics for Multi-Location Retail
How a 14-location retail chain unified their reporting in Power BI connected to Odoo, replacing 40 spreadsheets with one dashboard and cutting reporting time by 78%.
GoHighLevel + Power BI: Advanced Reporting and Analytics
Connect GoHighLevel to Power BI for advanced marketing analytics. Build executive dashboards, track multi-channel ROI, and create automated reports that go beyond GHL's native reporting.