我是Power BI的新手,正在做一些工作。 我在SQL Server数据库中有数百万条记录,我想要实现的是.. 每当我的同事在Power BI上打开报告时,它都必须询问date参数。 提交日期后,必须转到SQL Server并获取数据,然后必须显示报告。
有可能吗? 如果是这样,有人可以告诉我如何实现吗?
答案 0 :(得分:1)
如果在报表中定义参数并将其用于过滤数据,则在加载报表时,将加载与过滤器匹配的数据。您可以提供一个默认值,您知道该默认值不会返回任何数据(例如,如果要在某个日期或之后显示数据,则为将来的日期)。
您可以声明一个参数(在日期数据类型的情况下)并使用它来过滤数据。要声明它,请在Power BI Desktop中打开报表,转到Power Query Editor
(通过单击功能区中的Edit Queries
按钮)并在Manage Parameters
对话框中定义一个新参数:
确保参数的数据类型与您的数据类型匹配,即,如果您的数据有时间,请定义Date/Time
参数。如果您的数据是Date
,请定义Date
数据类型参数。
然后转到要过滤的查询,然后单击要过滤的列标题中的按钮。在日期/时间过滤器菜单中,选择如何过滤数据,例如提取某个日期或之后的数据:
然后,您可以关闭Power Query Editor
并返回到报告。您可以在Edit Queries
-Edit Parameters
下的下拉菜单中更改参数的值。
如果要避免加载参数默认值的数据,可以将此报告另存为模板(File
-> Export
-> Power BI template
),然后发送这个模板给你的同事。当他们打开它时,将提示他们输入已定义参数的值,只有在此之后,报表才会连接到数据源并获取匹配的数据。这意味着,首先,您没有使用Power BI Online,而是将报告作为文件共享,其次,您的同事可以访问数据源以加载数据。
如果必须将报告发布到Power BI Online,则可以使用完全不同的技术-而不是定义参数pass the filter in the report's URL。报表正常加载后(例如,您转到工作区并打开报表),它将显示所有数据(不会被过滤)。但是,您可以通过在浏览器地址栏中看到的报表URL上附加?filter=MyTable/DateColumn ge 2019-02-04
来为同事准备一个特殊的URL。将MyTable
替换为要过滤的表的名称(例如SalesData
),将DateColumn
替换为要过滤的表的名称(例如SalesDate
) 。如果这些名称中有空格you must replace them with _0x0020_
,但如果可能,请避免使用它们。之后,过滤器定义了operator进行过滤,例如ge
的意思是greater than or equals
。最后是值(您的情况下的日期)。
您可以创建一个网页,用户可以在其中选择日期,并且该页面将为您的报告生成适当的URL。或者,您也可以创建另一个报告,其中URL根据某些条件(例如,从切片器中选择日期)构造为计算列或度量,用户可以单击hyperlink,这将加载实际的报告,但已过滤。