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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Crear una relación utilizando valores específicos o todos

Hola

Tengo un problema y no tengo idea de cómo resolverlo. Necesito ayuda.. Por favor..

Estoy creando un informe de saldo en PBI, en un Archivo tengo el menú con las opciones (filas) para mostrar y cada fila tiene el grupo de cuentas de balance para resumir.

Es algo como esto:

Report_NamecodeMenuLínea #SubmenúDescripción de la fila SubmenúDescripción de la fila Tipo de cuentaSub de cuentaCat3Gato6
Principales gastosA0026A0026Otros gastosA00261Uniformes de mantenimiento10101900REC*Todos
Principales gastosA0026A0026Otros gastosA00262Misc.10101360RECOTH
Principales gastosA0026A0026Otros gastosA00265Misc.10101990REC*Todos
Principales gastosA0026A0026Otros gastosA00269Manteles73071002RECESTROPEAR

Por otro lado, tengo otro archivo con un saldo de transacciones para resumir por grupo de cuentas

Es algo como esto:

ObjetoSubDescripciónESTE cat03ESTE cat06ENEFEB
10101900UniformesRECESTROPEAR 100.00 743.34
10101900UniformesFREGONAESTROPEAR 95.00 -
10101900UniformesRECMAR 302.00 488.00
10101900UniformesFREGONAESTROPEAR 35.00 65.00
10101990MisceláneoRECESTROPEAR 122.00 60.00
10101990MisceláneoFREGONAESTROPEAR 85.00 120.00
10101990MisceláneoRECMAR 100.00 101.49
10101990MisceláneoFREGONAESTROPEAR 505.00 -
10101990MisceláneoRECMAR 12.00 365.00
10101990MisceláneoH1HMAR 120.00 11.00
10101990MisceláneoRECESTROPEAR 878.00 -
73071002Uniformes - CalificadoRECOTH - 250.00
73071002Uniformes - CalificadoPHOHTL 200.00 100.00
73071002Uniformes - CalificadoRECESTROPEAR 345.00 500.00
73071002Uniformes - CalificadoFOOHTL 122.00 55.00
73071002Uniformes - CalificadoRECMAR 250.00 300.00

Ahora, en el informe la idea es mostrar 1 fila con el total, en este caso

Principales gastosTipo de gastosENEFEB
Otros gastos 2,691.00 2,888.83

Ahora bien, el problema que tengo es resumir las cantidades en función de los códigos de categoría (Cat3 y Cat 6), porque a veces tengo Cat3 y Cat 6 específicos, por ejemplo el código A00269 tienen Cat3='REC' y Cat6='MAR', pero en los otros casos tengo un Cat 3 específico, pero con todo el código de Categoría 6 (Por ejemplo el código A00261 tiene Cat3='REC' pero con todo el código de categoría 6 (Cat6).

No puedo crear una relación entre ambos archivos, debido a que hay muchos registros con código de categoría 6 y combinaciones distintas

Si alguno de ustedes tiene una idea de cómo manejar este tipo de casos, ¿podría guiarme sobre cómo resolverlo?

2 ACCEPTED SOLUTIONS

@gomezc73 ,

Pruebe la siguiente fórmula:

Total Values =
VAR temp_table =
    FILTER (
        CROSSJOIN ( 'Balance sheet accounts', 'Balance Transactions' ),
        'Balance sheet accounts'[Account Sub] = 'Balance Transactions'[Sub]
            && 'Balance sheet accounts'[Account Type] = 'Balance Transactions'[Object]
            && 'Balance sheet accounts'[Cat3] = 'Balance Transactions'[BU Cat03]
            && ( 'Balance sheet accounts'[Cat6] = 'Balance Transactions'[BU Cat06]
            || 'Balance sheet accounts'[Cat6] = "*All" )
    )
RETURN
    SUMX ( temp_table, 'Balance Transactions'[Value] )

Esto está dando el resultado correcto para la pequeña muestra que presenta, sin embargo, no estoy seguro de si volverá correctamente en sus valores generales, ya que los detalles pueden marcar la diferencia:

MFelix_0-1646818743679.png

También tenga en cuenta que he unpivot las transacciones para no tener un cálculo para cada columna.

Verifique el archivo PBIX adjunto.

View solution in original post

Ese comando CrossJoin funciona bien. Realmente aprecio su ayuda.. ¡¡Muchas gracias!!

View solution in original post

10 REPLIES 10
Syndicate_Admin
Administrator
Administrator

@gomezc73 ,

En este caso, debe crear dos tablas de dimensiones con Cat3 y CAT 6 y luego relacionar estas tablas con las otras dos que crearán la relación a la que hace referencia.

Solo una pregunta cuando dice en CAT6: *¿Todo es este el valor que tienes o no pusiste todos los valores en el ejemplo porque son muchos?

Hi Miguel,

Hay aprox 20 Categoría 6 (Cat6), entonces cuando digo '*Todo' es a no escribir en detalle los 20 códigos de Cat6.

Esa es mi preocupación, en algunas filas tengo que vincular ambos archivos solo con 1 Cat 6, y hay otras filas donde no importa, porque es para todos Cat6.

@gomezc73 ,

Si crea las tablas de dimensiones para CAT3 y CAT6 con valores únicos, esas dimensiones filtrarán todo. simularás un many a muchos con un many a uno a muchos.

¿O su pregunta es cómo escribir la primera tabla sin una sola línea para cada valor?

Hola, en mi informe necesito mostrar solo 1 línea con el resumen por Cuenta OBJ, Cuenta Sub, Cat3 y Cat 6..

No entendí su solución, quiero decir, cree una tabla para las Categorías 3 (Cat3), otra tabla para las Categorías 6 (Cat 6) ?.. ?.. ¿Cómo puedo relacionar cada tabla con mis tablas actuales?

@gomezc73 ,

Cuando me refiero a una relación es un modelo similar a este:

MFelix_0-1646691382844.png

¿Puede ver que hay una relación entre ambas tablas hecha por las tablas de dimensiones?

Mi pregunta ahora se refiere a CAT6 ya que tienes en la primera tabla un valor de ALL ¿tendrás una línea para eaxch uno, por lo que si haces un modelo similar al anterior funcionará correctamente o tendrás el valor ALL en el CAT 6 y quieres recoger todo el CAT en las transacciones aunque no estén explícitas en el saldo del Grupo?

Hi Miguel,

Usando tu imagen 'Balance de Grupo' Cuando el campo Cat6='ALL', no tengo en el fichero de detalles registros con CAT6='ALL', debido a que ese valor no es un CAT6 válido (solo es un valor de referencia para identificar que en la segunda tabla pueden existir múltiplos CAT6 que hay que resumir)

Por ejemplo, en el fichero de detalles pueden existir registros con CAT6 con estos valores ("MAR","COE","REP","RWE","PEE", etc) (Existen alrededor de 30 CAT6 válidos).

Entonces, la idea es:

A) Si encontré un registro en la Primera tabla con CAT6=ALL, entonces necesito resumir los registros en la Segunda tabla con CAT6 IN ("MAR","COE","REP","RWE","PEE", etc).).

B) Para cualquier otro valor en la primera tabla Distint to ALL, puedo buscar el valor exacto en el segundo archivo, Por ejemplo: Si encontré un registro en la Primera tabla con CAT6="MAR", entonces necesito resumir solo los registros en la Segunda tabla con CAT6="MAR".

Espero que esto ayude a entender mi problema,

@gomezc73 ,

Creo que ahora entiendo su necesidad, sin embargo, estoy confundido sobre el resultado final que necesita.

¿Has visto a continuación si recojo el enero que obtengo 2109 para el REC en CAT3 si comparo esto con el valor que tienes (2.691) me falta 532. Ese creo que es el valor de CAT6.

¿Puede decir cómo calcula el valor en el ejemplo que dio?

Hola, lo siento, tengo un error en mis cálculos.

Hice una nueva tabla con ambos archivos, el total para JAN debe ser 1859.

Tabla1 Report_NameDescripción de la fila Table1 Descripción de la fila Table1 Tabla1 Tipo de cuentaTabla1 SubcuentaTabla1 Cat3Tabla1 Cat6Table2 (objeto)Tabla2 SubTabla2 Cat03Tabla2 Cat06 ENE FEB
Principales gastosOtros gastosUniformes de mantenimiento10101900REC*Todos10101900RECESTROPEAR 100.00 743.00
10101900RECMAR 302.00 488.00
Principales gastosOtros gastosMisc.10101360RECOTH
Principales gastosOtros gastosMisc.10101990REC*Todos10101990RECESTROPEAR 122.00 60.00
10101990RECMAR 100.00 101.00
10101990RECMAR 12.00 365.00
10101990RECESTROPEAR 878.00 -
Principales gastosOtros gastosManteles73071002RECESTROPEAR73071002RECESTROPEAR 345.00 500.00
Principales gastos 1,859.00 2,257.00

@gomezc73 ,

Pruebe la siguiente fórmula:

Total Values =
VAR temp_table =
    FILTER (
        CROSSJOIN ( 'Balance sheet accounts', 'Balance Transactions' ),
        'Balance sheet accounts'[Account Sub] = 'Balance Transactions'[Sub]
            && 'Balance sheet accounts'[Account Type] = 'Balance Transactions'[Object]
            && 'Balance sheet accounts'[Cat3] = 'Balance Transactions'[BU Cat03]
            && ( 'Balance sheet accounts'[Cat6] = 'Balance Transactions'[BU Cat06]
            || 'Balance sheet accounts'[Cat6] = "*All" )
    )
RETURN
    SUMX ( temp_table, 'Balance Transactions'[Value] )

Esto está dando el resultado correcto para la pequeña muestra que presenta, sin embargo, no estoy seguro de si volverá correctamente en sus valores generales, ya que los detalles pueden marcar la diferencia:

MFelix_0-1646818743679.png

También tenga en cuenta que he unpivot las transacciones para no tener un cálculo para cada columna.

Verifique el archivo PBIX adjunto.

Ese comando CrossJoin funciona bien. Realmente aprecio su ayuda.. ¡¡Muchas gracias!!

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

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

Top Solution Authors