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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
bdn008
Advocate I
Advocate I

Conflicto de Time Intelligence en dos medidas

Hola

Tengo un informe que utiliza una medida para calcular un número acumulado basado en el tiempo. Tengo una tabla de calendario compartida en todas las tablas. Mi problema es que una medida con inteligencia de tiempo (TI) usando otra medida con un tiempo diferente Inteligencia se confundirá. Necesito ayuda para encontrar una manera de permitir que la TI original no se filtre por la medida using.

La medida acumulativa es golpe y funciona muy bien.

**bleep** Entrega - CALCULATE(

SUM('i0026 AUX_MAT_DLV_PRD'[QUANTITY]),

FILTER(ALLSELECTED('Calendar'),

'Calendario'[Fecha] <-MAX('Calendario'[Fecha])))

También tengo otra medida para contar todos los errores:

Error ( Failure)

DISTINCTCOUNT('i0026 PROD_REPAIR'[UNIT_NO_TXT])

Necesito calcular una tarifa mensual (que es el error, dividido por **bleep** Entrega) y la medida a continuación funciona perfectamente al mes en una tabla de tiempo.

%MRR % ?

DIVIDE(

[Error],[**bleep** Entrega])

El problema que tengo es cuando quiero calcular un promedio móvil de 3 meses de ese MRR%. La medida siguiente no funciona

3mra MRR % ?

CALCULATE(

[MRR %],

DATESINPERIOD ('Calendario'[Fecha],LASTDATE('Calendario'[Fecha]),-3,MONTH)

)

Creo que porque DATEINPERIOD filtra la medida [**bleep** Entrega] además del filtro de tiempo original que tiene:

FILTER(ALLSELECTED('Calendar'),

'Calendario'[Fecha] <-MAX('Calendario'[Fecha])))

Por favor, aconséjese.

8 REPLIES 8
v-eachen-msft
Community Support
Community Support

Hola @bdn008 ,

Puedes probar DATESBETWEEN(). Aquí están los códigos para su referencia.

Measure 2 =
VAR __EndDate =
    EOMONTH ( LASTDATE ( 'Table'[Date] ), 0 )
VAR __StartDate =
    DATE ( YEAR ( __EndDate ), MONTH ( __EndDate ) - 12, 1 )
RETURN
    CALCULATE ( [Measure], DATESBETWEEN ( 'Table'[Date], __StartDate, __EndDate ) )

Community Support Team _ Eads
If this post helps, then please consider Accept it as the solution to help the other members find it.

@v-eachen-msft Gracias por la respuesta PERO esto no resolvió el problema.

DATESBETWEEN trabajó de manera muy similar a DATESINPERIOD.

El problema es cómo permitir un filtrado de tiempo diferente en la segunda medida MIENTRAS se aplica el filtrado de tiempo original en la primera medida. Si tuviera una tabla calculada que resultara en un valor en la tabla de hechos, tal vez funcionaría. Pero realmente prefiero usar una medida. Además, sé que ALLSELECT en la primera medida es el problema, pero todavía tengo que permitir que ambas medidas funcionen.

Todavía con la esperanza de obtener algunas ideas...

Usted debe ser capaz de hacer una tabla virtual de sus últimos 3 meses (o los días en los últimos 3 meses) y utilizar AVERAGEX sobre esa tabla para obtener el resultado deseado. Hacerlo en el nivel de mes será menos intensivo en el cálculo, pero puede reemplazar la columna YearMonth por el nivel de fecha, si es necesario. Por ejemplo,

NewMeasure =
VAR __last3months =
    CALCULATETABLE (
        VALUES ( 'Calendar'[YearMonth] ),
        DATESINPERIOD ( 'Calendar'[Date], LASTDATE ( 'Calendar'[Date] ), -3, MONTH )
    )
RETURN
    AVERAGEX ( __last3months, DIVIDE ( [Failure#], [**bleep** Delivery] ) )

Si esto funciona para usted, márquelo como la solución. Los elogios también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


@mahoneypat- Gracias, pero mientras esto me acerca aún no estoy allí.

No es que haya resuelto el problema, pero he modificado su medida para calcular el promedio de 3 meses y no el promedio de los porcentajes.

Sigo creyendo que el problema es el conflicto en el tiempo de inteligencia entre el niño y la medida de los padres .

NewMeasure+ = 
VAR __last3months =
    CALCULATETABLE (
        VALUES ( 'Calendar'[Date] ),
        DATESINPERIOD ( 'Calendar'[Date], LASTDATE ( 'Calendar'[Date] ), -3, MONTH )
    )
VAR _3M_FAILURES =
    SUMX ( __last3months, [Failure#])
VAR _3MCUM_Del =
    SUMX ( __last3months, [**bleep** Delivery])
RETURN
    DIVIDE (_3M_FAILURES,_3MCUM_Del)

Esto es lo que obtengo con el original NewMeasure y NewMeasure + tanto mal como la entrega **bleep** utilizada, no es la SUMA de los últimos 3 meses, ya que la medida **bleep** intentará filtrar. En esta tabla parece un número, pero en PBI es una medida que cambia al aplicar el filtro con la medida primaria.

Por ejemplo, para Junio-2020 esperaré que la medida correcta dé como resultado:

DIVIDE ((493+484+615), (550027+539328+531332))

1592/1620687 á 0,10%

Mayo-2020 - 0.12%

Abr-2020 - 0.14% etc.

Aquí está en formato de tabla algunos de mis datos que utilicé en este ejemplo

mmm-YYYYFracaso #Cantidad**bleep** EntregaMRR %NewMeasure+NewMeasure
Junio-2020493106995500270.09%0.12%0.23%
Mayo-202048479965393280.09%0.16%0.25%
Abr-202061555495313320.12%0.16%0.20%
Mar-202076164415257830.14%0.15%0.18%
Febrero-202078590135193420.15%0.13%0.17%
Ene-202044967075103290.09%0.11%0.15%
Dic-201975295595036220.15%0.10%0.13%
Nov-201956489844940630.11%0.10%0.16%
Octubre-2019670130624850790.14%0.07%0.10%

Recomiendo usar extrema precaución al anidar meausres de inteligencia de tiempo - Rara vez lo hago. Cualquier función que utilice CALCULATE está manipulando el contexto del filtro y, en su caso, tiene un contexto de filtro externo y un contexto de filtro interno (dentro de las medidas incrustadas). Recomiendo ampliar las medidas incluyendo todas las funciones IMPLÍCITAs de CALCULATE agregadas automáticamente dentro de una medida. Cuando hice esto, obtuve lo siguiente:

3mra MRR % =
CALCULATE (
    DIVIDE (
        [Failure#],
        CALCULATE (
            SUM ( 'i0026 AUX_MAT_DLV_PRD'[QUANTITY] ),
            FILTER (
                ALLSELECTED ( 'Calendar' ),
                'Calendar'[Date] <= MAX ( 'Calendar'[Date] )
            )
        )
    ),
    DATESINPERIOD ( 'Calendar'[Date], LASTDATE ( 'Calendar'[Date] ), -3, MONTH )
)

Entonces tienes que investigar lo que está haciendo, y lo que quieres que haga. No tengo claro lo que quieres, pero la fórmula anterior muestra cómo los filtros basados en el tiempo se tropiezan entre sí.

en tu publicación, muestras lo que esperas

DIVIDE ((493+484+615), (550027+539328+531332))

Así que necesitas escribir medidas que produzcan eso. Parecería ser algo como esto

=
DIVIDE (
    SUMX (
        CALCULATETABLE (
            VALUES ( calendar[mmm-YYYY] ),
            DATESINPERIOD ( calendar[date], MAX ( calendar[date] ), -3, MONTH )
        ),
        [Failure #]
    ),
    SUMX (
        CALCULATETABLE (
            VALUES ( calendar[mmm-yyyy] ),
            DATESINPERIOD ( calendar[date], MAX ( calendar[date] ), -3, MONTH )
        ),
        [Cuum Delivery]
    )
)

Probablemente hay una manera más eficiente de escribirlo, supongo



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.

Gracias @MattAllington ,

Agradezco, pero lamentablemente esto no resolvió mi problema.

Entiendo su precaución y realmente sé que el filtro interno anidado no puede vivir con el filtro externo, que es la fuente de mi problema. Y Su sugerencia resultó en el mismo resultado que mi medida NewMeasure+.

Hay dos líneas de tiempo dinámicas que utilizan medidas de inteligencia del tiempo que se contradicen entre sí.

Uno es todo momento antes de la corriente (tiempo filtrado en una línea de tiempo para tener valores acumulativos)

Y el otro es sólo los últimos 3 meses para calcular un promedio de 3 meses.

Mi problema es que como la primera línea de tiempo no es sólo valores, sino más bien una medida de inteligencia de tiempo dinámica, cuando aplico la segunda medida usando la primera, recortará la primera línea de tiempo y cambiará los valores.

Esto es lo que necesito – si pudiera "Bloquear" en una tabla los valores **bleep** como son [**bleep** Entrega], entonces podría aplicar su medida y debería funcionar – funciona en Excel.

Sigue siendo un dilema.

Estas cosas son muy difíciles de resolver "conceptualmente" sin el modelo. Si me envía el libro de trabajo (ya tiene mi correo electrónico), y asegúrese de incluir una explicación clara del problema, el resultado actual y el resultado esperado, entonces echaré un vistazo.



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.

Gracias @MattAllington,

Te he enviado un correo electrónico con archivos adjuntos. El excel con las pestañas de datos, así como el archivo PBIX. He pasado algún tiempo limpiando los datos de cualquier información sensible al negocio, pero todos los campos requeridos para el cálculo están ahí, así como las relaciones entre las tablas y una tabla de calendario común. .

Te agradezco que te tomes el tiempo.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors