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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Fórmula DAX para filtrado de tablas cruzadas / lógica de fecha

Estoy tratando de averiguar cómo escribir una solución DAX que requiera que 2 tablas se filtren por fecha y estado, respectivamente.

Tengo 2 tablas que son demasiado grandes para combinar dentro del Editor de consultas, y necesito una solución dinámica para aplicar a los datos históricos.

Estoy buscando encontrar la línea de transacción más reciente por cliente en los 90 días anteriores en una tabla, y encontrar el estado relativo de esa transacción en la otra tabla, y solo incluir cierto estado".

Las tablas están enlazadas por un SALEID = OBJID

Tabla de pases

Pass Table.png

Tabla de venta

Sale Table.png

En el siguiente ejemplo, estoy buscando un DISTINCTCOUNT de CLIENTE donde el CREADO está en los 90 días anteriores y el estado es 1 O 2.

Esperaría que los siguientes datos de prueba devuelvan 2, Cliente B & C (SALEIDs 1 y 3)

Test Data.png

Gracias

J

2 ACCEPTED SOLUTIONS

Sí. Sin embargo, es posible que desee definirlo primero como una variable.

Count90 =
VAR DynamicDate = [DynamicDateMeasure]
RETURN
    CALCULATE (
        DISTINCTCOUNT ( 'Pass'[Customer] ),
        Sale[Created] > DynamicDate - 90,
        'Pass'[Status] IN { 1, 2 }
    )

View solution in original post

¿Qué tal esto entonces?

CountLast90 =
VAR DynamicDate = TODAY () - 90
VAR StatusVals = { 1, 2 }
VAR AddCreatedCol =
    ADDCOLUMNS (
        'Pass',
        "Created", LOOKUPVALUE ( Sale[Created], Sale[ObjID], 'Pass'[SaleID] )
    )
VAR PassFiltered = FILTER ( AddCreatedCol, [Created] > DynamicDate )
VAR AddLastCreated =
    ADDCOLUMNS (
        PassFiltered,
        "LastCreated",
            MAXX (
                FILTER ( PassFiltered, [Customer] = EARLIER ( [Customer] ) ),
                [Created]
            )
    )
RETURN
    COUNTROWS (
        SUMMARIZE (
            FILTER ( AddLastCreated, [Created] = [LastCreated] && [Status] IN StatusVals ),
            [Customer]
        )
    )

View solution in original post

13 REPLIES 13
Syndicate_Admin
Administrator
Administrator

¿Qué tal esto?

Count90 = 
CALCULATE (
    DISTINCTCOUNT ( 'Pass'[Customer] ),
    Sale[Created] > TODAY () - 90,
    'Pass'[Status] IN { 1, 2 }
)

Gracias por responderme Alexis, eres muy bueno, si quisiera que esto funcionara para una fecha dinámica, ¿pondría mi campo [Fecha] donde está "HOY()"?

Sí. Sin embargo, es posible que desee definirlo primero como una variable.

Count90 =
VAR DynamicDate = [DynamicDateMeasure]
RETURN
    CALCULATE (
        DISTINCTCOUNT ( 'Pass'[Customer] ),
        Sale[Created] > DynamicDate - 90,
        'Pass'[Status] IN { 1, 2 }
    )

Hola Alexis,

Pensé que esto funcionó, pero en realidad está filtrando la transacción más reciente si el estado no es 1 o 2.

Lo que necesito es encontrar el DISTINCTCOUNT de clientes, devolviendo sus transacciones más recientes y el estado relacionado con esa transacción.

De hecho, puedo filtrar el estado dentro del propio visual, por lo que no necesito esa parte, pero quiero poder crear una tabla dinámica, que mire hacia atrás en los últimos 90 días desde cualquier fecha, y luego cree una tabla filtrada que solo muestre la transacción más reciente para ese cliente y el estado correspondiente.

Gracias

¿Qué tal esto entonces?

CountLast90 =
VAR DynamicDate = TODAY () - 90
VAR StatusVals = { 1, 2 }
VAR AddCreatedCol =
    ADDCOLUMNS (
        'Pass',
        "Created", LOOKUPVALUE ( Sale[Created], Sale[ObjID], 'Pass'[SaleID] )
    )
VAR PassFiltered = FILTER ( AddCreatedCol, [Created] > DynamicDate )
VAR AddLastCreated =
    ADDCOLUMNS (
        PassFiltered,
        "LastCreated",
            MAXX (
                FILTER ( PassFiltered, [Customer] = EARLIER ( [Customer] ) ),
                [Created]
            )
    )
RETURN
    COUNTROWS (
        SUMMARIZE (
            FILTER ( AddLastCreated, [Created] = [LastCreated] && [Status] IN StatusVals ),
            [Customer]
        )
    )

Estoy bastante seguro de que eres un genio, eso me está consiguiendo la cifra general directamente del principio y en un tiempo de iluminación. ¡Guau, eso es impresionante! Muchas gracias.

Si quisiera poner esta Medida en un gráfico de líneas, con la Fecha en el Eje, ¿sería posible que tomara la fecha del eje y retrocediera 90 días a partir de esa fecha para traer de vuelta el recuento de clientes que cumplen con ese criterio?

¡En realidad estoy impresionado por esa solución!

Reemplace TODAY() con algo que se lea en el contexto de fecha local como MAX ( dimDate[Date] ) usando cualquiera que sea su columna del eje X.

¿Cuál sería la medida de la fecha?

Esencialmente, quiero poner esta medida Count90 en una tabla con Fechas y quiero que cada fecha mire los 90 días anteriores a esta fecha y ejecute esta medida. ¿Sería algo así como MAX([Fecha])?

Gracias de nuevo por toda su ayuda, realmente lo aprecio.

Sí, se vería algo así como MAX ( Sale[Date] ), que da la fecha máxima dentro del contexto del filtro local. Entonces, si tuviera Sale[Date] para las filas en un visual de tabla, tomaría la fecha de esa fila.

Syndicate_Admin
Administrator
Administrator

¿Cuál es el resultado que esperarías en este ejemplo?

Hola Alexis,

Disculpas, estoy buscando;

Un DISTINCTCOUNT de clientes que tienen una línea de transacción máxima que tiene un estado particular.

Gracias

Es mucho más probable que obtenga una respuesta si proporciona ejemplos útiles para trabajar.

https://community.powerbi.com/t5/Desktop/How-to-Get-Your-Question-Answered-Quickly/m-p/1447523

En el siguiente ejemplo, estoy buscando un DISTINCTCOUNT de CLIENTE donde el CREADO está en los 90 días anteriores y el estado es 1 O 2.

Esperaría que los siguientes datos de prueba devuelvan 2, Cliente A & B (SALEIDs 1 y 3)

Test Data.png

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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