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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

Calcular el valor de frecuencia en función de varios criterios en otra tabla

Hola, estoy tratando de lograr algo similar a lo que se publicó en esta publicación: Contar el valor de la columna en función de múltiples criterios en otra tabla el 20/02/24. Pero mi petición es un poco diferente. A continuación se muestran algunas tablas de ejemplo que estoy usando para probar esto:

Datos:

IDENTIFICACIÓNFecha
111/12/2022
112/23/2022
15/15/2023
11/1/2024
211/25/2022
212/12/2022

Rangos de fechas:

Fecha de inicioFecha final
11/1/202210/31/2023
12/1/202211/30/2023
1/1/202312/31/2023
2/1/20231/31/2024
3/1/20232/29/2024

Me gustaría contar las filas en "Datos" que están entre las fechas en "Rangos de fechas" y las filas distintas para las mismas en función de "ID" para calcular una frecuencia. Estoy pensando en crear medidas para filas distintas, recuento de filas y frecuencia promedio para ID para cada rango de fechas ("Frecuencia" = "Filas" divididas por "Distintas") de la siguiente manera:

Fecha de inicioFecha finalFilasDistintoFrecuencia
11/1/202210/31/2023522.5
12/1/202211/30/2023321.5
1/1/202312/31/2023111
2/1/20231/31/2024212
3/1/20232/29/202421

2

Intenté usar el código de esta publicación: Contar el valor de la columna en función de múltiples criterios en otra tabla el 20/02/24, modificado para mis datos, pero obtengo un error al definir las variables, de la siguiente manera:

jeben_0-1709245246173.png

Agradecería un poco de ayuda sobre cómo hacer esto, incluidas las relaciones entre tablas que necesito. Actualmente no hay relaciones. John

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

¡Gracias! ¡Sí, funcionó muy bien!

View solution in original post

Syndicate_Admin
Administrator
Administrator

Sí, @gmsamborn . Eso funcionó muy bien, incluida la introducción de una lógica similar en mi informe de producción y la adición de segmentaciones adicionales que funcionan individualmente y en combinación. ¡Gracias! John

View solution in original post

10 REPLIES 10
Syndicate_Admin
Administrator
Administrator

Sí, @gmsamborn . Eso funcionó muy bien, incluida la introducción de una lógica similar en mi informe de producción y la adición de segmentaciones adicionales que funcionan individualmente y en combinación. ¡Gracias! John

Syndicate_Admin
Administrator
Administrator

Hola @gmsamborn Lo que me ayudaste fue muy útil y ahora está en producción. Ahora tengo una aplicación similar a mi solicitud anterior con la que me ayudó, pero quiero agregar una segmentación de datos en un tercer campo. Igual que el anterior, excepto:

Datos:

IDENTIFICACIÓNFechaValor de segmentación
111/12/2022A
112/23/2022A
15/15/2023A
11/1/2024B
211/25/2022B
212/12/2022

B

Rangos de fechas:

Fecha de inicioFecha final
11/1/202210/31/2023
12/1/202211/30/2023
1/1/202312/31/2023
2/1/20231/31/2024
3/1/20232/29/2024

Me gustaría calcular una frecuencia para los ID para cada intervalo de fechas ("Frecuencia" = "Filas" divididas por "Distintas"), pero poder seleccionar un valor para el campo "Valor de segmentación" de la siguiente manera:

Segmentación de datos no seleccionada
Fecha de inicioFecha finalFilasDistintoFrecuencia
11/1/202210/31/2023522.5
12/1/202211/30/2023321.5
1/1/202312/31/2023111
2/1/20231/31/2024212
3/1/20232/29/2024212
"A" seleccionada en la segmentación
Fecha de inicioFecha finalFilasDistintoFrecuencia
11/1/202210/31/2023313
12/1/202211/30/2023212
1/1/202312/31/2023111
2/1/20231/31/2024111
3/1/20232/29/2024111
"B" seleccionada en la segmentación
Fecha de inicioFecha finalFilasDistintoFrecuencia
11/1/202210/31/2023212
12/1/202211/30/2023111
1/1/202312/31/2023000
2/1/20231/31/2024111
3/1/20232/29/2024111

Intenté usar la sugerencia que proporcionó anteriormente y agregar filtros en el campo de segmentación, pero no tuve éxito. Solo una nota de que en mi aplicación real, quiero agregar cortadoras en varios campos, pero limitado a uno en esta publicación para mantenerlo más simple. Estoy pensando que una solución para una cortadora de fiambres, puedo adaptarla para varias rebanadoras.

Gracias.

Hola @jeben

¿Ayudarían estas medidas?

_Distinct (inner) = 
VAR _Slicer = ALLSELECTED( 'Data'[Slicer value] )
VAR _Count = 
    CALCULATE(
        DISTINCTCOUNT( 'Data'[ID] ),
        REMOVEFILTERS( 'Data' ),
        'Data'[Date] >= SELECTEDVALUE( 'Date Ranges'[Start date] )
            && 'Data'[Date] <= SELECTEDVALUE( 'Date Ranges'[End date] )
            && 'Data'[Slicer value] IN _Slicer
    )
RETURN
    _Count


_Rows (inner) = 
VAR _Slicer = ALLSELECTED( 'Data'[Slicer value] )
VAR _Count = 
    CALCULATE(
        COUNTROWS( 'Data' ),
        REMOVEFILTERS( 'Data' ),
        'Data'[Date] >= SELECTEDVALUE( 'Date Ranges'[Start date] )
            && 'Data'[Date] <= SELECTEDVALUE( 'Date Ranges'[End date] )
            && 'Data'[Slicer value] IN _Slicer
    )
RETURN
    _Count

Filas en intervalos de fechas: 2.pbix

Syndicate_Admin
Administrator
Administrator

¡Gracias! ¡Sí, funcionó muy bien!

Bienvenidos, @jeben . Me alegro de que haya funcionado.

No olvides marcarlo como una solución.

Syndicate_Admin
Administrator
Administrator

Me gustaría contar las filas en "Datos" que están entre las fechas en "Rangos de fechas" para calcular una frecuencia. No veo cómo puedo hacer esto con 'Datos' [Fecha] o 'Datos' [ID] en mi matriz. Necesito en mi matriz un recuento de cuántas filas en 'Datos' tienen una [Fecha] que está entre la [Fecha de inicio] y la [Fecha de finalización] en 'Rangos de fechas'. Tal vez no entiendo lo que estás sugiriendo.

¿O tal vez esto no se puede hacer con Power BI y, en su lugar, necesito preparar mis datos para no tener que hacerlo en Power BI?

Hola @jeben

Se me ocurrió mi solución en un par de pasos.

En primer lugar, he creado estas medidas:

_Rows (inner) = 
    CALCULATE(
        COUNTROWS( 'Data' ),
        ALL( 'Data' ),
        'Data'[Date] >= SELECTEDVALUE( 'Date Ranges'[Start date] )
            && 'Data'[Date] <= SELECTEDVALUE( 'Date Ranges'[End date] )
    )

_Distinct (inner) = 
    CALCULATE(
        DISTINCTCOUNT( 'Data'[ID] ),
        ALL( 'Data' ),
        'Data'[Date] >= SELECTEDVALUE( 'Date Ranges'[Start date] )
            && 'Data'[Date] <= SELECTEDVALUE( 'Date Ranges'[End date] )
    )

A continuación, la forma más fácil de manejar la línea Total es así.

Rows = 
    SUMX(
        VALUES( 'Date Ranges'[Start date] ),
        [_Rows (inner)]
    )

Frequency = 
    DIVIDE(
        [Rows],
        [Distinct]
    )

y la medida final:

Frequency = 
    DIVIDE(
        [Rows],
        [Distinct]
    )

Las 2 primeras consultas se pueden ocultar.

Hazme saber si tienes alguna pregunta.

Filas en intervalos de fechas - test.pbix

Syndicate_Admin
Administrator
Administrator

¡Gracias! Eso resolvió el error. Ahora, sin embargo, no soy capaz de visualizar los datos a través de una matriz. A continuación se muestra una captura de pantalla. ¿Ayudaría si te envío mi archivo pibx?

jeben_1-1709247245785.png

jeben_2-1709247286618.png

El motivo de su problema es que ha utilizado los campos incorrectos en su matriz. La medida se escribe para esperar un contexto de filtro de 'Data'[Date] y 'Data'[ID]. Tendrías que usar esos campos en tu matriz.

Si tiene una relación de tabla entre 'Rangos de fechas' y 'Datos', podría usar Fecha de finalización como la que ha usado aquí.

Syndicate_Admin
Administrator
Administrator

El código que ha escrito parece ser para una "columna calculada" en lugar de una medida. Una medida se ejecuta en cualquier contexto en el que se encuentre. Una columna calculada se ejecuta fila por fila en la tabla de datos en la que está creando la columna.

Si se pretendía que fuera una medida en la que tendrá un objeto visual que mostrará los datos fila por fila, envuelva sus 'Datos' [Fecha] y 'Datos' [ID] en la función SELECTEDVALUE(). Sin esto, DAX no entiende cómo agregar la columna que ha proporcionado. Aunque entiende que va a usar la medida en un contexto en el que solo va a haber 1 valor único, DAX no puede asumirlo.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

November Carousel

Fabric Community Update - November 2024

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

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

Top Solution Authors
Top Kudoed Authors