使用筛选器函数,而不是时间序列函数

本主题介绍时间序列函数与筛选器函数之间的差异,以及如何实施筛选器函数。此信息对工作簿和经典仪表盘均适用。

时间序列函数与筛选器函数

通过时间序列函数 AgoTodate 可以很简单地创建用于计算 year-ago、year-to-date 等内容的度量。此方法适用于业务用户报表;但是,这些函数会生成将显著降低性能的复杂查询。此外,每次在报表中使用其中一个函数时,都会使用更多的数据库资源生成一个额外的子查询。

在经典仪表盘中,为了实现同样的结果,通常可以结合使用基本度量和 Filter 函数来筛选适当的时段,而不是使用时间序列函数。此方法对于业务用户报表来说可能过于复杂,但它适合用在由 IT 团队预定义的仪表盘中。使用此方法时,生成的物理 SQL 代码简单得多且更高效,并且不需要额外的子查询。这意味着 SQL 查询运行速度会更快而且使用的数据库资源会更少,从而降低数据库的整体 CPU 占用率和输入输出调用。

下图显示了一个物理查询示例,这是在同一报表中同时使用基本度量和 Month Ago 度量时生成的物理查询。将生成两个查询。

GUID-37245A7E-00E9-4071-9627-1A5BAED91311-default.jpg 的说明如下
.jpg 的说明

下图显示了改用 Filter 函数时为单个查询生成的 SQL 代码。

GUID-F1D33998-F8D4-40BF-B630-6EDCEF1DCEFC-default.jpg 的说明如下
.jpg 的说明

在仪表盘中使用提示实施筛选器函数

在大多数实施中,仪表盘已经包括提示,以便用户可以选择他们要查找的月份。第一步是标识将需要基于用户所选内容进行筛选的时段。

在此示例中,日历维包括 Julian Period Number 列,因为它使计算变得更加轻松。在没有 Julian Period Number 的情况下,这也是可行的,但需要更复杂的公式来计算所选时段。

  1. 修改 Month 提示以添加表示变量 (MonthSelected)。

    GUID-DEEBC7D1-806C-48E9-965C-6131745A65CE-default.png 的说明如下
    .png 的说明

  2. 创建一个单独的仪表盘提示,以检索相应的 Julian Period Number 并将其放入另一个变量 (PeriodNumberSelected) 中。第二个提示不会向最终用户显示,而是隐藏在仪表盘中,并根据变量 MonthSelected 自动计算值。

    GUID-D41AE43F-CD62-498D-B041-9700D586BF77-default.png 的说明如下
    .png 的说明

  3. 编辑仪表盘属性,然后单击筛选器和变量
  4. 添加 Julian Period 提示路径。

    GUID-E46E926E-F0A3-4934-9D10-F0119B9109DF-default.jpg 的说明如下
    .jpg 的说明

  5. 在分析中,删除 Month 列中的全局筛选器,然后根据需要使用基于 Julian Period Number 的列公式筛选器函数。以下是一些示例:

    Current Month: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800})

    Month Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-1)

    Year Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-12)

    Year to date: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"<=@{PeriodNumberSelected}{80800} and “Time”.”Year”=@{YearSelected}{2019})

在工作簿中使用参数实施筛选器函数

您可以在工作簿中应用相同原则。提示和表示变量将替换为仪表盘筛选器和参数。

创建三个参数:MonthSelected、PeriodNumberSelected 和 YearSelected。仪表盘筛选器的画布中仅显示参数 MonthSelected。

参数 MonthSelected 的可能值基于一个选择所有月份的逻辑 SQL 查询来定义。

对于参数 PeriodNumberSelected 和 YearSelected,不填充“可能的值”。GUID-B0D153C1-7DDF-445F-BF09-7E21EBECB88B-default.jpg 的说明如下
.jpg 的说明

仅使用一个逻辑查询来填充“初始值”,该查询基于 MonthSelected 值进行筛选。GUID-C21AC2BA-E3B8-43BC-A812-517A074DBFA2-default.jpg 的说明如下
.jpg 的说明