Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Preparing for a certification exam? Ask exam experts all your questions on May 15th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Filtro de medición con variables - Ajuste del rendimiento

La siguiente medida Amount3 establecerá las variables de filtro en un valor predeterminado a menos que haya un contexto de filtro externo. A continuación, realizará un cambio para determinar qué columna de la tabla de hechos se va a calcular.

El rendimiento en esta medida es decente, pero me gustaría saber si hay cosas que podamos hacer para que sea más rápido. Por ejemplo, ¿es mejor envolver las expresiones de filtro CALCULATE en KEEPFILTERS()? He hecho un poco de pruebas de rendimiento de dax en eso, pero el rendimiento es inconsistente al agregar y eliminar una función KEEPFILTERS(). Demasiado cerca para llamar en este punto.

Cantidad3 =

FUERON varBookCode = {"B", "Tú"}
FUERON varCP = SI(ISBLANK(SELECTEDVALUE("Perspectiva de una moneda débil"[Perspectiva monetaria])),"Moneda USD",SELECTEDVALUE("Perspectiva de una moneda débil"[Perspectiva monetaria]))
FUERON varLedger = SI(ISBLANK(SELECTEDVALUE('Libro mayor oscuro'[Libro mayor])),"ACTUALES", SELECTEDVALUE('Libro mayor oscuro'[Libro mayor]))
FUERON varLevel = INTERRUPTOR(VERDADERO,
FILTRADO ESTÁ('Empleado de la jornada laboral débil') || FILTRADO ESTÁ('Bloque de tiempo de jornada laboral tenue'), 3,
FILTRADO ESTÁ('Encabezado de diario tenue') || FILTRADO ESTÁ('Línea de diario tenue') || FILTRADO ESTÁ('Fuente de revista tenue') || FILTRADO ESTÁ('Actividad tenue') || FILTRADO ESTÁ('Categoría de recursos tenues') || FILTRADO ESTÁ('Tipo de análisis atenuado') || FILTRADO ESTÁ('Tipo de recurso atenuado') || FILTRADO ESTÁ('Subcategoría de recursos atenuados') || FILTRADO ESTÁ('Calendario oscuro'[Fecha]) , 2,
1)

DEVOLUCIÓN

INTERRUPTOR(VERDADERO,
varCP = "Moneda de transacción" && varLevel = 1, CALCULAR(SUMA('Libro de registro'[Monto de la transacción del libro mayor - Explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
varCP = "Moneda base" && varLevel = 1, CALCULAR(SUMA('Libro de registro'[Importe base del libro mayor - Explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
varCP = "Moneda USD" && varLevel = 1, CALCULAR(SUMA('Libro de registro'[Monto en USD del libro mayor - Explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
varCP = "Moneda de transacción" && varLevel = 2, CALCULAR(SUMA('Libro de registro'[Monto de la transacción del diario - Explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
varCP = "Moneda base" && varLevel = 2, CALCULAR(SUMA('Libro de registro'[Monto Base del Diario - Explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
varCP = "Moneda USD" && varLevel = 2, CALCULAR(SUMA('Libro de registro'[Monto en USD de la revista - Explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
varCP = "Moneda de transacción" && varLevel = 3, CALCULAR(SUMA('Libro de registro'[Importe de la transacción de origen del sistema: explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
varCP = "Moneda base" && varLevel = 3, CALCULAR(SUMA('Libro de registro'[Importe base de la fuente del sistema: explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
varCP = "Moneda USD" && varLevel = 3, CALCULAR(SUMA('Libro de registro'[Fuente del sistema: monto en USD: explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode),
CALCULAR(SUMA('Libro de registro'[Monto en USD del libro mayor - Explícito]), 'Libro de registro'[Nivel de carga] = varLevel, 'Libro de registro'[Libro mayor] = varLedger, 'Libro de registro'[Código del libro] EN varBookCode)
)
1 REPLY 1
Syndicate_Admin
Administrator
Administrator

Hola @jbauer22 ,

En función de la descripción, reutilice los cálculos comunes y utilice la función de resumen.

A continuación, modifique la variable a la siguiente fórmula:

VAR varLevel = SWITCH(
    TRUE,
    ISFILTERED('Dim Workday Employee') || ISFILTERED('Dim Workday Time Block'), 3,
    ISFILTERED('Dim Journal Header') || ISFILTERED('Dim Journal Line') || ISFILTERED('Dim Journal Source') || ISFILTERED('Dim Activity') || ISFILTERED('Dim Resource Category') || ISFILTERED('Dim Analysis Type') || ISFILTERED('Dim Resource Type') || ISFILTERED('Dim Resource Sub Category') || ISFILTERED('Dim Calendar'[Date]), 2,
    1
)

VAR FilteredFactLedger = CALCULATETABLE(
    'Fact Ledger',
    KEEPFILTERS('Fact Ledger'[Load Level] = varLevel),
    KEEPFILTERS('Fact Ledger'[Ledger] = varLedger),
    KEEPFILTERS('Fact Ledger'[Book Code] IN varBookCode)
)

// Calculation the amount using the appropriate column and filter variables
RETURN SWITCH(
    TRUE,
    varCP = "Transaction Currency" && varLevel = 1, SUMX(FilteredFactLedger, 'Fact Ledger'[Ledger Transaction Amount - Explicit]),
    varCP = "Base Currency" && varLevel = 1, SUMX(FilteredFactLedger, 'Fact Ledger'[Ledger Base Amount - Explicit]),
    varCP = "USD Currency" && varLevel = 1, SUMX(FilteredFactLedger, 'Fact Ledger'[Ledger USD Amount - Explicit]),
    varCP = "Transaction Currency" && varLevel = 2, SUMX(FilteredFactLedger, 'Fact Ledger'[Journal Transaction Amount - Explicit]),
    varCP = "Base Currency" && varLevel = 2, SUMX(FilteredFactLedger, 'Fact Ledger'[Journal Base Amount - Explicit]),
    varCP = "USD Currency" && varLevel = 2, SUMX(FilteredFactLedger, 'Fact Ledger'[Journal USD Amount - Explicit]),

Saludos

Sabiduría Wu

Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Helpful resources

Announcements
PBIApril_Carousel

Power BI Monthly Update - April 2025

Check out the April 2025 Power BI update to learn about new features.

Notebook Gallery Carousel1

NEW! Community Notebooks Gallery

Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.

April2025 Carousel

Fabric Community Update - April 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors
Top Kudoed Authors