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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo DAX para una consulta sql compleja como filtrar la fecha primero, luego agrupar por y luego unir otra tabla

Hola amigos,

Necesidad de convertir una consulta sql compleja a PowerBI DAX.

Primero, necesita un filtro de fecha, para filtrar la tabla A, luego agregue la columna 'Pago' en la tabla A agrupando por 'Factura', la columna 'Cuenta', en tercer lugar, únase a la tabla B en la columna 'Factura' y 'Cuenta'.

La fecha es de la segmentación de datos. La dificultad es que la fecha es dinámica, filtrando primero y luego agrupando por, ¿cómo hacerlo?

Por cierto, agrupar en 'fecha' no va a funcionar en este caso.

Cualquier sugerencia es muy apreciada.

17 REPLIES 17
Syndicate_Admin
Administrator
Administrator

Lo he intentado, funcionó pero estoy verificando datos, parece que el filtro de fecha no está en efecto, que está en la tabla A.

@River -La fecha es de la segmentación de datos de fecha: pensé que está utilizando una tabla de calendario para eso. ¿Es amablemente posible para usted producir una pequeña muestra de pbix y compartirla aquí?

@smpa01 confirmado, no está filtrando la fecha en la tabla A, sino que está obteniendo todos los datos de todas las fechas.

Sí, estoy usando la tabla de calendario, está vinculada al campo de fecha en la tabla A, la segmentación de datos de fecha está vinculada a la tabla de calendario. Desafortunadamente, no puedo cargar un pbix con datos reales.

@River es posible para usted crear un pbix de muestra con datos falsos con solo columnas relvant y nada más en una escala muy pequeña?

@smpa01 no encontró una opción para cargar el archivo PBIX

@smpa01 https://1drv.ms/u/s!Aq08cehlu9wukAipaxYcpMde6UzP?e=hfr9eD

Aquí está el enlace al pbix. Hágame saber si puede acceder a él.

@River gracias por esto.

Lo investigué a fondo.

La medida que te di genera esto

smpa01_0-1640138013977.png

Pero si diseccionamos las cosas, para el rango de fechas dado,

Devuelve a continuación

smpa01_1-1640138077490.png

Por otro lado, si diseccionamos la tabla de facturas con exactamente los mismos valores, devuelve a continuación

smpa01_2-1640138172461.png

Así que tendrías como una medida, que genera sólo SUMA de

«Factura pagada»[SETTLEAMOUNTMST]

solo para 'Factura'[AccountNum]=3

Por favor, cambie su medida a esta

smpa01_4-1640138634857.png

Amount Paid = 
CALCULATE (
    - SUM ( 'Invoice Paid'[SETTLEAMOUNTMST] ), --this gets sliced as per Date tbl, there is no need to explicitly
    // ALLEXCEPT (                             -- put a Date Filter
    //     'Invoice Paid',
    //     'Invoice Paid'[AccountNum],
    //     'Invoice Paid'[LastSettleVoucher],    --ALLEXCEPT is not required here cause 
    //     'Invoice Paid'[DataAreaId],           -- 'Invoice Paid'[AccountNum],'Invoice Paid'[LastSettleVoucher]
    //     'Invoice Paid'[Partition]             -- 'Invoice Paid'[DataAreaId],'Invoice Paid'[Partition]
    // ),                                        -- is explictly mentioned in TREATAS which generates the sum
    TREATAS (                                    -- as per that grouping
        SUMMARIZE (
            'Invoice',
            'Invoice'[AccountNum],
            'Invoice'[Voucher],
            'Invoice'[DataAreaId],
            'Invoice'[Partition]
        ),
        'Invoice Paid'[AccountNum],              
        'Invoice Paid'[LastSettleVoucher],
        'Invoice Paid'[DataAreaId],
        'Invoice Paid'[Partition]
    )
)

@smpa01 Eso hizo el truco, ¡muchas gracias!

@smpa01 Lo estoy haciendo. Se subirá pronto.

Syndicate_Admin
Administrator
Administrator

@River tal vez sea más fácil si solo establece una relación entre la Tabla A y la Tabla B, creando una clave sustituta que es la concatenación de cuenta + factura, una vez que se establece esta relación, entonces solo necesita una medida de suma simple para visualizar y dividir / cortar los datos.

Síguenos en LinkedIn (en inglés)

Más información sobre el formato condicional en Microsoft Reactor

Mi última entrada de blog El poder de usar grupos de cálculo con relaciones inactivas (Parte 1) (perytus.com) Yo lo haría Elogios si mi solución ayudó. 👉 Si puede dedicar tiempo a publicar la pregunta, también puede hacer esfuerzos para felicitar a quien ayudó a resolver su problema. ¡Es una muestra de agradecimiento!

Visítenos en https://perytus.com, su ventanilla única para proyectos/formación/consultoría relacionados con Power BI.

Syndicate_Admin
Administrator
Administrator

Hola

Comparta algunos datos, explique la pregunta y muestre el resultado esperado.

Syndicate_Admin
Administrator
Administrator

@River probar esto?

Measure =
CALCULATE ( 
    SUM ( tblA[Payment] ),
    ALLEXCEPT ( tblA, tblA[Invoice], tblA[Account] ),
    TREATAS (
        SUMMARIZE ( tblB, tblB[Invoice], tblB[Account] ),
        tblA[Invoice],
        tblA[Account]
    )
)

@River tuviste la oportunidad de probar?

Soy un gran fan de TREATAS para mover filtros. Nunca has visto tu uso de resumir dentro de él, ¡me encanta que será prestado! Gracias.

Hi Smpa01

Muchas gracias por la respuesta rápida, mis questios son, ¿dónde viene a jugar el filtro de fecha? y estamos hablando de muchos registros de combinación de 'factura' y 'cuenta'.

@River dijiste que tienes una cortadora para Date.. por lo que no necesitamos contabilizar Date por separado en la expresión DAX. La cortadora está ahí y la expresión lo tiene en cuenta.

Ok, ya veo, lo intentaré.

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors