Uso de funciones de filtro en lugar de funciones de serie de tiempo

En este tema se explica la diferencia entre las funciones de serie de tiempo y las funciones de filtro y cómo implantar funciones de filtro. Esta información se aplica tanto a los libros de trabajo como a los paneles de control clásicos.

Funciones de serie de tiempo frente a funciones de filtro

Las funciones de serie de tiempo Ago y Todate ofrece una forma simple de crear métricas para calcular year-ago, year-to-date, etc. Este método funciona muy bien para los informes de usuario empresarial; sin embargo, estas funciones generan consultas complejas que tienen un costo significativo sobre el rendimiento. Además, cada vez que se utiliza una de estas funciones en un informe, se genera una subconsulta adicional utilizando incluso más recursos en la base de datos.

En los paneles de control clásicos, en lugar de utilizar funciones de serie de tiempo, puede obtener normalmente el mismo resultado utilizando las métricas base con la función Filter para filtrar por el período de tiempo apropiado. Este método podría ser demasiado complejo para los informes de usuario empresarial, pero funciona muy bien en los paneles de control predefinidos por el equipo de TI. Con este método, el código SQL físico generado es mucho más simple y más eficiente, y no requiere una subconsulta adicional. Esto significa que la consulta SQL se ejecuta con más rapidez y utiliza menos recursos en la base de datos, lo que reduce el uso global de CPU de base de datos y las llamadas de entrada-salida.

En la siguiente figura se muestra un ejemplo de la consulta física que se genera cuando utiliza tanto la métrica base como la métrica Ago de mes en el mismo informe. Se generan dos consultas.

A continuación se muestra la descripción de GUID-37245A7E-00E9-4071-9627-1A5BAED91311-default.jpg
.jpg

En la siguiente imagen se muestra el código SQL que se genera para una única consulta cuando utiliza una función Filter en su lugar.

A continuación se muestra la descripción de GUID-F1D33998-F8D4-40BF-B630-6EDCEF1DCEFC-default.jpg
.jpg

Implantación de funciones de filtro en un panel de control con peticiones de datos

En la mayoría de las implantaciones, el panel de control incluye una petición de datos para que los usuarios puedan seleccionar el mes que buscan. El primer paso es identificar los períodos de tiempo por los que necesita filtrar según la selección de un usuario.

En este ejemplo, la dimensión de calendario incluye la columna Julian Period Number porque esta hace que el cálculo sea más sencillo. Esto también es factible sinJulian Period Number pero requeriría fórmulas mucho más complejas para calcular el período de tiempo seleccionado.

  1. Modifique la petición de datos de Month para agregar la variable de presentación (MonthSelected).

    A continuación se muestra la descripción de GUID-DEEBC7D1-806C-48E9-965C-6131745A65CE-default.png
    .png

  2. Cree una petición de datos de panel de control independiente para recuperar Julian Period Number y colocarlo en otra variable (PeriodNumberSelected). Esta segunda petición de datos no se muestra al usuario final, sino que se oculta en el panel de control y el valor se calcula automáticamente según la variable MonthSelected.

    A continuación se muestra la descripción de GUID-D41AE43F-CD62-498D-B041-9700D586BF77-default.png
    .png

  3. Edite las propiedades del panel de control y haga clic en Filtros y variables.
  4. Agregue la ruta de la petición de datos de Julian Period.

    A continuación se muestra la descripción de GUID-E46E926E-F0A3-4934-9D10-F0119B9109DF-default.jpg
    .jpg

  5. En el análisis, suprima el filtro global en la columna Month y utilice las funciones de filtro de fórmulas de columna basadas en Julian Period Number según sea necesario. A continuación se muestran algunos ejemplos:

    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})

Implantación de funciones de filtro en un libro de trabajo con parámetros

Puede aplicar el mismo principio en un libro de trabajo. Las peticiones de datos y las variables de presentación se sustituyen por un filtro y parámetros de panel de control.

Cree tres parámetros: MonthSelected, PeriodNumberSelected y YearSelected. Solo se muestra el parámetro MonthSelected en el lienzo en un filtro de panel de control.

Los posibles valores del parámetro MonthSelected se definen según una consulta SQL lógica que selecciona todos los meses.

Para los parámetros PeriodNumberSelected y YearSelected, los posibles valores no se rellenan.A continuación se muestra la descripción de GUID-B0D153C1-7DDF-445F-BF09-7E21EBECB88B-default.jpg
.jpg

Solo se rellena el valor inicial con una consulta lógica filtrada según el valor de MonthSelected.A continuación se muestra la descripción de GUID-C21AC2BA-E3B8-43BC-A812-517A074DBFA2-default.jpg
.jpg