动态报表是开发人员可以根据用户规范更改数据的报表。 可以通过确定要在报表中要查看其数据的值来使用参数,报表会通过筛选数据来相应地进行更新。对于数据量非常大,影响Power BI 运行性能的,可以通过这个动态更改数据源筛选的方法。
通过创建动态报表,可使用户更大程度地控制报表中显示的数据;他们可自行更改数据源并筛选数据。
接下来我用案例来操作具体步骤。
数据库用 SQL Server 上的数据库来做。
一,链接数据库
1,输入服务器详细信息后,请在“SQL Server 数据库”窗口中选择“高级选项”。
2,将 SQL 查询粘贴到“SQL 语句”框,然后选择“确定”。
select incident.incident_id "INCIDENT_ID", incident.short_desc "SUMMARY", incident.inc_status ""STATUS"" from inciden WHERE [INCIDENT_ID] = "52044482"
3,选择“编辑”,以在 Power Query 编辑器中打开数据。
二,接下来,你将按照以下步骤创建参数
1,在“开始”选项卡上,选择“管理参数”>“新建参数”。
2,在“参数”窗口中,将默认参数名称更改为更具描述性的名称,使其用途明确。 在此例中,你会名称更改为“SalesTable”。
3,从“类型”列表中选择“文本”,然后从“建议值”列表中选择“任何值”。
4,选择“确定” 。
此时将为你创建的参数显示一个新查询。
三,现在需要调整 SQL 查询中的代码,以访问你的新参数
1,右键单击“Query1”,然后选择“高级编辑器”。
2,将执行语句中的现有值替换为与号 (&),后跟参数名称 (SalesTable),如下图所示。
3,然后选择“完成”。虽然在屏幕上看不到差别,但 Power BI 运行了查询。
4,若要确认查询是否已运行,可选择参数查询并在“当前值”框中输入一个新值来运行测试。
5,查询旁边可能会显示警告图标。 如果出现,请选择该查询来查看警告消息,其中会指出需要权限才能运行此本机数据库查询。 选择“编辑权限”,然后选择“运行”。
四,现可将参数应用于报表
1,选择“编辑查询”>“编辑参数”。
2,在“编辑参数”窗口中,输入一个新值,然后选择“确定”。
3,选择“应用更改”,接着再次运行本机查询。
4,现在,在Query1表查看数据时,你会看到通过参数传递的新值的数据。
五,为多个值创建动态报表
1,若要一次满足多个值,首先需要创建一张 Microsoft Excel 工作表,表中有一列,该列包含Query1表里用于做参数的值列表。
2,接下来,使用 Power BI Desktop 中的“获取数据”功能连接到该 Excel 工作表中的数据,然后执行以下步骤
(1)在“导航器”窗口中选择“编辑”,在 Power Query 编辑器中打开数据,你将看到一个新的数据表查询。
(2)查询窗格中的表
(3)将表中的列重命名为更具描述性的名称。
(4)将列数据类型更改为“文本”,使其与参数类型相匹配,并避免数据转换问题。
六,接下来,需要创建一个函数,它将新的 INCIDENT_ID 查询传递到 Query1
1,右键单击“Query1”,然后选择“创建函数”。
2,输入函数的名称,然后选择“确定”
新函数将在“查询”窗格中显示。
3,若要确保 Query1 不显示在报表的字段列表中(这可能会使用户感到困惑),可再次右键单击“Query1”,然后选择“启用加载”(默认已选中)来禁用此功能。
4,选择从 Excel 工作表加载的“Sheet”查询,然后在这个表中添加一列。点击“添加列”选项卡上,选择“调用自定义函数”来运行你创建的自定义函数。
5,从“功能查询”列表中选择你的函数。“新列名”自动更新,并且默认情况下会选择包含你要通过参数传递的值的表。
6,选择“确定”;如果必要,请运行本机查询。在 “INCIDENT_ID” 列的旁边显示“GetSalesFromSalesTale”函数的新列。
7,选择新列标题中的双箭头图标,然后选中要加载的列的复选框。
8,清除屏幕底部的“使用原始列名作为前缀”复选框,因为无需在报表中看到使用列名的前缀。
9,选择“确定” 。此时你可以在Sheet表中看到 所有所选参数的数据。
七,在Excel 工作表中控制报表展示的 INCIDENT_ID
1,如果需要,可将更多值 “INCIDENT_ID” 添加到 Excel 工作表中的 INCIDENT_ID 列,也可更改现有值。
2,保存更改,然后回到 Power Query 编辑器。
3,“刷新预览”,然后再次运行本机查询(如有必要),你将在此处的“字段”窗格中看到新列名。
以上就是所有用参数创建动态报表的全部过程。