本地化 Power BI 服务和 Power BI Report Builder 中的日期参数

适用于:Power BI 分页报表Power BI 服务 Power BI Desktop

Power BI Report Builder 中的报表的日期类型参数行为方式与 Power BI 服务中已发布的报表之间存在差异。 在本文中,你将学习如何将多值下拉控件中显示的日期参数值本地化为你选择的语言。

在 Power BI Report Builder 中,日期参数采用客户端操作系统的格式。 例如,如果操作系统设为德语区域设置,则参数的格式为 dd/mm/yyyy。 但是,在将报表发布到 Power BI 服务时,多值参数的下拉值采用美国格式,即 mm/dd/yyyy。 出现这种变化的原因是,为了在世界各区域实现一致的报表处理,生成参数值的主机服务器始终采用美国格式。

如果有可用值,将显示多值复选框控件。

显示多选下拉日历的屏幕截图。

分页报表中日期参数的显示方式有三种变体。 当参数设置了可用值时,第一个变体是前面提到的控件。 第二个变体适用于没有可用值、可能具有一些默认值并允许多个值的情况。 参数显示在多行可编辑文本框中。

显示多值默认值的屏幕截图。

第三个变体适合具有单个值参数的情况。 日期值显示在日期选取器控件中。 日期选取器控件是一个本地化控件。 我们添加了逻辑,便于在浏览器的客户端区域设置中显示参数值。

显示日历控件的屏幕截图。

本文讲解所提到的第一个控件,即多值全选控件。 当日期参数绑定到多值数据集时,报表作者无法编写表达式来修改参数标签。 仅使用数据集值。 但是,这并不意味着参数标签和参数值需要是相同的值。 标签可以是所需的任何字符串, 例如“EndOfMonth”。 但最常见的情况是,要处理来运行报表的日期值。

下面是参数标签的示例,其中包含与参数值不同的数据集字段。

显示数据集参数属性对话框的屏幕截图。

通常,你无法控制数据,必须创造性地使用报表数据,使其对所有使用者都有用。 可以在执行报表时更改或添加数据。 大多数数据源允许在执行查询时向数据集添加新字段。 本文使用一个 DAX 示例向 Power BI 语义模型添加新列,以便我们可以正确地本地化多值日期参数的标签。

本地化日期参数的显示值

你已经有包含数据的报表,但 Power BI 服务未以查看报表的用户的区域设置格式显示日期参数。 为了以正确的格式显示日期,请调整报表和数据集,使其包含客户端本地化参数日期值。

  1. 添加新的内部报表参数以传递给数据集查询参数。
  2. 添加新的查询参数以在数据集查询中使用。
  3. 在查询中使用数据集参数创建新的本地化日期字段。
  4. 更新日期参数标签字段
  5. 将内部报表参数移到日期参数的前面。
  6. 发布更新后的报表

添加新的内部报表参数

在 Report Builder 中创建内部文本报表参数。 在这种情况下,参数称为“InternalUserDateFormat”。

显示内部报表参数对话框的屏幕截图。

然后,将表达式添加到默认值,确定基于 Users!Language 的日期格式。

显示为默认值设置的表达式代码的屏幕截图。

对默认值设置的表达式代码

=SWITCH 
( 
User!Language = "en-US", "mm/dd/yyyy", 
User!Language = "en-NZ", "dd/mm/yyyy", 
User!Language = "de", "yyy-mm-dd", 
User!Language = "fi", "dd.mm.yyyy", 
User!Language = "jp", "yyyy.dd.mm", 
1=1, "mm/dd/yyyy" 
) 

添加新的查询参数

数据集本身并不知道如何使用报表级参数。 在报表中用于日期参数的数据集上,添加绑定到新的“InternalUserDateFormat”报表参数的数据集参数。

显示数据集属性对话框的屏幕截图。

在查询中使用数据集参数

然后,使用数据集参数促使得到要用作标签的新日期列的格式。 以下示例来自具有三个日期值的 Power BI 语义模型。 使用 DAX 中的 ADDCOLUMNS 函数添加一个新字段,该字段根据新报表参数的客户端值提供的信息进行本地化。 示例查询输出适用于芬兰语区域设置“fi-FI”。 保存数据集。

显示“查询设计器”对话框的屏幕截图。

DAX 代码片段

DEFINE 

TABLE FormattedTable = ADDCOLUMNS('Table2', "FormattedDate", FORMAT([Date], @DateFormat)) 

EVALUATE SUMMARIZECOLUMNS('FormattedTable'[Date], 'FormattedTable'[FormattedDate])  

注意

在查询设计器中,请确保为参数设置值,否则查询无法成功运行。 这是工具栏中的第一个 @ 图标。

显示“查询设计器”参数的屏幕截图。

更新日期参数标签字段

编辑报表参数。 更改标签来使用数据集当前生成的新“FormattedDate”字段。

显示参数属性更改标签的屏幕截图。

将内部参数移到日期参数的前面

内部参数必须移到日期参数的前面。 否则,将遇到前向依赖错误,并且不会呈现报表。

显示“报表数据”窗格移动参数的屏幕截图。

发布更新后的报表

将报表发布到 Power BI 服务后,报表用户看到的日期参数现在采用用户的客户端格式。 在此示例中,正文将语言表达式设置为 User!Language,客户端区域设置设为“en-NZ”:

显示已发布的报表中的下拉菜单的屏幕截图。

提示

若要在 Power BI 服务中轻松测试不同的区域设置,请将 &language="xx-XX" 添加到 URL。 Power BI 服务几乎接受任何两部分区域设置。 此示例使用新西兰“en-NZ”。

后续步骤