自定义 Microsoft Dynamics 365 Power BI 内容包
发布日期: 2017年1月
适用于: Dynamics 365 (online),Dynamics CRM Online
Microsoft Power BI 是用于可视化业务数据的一组丰富的服务和工具。 现已提供了内容包,可用于与 Power BI 一起基于标准数据模型分析 Dynamics 365 数据。 内容包使用对大多数销售。服务或市场营销报告方案都十分有用的一组 Dynamics 365 实体和字段生成。
Dynamics 365 的实例通常使用自定义字段扩展。 这些自定义字段在 Power BI 模型中不自动显示。 本主题介绍可用于编辑或扩展内容包中包含的报表以在 Power BI 模型中添加自定义字段的不同方法。
本主题内容
为 Power BI 报表自定义 Dynamics 365 内容包之前执行此操作
自定义 Dynamics 365 内容包
将报表发布到 Power BI 服务
为 Power BI 报表自定义 Dynamics 365 内容包之前执行此操作
自定义内容包之前,请阅读此处的信息,并在必要时执行各任务。
要求
用于编辑 Power BI 报表的 Power BI Desktop 应用程序。
要自定义的内容包的 PBIX 文件。
Dynamics 365(在线) 内容包现在仅支持美国英语。
准备要自定义的内容包
重要
若要将 OData 源连接到您的 Dynamics 365(在线) 实例,必须在自定义内容包之前执行此处介绍的步骤。
启动 Power BI Desktop。
单击“文件”>“打开”,打开内容包(如 Sales Manager.bpix),然后单击“打开”。
将加载内容包中的几页报表并在 Power BI Desktop 中显示。
在“Power BI Desktop“功能区中,单击”编辑查询“。
在“编辑查询”窗口左导航窗格中“查询”下,单击“CRMServiceUrl”查询,然后单击功能区中的“高级编辑器”。 在源定义中,将“base.crm.dynamics.com”替换为 Dynamics 365(在线) 实例 URL。 例如,如果组织名称为 Contoso,该 URL 将如下所示:
源 =“https://contoso.crm.dynamics.com/api/data/v8.0/”
单击“完成”,然后单击“查询编辑器”中的“关闭并应用”。
显示“访问 OData 源”对话框时,单击“组织帐户”,然后单击“登录”。
显示登录页时,输入您的凭据来为您的 Dynamics 365(在线) 实例执行身份验证。
在“访问 Odata 源”对话框中,单击“连接”。
将更新内容包查询。 这可能需要几分钟时间。
自定义 Dynamics 365 内容包
将日期时间字段转换为日期字段以执行报告
向报表添加自定义字段
向“客户”实体的报表添加自定义字段
向报表添加自定义选项集字段
提高查询的行数
将日期时间字段转换为日期字段以执行报告
在 Microsoft Dynamics 365 中,某些日期的保存格式为“日期/时间/时区”,这种格式不太适合聚集报表中的数据。 可以为实体字段转换报表中显示的日期。 例如,可以将“商机创建时间”字段转换为日期以报告“商机创建日期”。
在 Power BI Desktop 中,单击“编辑查询”。
在“查询编辑器”的左导航窗格中“查询”下,单击要更改其日期字段的查询,如“商机”实体查询中的“预计结束日期”。
右键单击列标题(如“预计结束日期”),指向“更改类型”,然后选择其他日期类型(如“日期“)。
单击“保存并应用”以关闭“查询编辑器”。
在 Power BI 主页中,单击“应用更改”更新关联的报表。
向报表添加自定义字段
下面的过程介绍如果向除“客户”实体之外的所有可用实体的报表添加日期、字符串或数字类型的自定义字段。
备注
若要向客户实体添加字段,请参阅 向“客户”实体的报表添加自定义字段。 若要添加选项集类型的字段,请参阅 向报表添加自定义选项集字段。
在 Power BI Desktop 中,单击“编辑查询”。
在“查询编辑器”的左导航窗格中“查询”下,单击要提供给报表使用的自定义字段的查询,如“商机”实体查询。
在右窗格中“应用的步骤”下,单击“已删除的其他列”旁边的设置按钮 。
“选择列”列表将显示实体的所有字段,包括自定义字段。 然后所需自定义字段,然后单击“确定”。
将更新实体查询,并在实体表中为所选自定义字段添加一列。
在右窗格中“应用的步骤”下,单击“语言 - 重命名的列”,然后单击“高级编辑器”,将字段的映射添加到实体查询。 例如,如果“商机”实体的自定义字段名称为 int_forecast,则显示名称为Forecast,而查询应显示为这样。
{"int_forecast","Forecast"}
添加字段映射之后,请确保“高级编辑器”底部不显示任何语法错误。 此外,还请确保字段名称的显示与其在列标题中的显示一模一样,包括字母的大小写也必须正确。 如果未检测到语法错误或表错误,请单击“完成”。
单击“查询编辑器”中的“关闭并应用”。
自定义字段现在出现在实体的右窗格中“字段”下,可添加到新报表或现有报表。
向“客户”实体的报表添加自定义字段
由于“客户”查询使用 Fetch XML 筛选查询,所以用于添加字段的步骤与使用 OData 的其他实体查询有所不同。 若要向 OData queried 实体添加自定义字段,请参阅 向报表添加自定义字段。
复制为“客户”实体编码的 Fetch XML 查询。 为此,请按照以下步骤操作:
a. 在 Power BI Desktop 中,单击“编辑查询”。
b. 在“查询编辑器”左导航窗格中“查询”下,单击“客户”实体查询,然后单击功能区中的“高级编辑器”。
c. 从 %3Cfetch 开始并以 fetch%3E 结束的第一行,复制整个编码的 Fetch XML。
d. 所复制编码的 Fetch XML 应如下所示:
%3Cfetch%20version%3D%221.0%22%20output-format%3D%22xml-platform%22%20mapping%3D%22logical%22%20distinct%3D%22true%22%3E%3Centity%20name%3D%22account%22%3E%3Cattribute%20name%3D%22territorycode%22%20%2F%3E%3Cattribute%20name%3D%22customersizecode%22%20%2F%3E%3Cattribute%20name%3D%22owningbusinessunit%22%20%2F%3E%3Cattribute%20name%3D%22ownerid%22%20%2F%3E%3Cattribute%20name%3D%22originatingleadid%22%20%2F%3E%3Cattribute%20name%3D%22revenue%22%20%2F%3E%3Cattribute%20name%3D%22sic%22%20%2F%3E%3Cattribute%20name%3D%22marketcap%22%20%2F%3E%20%3Cattribute%20name%3D%22parentaccountid%22%20%2F%3E%3Cattribute%20name%3D%22owninguser%22%20%2F%3E%3Cattribute%20name%3D%22accountcategorycode%22%20%2F%3E%3Cattribute%20name%3D%22marketcap\_base%22%20%2F%3E%3Cattribute%20name%3D%22customertypecode%22%20%2F%3E%3Cattribute%20name%3D%22address1\_postalcode%22%20%2F%3E%3Cattribute%20name%3D%22numberofemployees%22%20%2F%3E%3Cattribute%20name%3D%22accountratingcode%22%20%2F%3E%3Cattribute%20name%3D%22address1\_longitude%22%20%2F%3E%3Cattribute%20name%3D%22revenue\_base%22%20%2F%3E%3Cattribute%20name%3D%22createdon%22%20%2F%3E%3Cattribute%20name%3D%22name%22%20%2F%3E%3Cattribute%20name%3D%22address1\_stateorprovince%22%20%2F%3E%3Cattribute%20name%3D%22territoryid%22%20%2F%3E%3Cattribute%20name%3D%22accountclassificationcode%22%20%2F%3E%3Cattribute%20name%3D%22businesstypecode%22%20%2F%3E%3Cattribute%20name%3D%22address1\_country%22%20%2F%3E%3Cattribute%20name%3D%22accountid%22%20%2F%3E%3Cattribute%20name%3D%22address1\_latitude%22%20%2F%3E%3Cattribute%20name%3D%22modifiedon%22%20%2F%3E%3Cattribute%20name%3D%22industrycode%22%20%2F%3E%3Clink-entity%20name%3D%22opportunity%22%20from%3D%22parentaccountid%22%20to%3D%22accountid%22%20alias%3D%22ab%22%3E%3Cfilter%20type%3D%22and%22%3E%3Ccondition%20attribute%3D%22opportunityid%22%20operator%3D%22not-null%22%20%2F%3E%3Ccondition%20attribute%3D%22modifiedon%22%20operator%3D%22last-x-days%22%20value%3D%22365%22%20%2F%3E%3C%2Ffilter%3E%3C%2Flink-entity%3E%3C%2Fentity%3E%3C%2Ffetch%3E
解码编码的 Fetch XML。 它必须是有效的编码的 Fetch XML,并且在解码后应如下所示:
\<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true"\> \<entity name="account"\> \<attribute name="territorycode" /\> \<attribute name="customersizecode" /\> \<attribute name="owningbusinessunit" /\> \<attribute name="ownerid" /\> \<attribute name="originatingleadid" /\> \<attribute name="revenue" /\> \<attribute name="sic" /\> \<attribute name="marketcap" /\> \<attribute name="parentaccountid" /\> \<attribute name="owninguser" /\> \<attribute name="accountcategorycode" /\> \<attribute name="marketcap\_base" /\> \<attribute name="customertypecode" /\> \<attribute name="address1\_postalcode" /\> \<attribute name="numberofemployees" /\> \<attribute name="accountratingcode" /\> \<attribute name="address1\_longitude" /\> \<attribute name="revenue\_base" /\> \<attribute name="createdon" /\> \<attribute name="name" /\> \<attribute name="address1\_stateorprovince" /\> \<attribute name="territoryid" /\> \<attribute name="accountclassificationcode" /\> \<attribute name="businesstypecode" /\> \<attribute name="address1\_country" /\> \<attribute name="accountid" /\> \<attribute name="address1\_latitude" /\> \<attribute name="modifiedon" /\> \<attribute name="industrycode" /\> \<link-entity name="opportunity" from="parentaccountid" to="accountid" alias="ab"\> \<filter type="and"\> \<condition attribute="opportunityid" operator="not-null" /\> \<condition attribute="modifiedon" operator="last-x-days" value="365" /\> \</filter\> \</link-entity\> \</entity\> \</fetch\>
提示
网上有许多免费提供的 URL 编码器和解码器工具。
在 Fetch XML 中,将您的自定义实体作为属性节点在 <entity> 节点之间添加。 例如,若要添加名称为 customclassificationcode 的自定义字段,请在另一个属性节点(如“industrycode”)后添加该节点。
<attribute name="industrycode" /> <attribute name=" customclassificationcode "/> <link-entity name="opportunity" from="parentaccountid" to="accountid" alias="ab">
URL 将为更新后的 Fetch XML 编码。 必须为包含新自定义属性的 Fetch XML 编码,然后将其用于替换内容包随附的现有 OData 源查询。 方法是,将更新后的 FetchXML 复制到剪贴板,然后将其粘贴到 URL 编码器中。
将编码的 Fetch XML URL 粘贴到 OData 源中。 方法是,将编码的 URL 粘贴到“Query=[fetchXml=”文本后的引号之间以替换现有编码的 FetchXML,然后单击“完成”。
下面的屏幕截图显示最左的引号的位置。
在右窗格中“应用的步骤”下,单击“已删除的其他列”旁边的设置按钮 。
“选择列”列表将显示实体的所有字段,包括自定义字段。 选择在前面添加到 Fetch XML 查询的自定义字段(如 customclassificationcode),然后单击“确定”。
备注
您在“列选择器”中选择的字段名必须与您添加到 FetchXML 查询的字段名匹配。
将更新实体查询,并在实体表中为所选自定义字段添加一列。
单击“查询编辑器”中的“关闭并应用”。
自定义字段现在出现在实体的右窗格中“字段”下,可添加到新报表或现有报表。
向报表添加自定义选项集字段
选项集字段用于从多个值中进行选择。 商机的“等级”和“销售阶段”字段就是现成的选项集字段。 想象以下您在“商机”窗体上有一个自定义选项集字段,并且该字段具有以下值和标签。
若要向报表添加自定义选项集字段,请执行以下步骤。
添加自定义字段列。
在“查询编辑器”左导航窗格中“查询”下,单击具有关联的自定义选项集的实体,如“商机”实体。
在右窗格中“应用的步骤”下,单击“已删除的其他列”旁边的设置按钮 。
“选择列”列表将显示实体的所有字段,包括自定义字段。 选择自定义字段(如 new_customoptionset),然后单击“确定”。
单击“保存”,然后在系统提示时,单击“应用”。
将在实体表中显示该自定义字段的列。
创建选项集查询。
a. 在 Power BI Desktop 中,单击“编辑查询”。
b. 在查询编辑器的左导航窗格中 “查询”下,单击“创建表”组下拥有与您要添加到报表的选项集最相似的选项集字段的查询。 对于此示例,“SalesStageOptionSet”查询有四个选项,因此很适合选择。
c. 单击“高级编辑器”。
将显示选项集查询。
d. 将整个查询复制到剪贴板。 可以将其粘贴到文本编辑器(如“记事本”)中,供以后参考。
e. 在“查询编辑器”中,右键单击“创建表”组,单击“新建查询”,然后单击“空白查询”。
f. 在右窗格中“名称”下,输入一个名称(如 CustomOptionSet),然后按 Enter 键。
g. 单击“高级编辑器”。
h. 在“高级编辑器”中,粘贴您在前面复制的查询。
i. 将现有值和选项替换为您的自定义值和选项。 在此示例中,您将把这个
let Source = #table({"Value","Option"},{{0,"Qualify"},{1,"Develop"},{2,"Propose"},{3,"Close"}}) in Source
更改为这个。
let Source = #table({"Value","Option"},{{0,"A"},{1,"B"},{2,"C"},{3,"D"},{4,"E"}}) in Source
j. 确保无语法错误,然后单击“完成”关闭“高级编辑器”。 将在“查询编辑器”中显示值和选项的表。
k. 单击“保存”,然后在系统提示时,单击“应用”。
插入实体和自定义选项集表的合并查询。
a. 在“查询编辑器”的左窗格中“实体”下,单击包含自定义选项集的实体。 对于此示例,选择的是“商机”实体查询。
b. 在功能区中,单击“合并查询”,然后在系统提示插入步骤时,单击“插入”。
c. 在“合并”对话框中,单击自定义选项集的列标题,如 new_optionset。 在下拉列表中,选择前面创建的相应选项集查询。 显示选项集表时,单击“值”列标题将其选中。
d. 让联接类型保持为“左向外(全部从第一个开始,匹配从第二个开始)”,然后单击“确定”。
提示
重命名合并查询。 在应用的步骤"下,右键单击您创建的查询,单击“重命名”,然后输入描述性名称,例如 Merge CustomOptionSet。
定义列,以便仅显示标签。
a. 在“查询编辑器”的左窗格中“实体”下,单击包含自定义选项集的实体。 对于此示例,选择的是“商机”实体查询。
b. 在右窗格中“应用的步骤”下,单击一个扩展的查询显示合并列,如“Expanded SalesStage”。
c. 找到并单击前面的合并查询步骤部分创建的心列的列标题。
d. 在“转换”选项卡上,单击“扩展”。
e. 在“扩展新列”对话框中,清除与值对应的列(因为列中仅应显示标签)。 单击“完成”。
- 单击“保存”,然后在系统提示时,单击“应用”。
更改报表生成的列名。
a. 在“查询编辑器”的左窗格中“实体”下,单击包含自定义选项集的实体。 对于此示例,选择的是“商机”实体查询。
b. 单击“高级编辑器”。
c. 添加重命名的列行项,确保无语法错误,然后单击“完成”。 在此示例中,前面创建的自定义选项集列名为“NewColumn”,该列名将重命名为 Custom Option Set。
- 单击“保存”,然后在系统提示时,单击“应用”。
单击“保存并应用”以关闭“查询编辑器”。
现在可使用自定义选项集生成 Power BI 报表。
提高查询的行数
默认情况下, Microsoft Dynamics 365 内容包中的所有 Power BI 实体查询都不能超过 100,000 行。 若要提高可查询的行数,请执行以下步骤。
重要
提高行计数限制可显著影响刷新报表所用时间。 此外,Power BI 服务有 30 分钟的运行查询限制。 提高行计数限制时,请务必小心谨慎。
在 Power BI Desktop 中,单击“编辑查询”。
在“查询编辑器”左导航窗格中“查询”下,单击要提高其行技术限制的实体查询,如“潜在顾客”实体。
在右窗格中“应用的步骤”下,单击“保留首行”。
提高筛选的行数。 例如,若要提高到 150,000,请将 Table.FirstN(#"Filtered Rows",100001) 更改为 Table.FirstN(#"Filtered Rows",150000)
在右窗格中“应用的步骤”下,单击“检查行计数”。
找到步骤的“>100,000”部分。
将值提高到更大数字,如“150,000”。
单击“查询编辑器”中的“关闭并应用”。
将报表发布到 Power BI 服务
在几乎任何设备上从任何位置发布报表以实现组织共享和访问。
在 Power BI Desktop 主页“开始”选项卡功能区上,单击“发布”。
如果系统提示您登录 Power BI 服务,请单击“登录”。
如果有多个可用目标,请选择需要的目标,然后单击“发布”。
另请参阅
将 Power BI 与 Microsoft Dynamics 365 结合使用
© 2017 Microsoft。 保留所有权利。 版权