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

Dependencia circular con tabla calculada

hola

Tengo un problema con la dependencia circular que no sé cómo superar.

Tengo el siguiente esquema:schema_groupby.jpg

La tabla "Fecha" se autogenera:

Fecha = CALENDARAUTO()
La tabla "Grupo por fecha y cliente" se calcula una:
Grupo por fecha y cliente =
SUMMARIZECOLUMNS (
cleaned_row_count[Fecha],
'tabla'[Cliente],
"Número total de filas",
SUMA (
cleaned_row_count[Número de filas]
)
)
Utilizo esta tabla para agrupar mi recuento de filas por fecha y por cliente para encontrar el valor y la diferencia anteriores:
Screenshot 2021-05-17 123717.jpg
En mi informe utilizo una segmentación de datos de "Tabla" para filtrar por cliente.
Como las tablas "Grupo por fecha y cliente" y "Tabla" no están conectadas, mi segmentación de datos "Cliente" no funciona para objetos visuales que usan datos de "Grupo por fecha y Cliente".
Cuando intento conectarlos "Cliente" a "Cliente" tengo un error:
error.jpg
¿Existe alguna posibilidad de conectarlos? ¿O puedo usar el filtro de otra manera?
¡Le agradecería su ayuda!
3 ACCEPTED SOLUTIONS

Puede utilizar la medida siguiente para obtener el valor anterior sin tener que crear la tabla resumida:

Valor anterior =
VAR CurrentDate = MAX(cleaned_row_count[Fecha])
VAR ClientID = MAX('table'[id])
VAR PreviousDate = CALCULATE(MAX(cleaned_row_count[Date]),ALL('Date'[Date]),ALL(cleaned_row_count[Date]),FILTER('Date',[Date]<CurrentDate))
Resultado del VAR = CALCULATE(SUM(cleaned_row_count[Número de filas]),ALL('Date'[Date]),ALL(cleaned_row_count[Date]),FILTER('Date',[Date]=PreviousDate))
RESULTADO DE DEVOLUCIÓN
No podía entender los campos de la "tabla" porque tienes un campo id y luego un campo de cliente. El cliente parece repetir para diferentes ids.. De todos modos, si desea trabajar por cliente, es posible que deba reemplazar table_id con el cliente en la medida anterior

View solution in original post

@Delphia

A ver si esto funciona para usted
result.JPG

He adjuntado el archivo PBIX de ejemplo para usted

View solution in original post

@Delphia

Mantenga las medidas anteriores (las utilizaremos en las medidas finales.

Number of rows (measure final) =
VAR MaxDate =
    CALCULATE (
        MAX ( cleaned_row_count[Date] ),
        ALLEXCEPT ( cleaned_row_count, 'table'[Client] )
    )
VAR RowNumMax =
    CALCULATE (
        [Number of rows (measure)],
        ALLEXCEPT ( cleaned_row_count, 'table'[Client] ),
        FILTER ( ALL ( 'Date' ), 'Date'[Date] = MaxDate )
    )
RETURN
    SWITCH (
        TRUE (),
        ISINSCOPE ( 'Date'[Date] ), [Number of rows (measure)],
        ISINSCOPE ( 'table'[Client] ), RowNumMax
    )
Previous Date Rows (Final) =
VAR MaxDate =
    CALCULATE (
        MAX ( cleaned_row_count[Date] ),
        ALLEXCEPT ( cleaned_row_count, 'table'[Client] )
    )
VAR RowNumMax =
    CALCULATE (
        [Previous Date rows],
        ALLEXCEPT ( cleaned_row_count, 'table'[Client] ),
        FILTER ( ALL ( 'Date' ), 'Date'[Date] = MaxDate )
    )
RETURN
    SWITCH (
        TRUE (),
        ISINSCOPE ( 'Date'[Date] ), [Previous Date rows],
        ISINSCOPE ( 'table'[Client] ), RowNumMax
    )
Diff in Rows vs Previous Date = [Number of rows (measure final)] - [Previous Date Rows (Final)]

result.JPG

Adjunto es la nueva versión del archivo PBIX

View solution in original post

13 REPLIES 13
Syndicate_Admin
Administrator
Administrator

A menos que haya una razón específica, la tabla "grupo por fecha y cliente" normalmente se configuraría mediante un objeto visual en el informe (en lugar de una tabla física en el modelo)

Muchas gracias por su respuesta. Lo creé porque no he encontrado una solución cómo crear una medida que muestre una diferencia de recuento de filas por fecha y por cliente.

En esta tabla calculé Valor anterior para cada cliente y fecha y diferencia calculada.

Si usted tiene alguna idea de cómo puedo hacer estos cálculos sin crear una mesa de agrupación, le agradecería su ayuda.

Puedes encontrar mi archivo aquí: https://drive.google.com/file/d/1CGVVVNZiIJCF5ww_Z5KjHAMC_Wt9GN-3/view?usp=sharing

Gracias de antemano!

@Delphia

A ver si esto funciona para usted
result.JPG

He adjuntado el archivo PBIX de ejemplo para usted

Lo siento, Paul. Acabo de encontrar que esta medida no muestra el subtotal correcto por cliente:

subtotal.jpg

Medir número de filas debe mostrar el último valor por cliente, por tabla, por fecha y no veranimarlas. Filas de fecha anteriores muestra el número correcto de filas. Le agradecería su ayuda.

@Delphia

Por lo tanto, para el cliente 1, desea ver el 66.137 para [número de filas] y [filas de fecha anteriores]? ¿O desea ver los valores como se muestra en la fila para 5/18/2021

Debe ser valor para la última fecha disponible en la tabla (hoy). Por lo tanto, para el cliente 1 debe ser valor para 5/18/2021:

Número de filas = 66.137.151

Filas de día anterior = 66.088.701

¡Gracias!

@Delphia

Mantenga las medidas anteriores (las utilizaremos en las medidas finales.

Number of rows (measure final) =
VAR MaxDate =
    CALCULATE (
        MAX ( cleaned_row_count[Date] ),
        ALLEXCEPT ( cleaned_row_count, 'table'[Client] )
    )
VAR RowNumMax =
    CALCULATE (
        [Number of rows (measure)],
        ALLEXCEPT ( cleaned_row_count, 'table'[Client] ),
        FILTER ( ALL ( 'Date' ), 'Date'[Date] = MaxDate )
    )
RETURN
    SWITCH (
        TRUE (),
        ISINSCOPE ( 'Date'[Date] ), [Number of rows (measure)],
        ISINSCOPE ( 'table'[Client] ), RowNumMax
    )
Previous Date Rows (Final) =
VAR MaxDate =
    CALCULATE (
        MAX ( cleaned_row_count[Date] ),
        ALLEXCEPT ( cleaned_row_count, 'table'[Client] )
    )
VAR RowNumMax =
    CALCULATE (
        [Previous Date rows],
        ALLEXCEPT ( cleaned_row_count, 'table'[Client] ),
        FILTER ( ALL ( 'Date' ), 'Date'[Date] = MaxDate )
    )
RETURN
    SWITCH (
        TRUE (),
        ISINSCOPE ( 'Date'[Date] ), [Previous Date rows],
        ISINSCOPE ( 'table'[Client] ), RowNumMax
    )
Diff in Rows vs Previous Date = [Number of rows (measure final)] - [Previous Date Rows (Final)]

result.JPG

Adjunto es la nueva versión del archivo PBIX

¡Funciona! ¡Muchas gracias!

¡Estoy muy agradecido por tu ayuda! funciona perfectamente para mí!

Syndicate_Admin
Administrator
Administrator

Comparta un archivo que muestre el problema. Puedes colocar un enlace a un archivo almacenado en alguna unidad compartida (Google Drive, OneDrive, Dropbox...). Recuerde darnos permisos de R/W.

Gracias por su deseo de ayudar. Puede encontrar el archivo aquí: https://drive.google.com/file/d/1CGVVVNZiIJCF5ww_Z5KjHAMC_Wt9GN-3/view?usp=sharing

Traté de resolverlo creando la nueva tabla 'Cliente' (client_name, client_id).

Cuando lo conecto a 'Table' mis filtros en visual no funcionan... Y una vez más tengo una dependencia circular mientras me conecto a la tabla 'Grupo por fecha y Cliente'.

¡Le agradecería su ayuda! Avísame si necesitas más información.

Puede utilizar la medida siguiente para obtener el valor anterior sin tener que crear la tabla resumida:

Valor anterior =
VAR CurrentDate = MAX(cleaned_row_count[Fecha])
VAR ClientID = MAX('table'[id])
VAR PreviousDate = CALCULATE(MAX(cleaned_row_count[Date]),ALL('Date'[Date]),ALL(cleaned_row_count[Date]),FILTER('Date',[Date]<CurrentDate))
Resultado del VAR = CALCULATE(SUM(cleaned_row_count[Número de filas]),ALL('Date'[Date]),ALL(cleaned_row_count[Date]),FILTER('Date',[Date]=PreviousDate))
RESULTADO DE DEVOLUCIÓN
No podía entender los campos de la "tabla" porque tienes un campo id y luego un campo de cliente. El cliente parece repetir para diferentes ids.. De todos modos, si desea trabajar por cliente, es posible que deba reemplazar table_id con el cliente en la medida anterior

¡Muchas gracias! Funciona perfectamente y resuelve todos mis problemas a la vez. ¡Ten un buen día!

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.