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
o59393
Post Prodigy
Post Prodigy

Si la multiplicación de 2 tablas diferentes

Hola a todos

¿Cómo puedo obtener una multiplicación de 2 tablas diferentes que tienen en común una columna con un escenario IF.

La multiplicación consta de 2 valores (ventas e ingrediente 1 valor) de 2 tablas diferentes.

La fórmula (y el resultado esperado) que hice en Excel es el siguiente:

IF STATEMENT.PNG

La multiplicación de estos 2 valores dependerá de los campos de fecha. Más o menos si el valor de la columna I (fecha) está dentro de las columnas E y F, luego aplique la multiplicación si no, leavre un cero.

Adjunto el resultado esperado y pbix.

https://1drv.ms/u/s!ApgeWwGTKtFdhkHJA5ZPhxb-6AoH?e=FJbbY8

Gracias a la comunidad.

14 REPLIES 14
v-alq-msft
Community Support
Community Support

Hola, @o59393

Según su descripción, puede crear una medida de la siguiente manera.

Result = 
var _date = SELECTEDVALUE('Sheet1 (2)'[Date])
var _start = SELECTEDVALUE(Formulas[Validity Start Date])
var _end = SELECTEDVALUE(Formulas[Validity End Date])
var _sales = SELECTEDVALUE('Sheet1 (2)'[Sales])
return
IF(
    ISFILTERED(Formulas[Merge]),
    IF(
        _date>=_start&&_date<=_end,
        _sales*[Ingredient 1],
        0
    )
)

Resultado:

b2.png

Saludos

Allan

Si este postAyuda, entonces por favor considereAcéptelo como la soluciónpara ayudar a los otros miembros a encontrarlo más rápidamente.

Hola @v-alq-msft

El dax es perfecto 😄

Sólo tengo un problema, el resultado se muestra vacío cuando simplemente selecciono la combinación de columnas y la medida de resultado:

emptry.PNG

Supongo que parece vacío ya que para funcionar, tengo que seleccionar todas las columnas que apuntan al valor seleccionado.

Entonces, ¿se puede agregar la fórmula a la tabla Sheet1 (2) como una nueva columna? :

result.PNG

De esa manera, el resultado no dependerá del valor seleccionado y, por lo tanto, arrástrelo y suéltelo en una tabla.

Gracias Allan.

Hola, @o59393

Si desea crear una columna, puede probar la siguiente fórmula.

ResultColumn = 
var _date = 'Sheet1 (2)'[Date]
return
SUMX(
    DISTINCT(
        FILTER(
            RELATEDTABLE(Formulas),
            _date>=Formulas[Validity Start Date]&&
            _date<=Formulas[Validity End Date] && Formulas[Attribute] IN {"Ingredient 1"}
        )
    ),
    'Sheet1 (2)'[Sales]*
        CALCULATE(max(Formulas[Value])) *0.01
)

Resultado:

a1.png

Saludos

Allan

Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Vaya, tienes un don, increíble.

Probé el dax en mi pbix final, contiene más de 800.000 filas y recibí el siguiente mensaje:

full.PNG

¿Alguna idea de cómo obtener más memoria u otra alternativa?

Vea a continuación que en la prueba pbix obtuve la solución que estaba buscando con su medida calculada:

Capture.PNG

Gracias @v-alq-msft !!

Hola, @o59393

He hecho algunas optimizaciones para el dax. Funciona en los datos de ejemplo. Pero no estoy seguro de si funciona en su archivo pbix final. Puede probar la siguiente columna calculada.

ResultColumn = 
var _date = 'Sheet1 (2)'[Date]
var m = 'Sheet1 (2)'[Merge]
return
CALCULATE(
    SUM('Formulas'[Value]),
    'Formulas',
    'Formulas'[Merge] = m ,
    _date>=Formulas[Validity Start Date],
    _date<=Formulas[Validity End Date],
    Formulas[Attribute]="Ingredient 1"
)*'Sheet1 (2)'[Sales]*0.01
/CALCULATE(
        COUNTROWS('Formulas'),
        'Formulas',
        'Formulas'[Merge] = m ,
        _date>=Formulas[Validity Start Date],
        _date<=Formulas[Validity End Date],
        Formulas[Attribute]="Ingredient 1"
)

Resutl:

c1.png

Saludos

Allan

Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Muchas gracias @v-alq-msft fue perfecto

¿Tiene alguna recomendación de cursos en línea para aprender este nivel de dax?

Gracias un millón por tiempo y resolviendo mi problema.

Hola, @o59393

Lo aprendo inicialmente a partir del documento oficial. En realidad, la práctica es perfecta.

Saludos

Allan

Hola @v-alq-msft

Espero que te vaya bien. He probado la columna calculada con el ingrediente 2 en la prueba pbix y funcionó bien:

ingredient22.PNG

¿Cómo siempre que cuando lo hice en el verdadero pbix recibí el mensaje: Se detectó una dependencia circular:

ingredient2.PNG

El código del pbix real para el que funciona (ingrediente 1):

Ingredient 1 = 
var _date = Query1[[Day 445]]]
var m = Query1[Merged]
return
CALCULATE(
    SUM('Formulas'[Value]),
    'Formulas',
    'Formulas'[Merged] = m ,
    _date>=Formulas[Validity Start Date],
    _date<=Formulas[Validity End Date],
    Formulas[Attribute]="Manual Added Sugar (g/100ml)"
)*[Liters]*0.01
/CALCULATE(
        COUNTROWS('Formulas'),
        'Formulas',
        'Formulas'[Merged] = m ,
        _date>=Formulas[Validity Start Date],
        _date<=Formulas[Validity End Date],
        Formulas[Attribute]="Manual Added Sugar (g/100ml)"
)

y para el ingrediente 2 (el de dependencia circular) es:

Ingredient 2 = 
var _date = Query1[[Day 445]]]
var m = Query1[Merged]
return
CALCULATE(
    SUM('Formulas'[Value]),
    'Formulas',
    'Formulas'[Merged] = m ,
    _date>=Formulas[Validity Start Date],
    _date<=Formulas[Validity End Date],
    Formulas[Attribute]="Manual Kcal (/100 ml)"
)*[Liters]*0.01
/CALCULATE(
        COUNTROWS('Formulas'),
        'Formulas',
        'Formulas'[Merged] = m ,
        _date>=Formulas[Validity Start Date],
        _date<=Formulas[Validity End Date],
        Formulas[Attribute]="Manual Kcal (/100 ml)"
)

Más o menos un cambio de lo que hay entre el " "

¿Alguna idea de cómo arreglar esto?

Gracias.

hola @v-alq-msft

Para que conste pude resolver este problema de referencia cirular. En lugar de usar una medida dentro de la función calcular, utilicé el nombre de la columna y trabajé para ambas columnas calculadas con el dax 😄

saludos.

De acuerdo, se trata de practicar.

Si conoce alguna referencia oficial de MSFT por favor hágamelo saber.

Gracias.

Hola, @o59393

Debe ser el resultado si es una medida. Una medida se calcula en un contexto. Y el

El ingrediente 1 la meaursa se ve afectada por la fecha de inicio y la fecha de finalización. ]Si el valor de la columna I (fecha) está dentro del rango, debe calcularse.
Saludos
Allan
amitchandak
Super User
Super User

Multiplicación Contexto común requerido por lo que tiene que utilizar una fórmula como

sumx(summarize(Dim,dim[Item1],"_1",[Measure table1],"_2",[Measure table1]),[_1]*[_2])

Consulte el contexto de fila

https://community.powerbi.com/t5/Community-Blog/Decoding-Direct-Query-in-Power-BI-Part-2-Date-Differ...

hola @amitchandak

Creo que al dax que me falta el intervalo de fechas. ¿Cómo debería la fórmula considerar estos campos de fechas de 2 tablas diferentes?

¡Gracias!

El caso cuando ambos deben tener una dimensión de fecha común.

https://community.powerbi.com/t5/Community-Blog/Decoding-Direct-Query-in-Power-BI-Part-2-Date-Differ...

Cuando quieres tener dos rangos diferentes

https://community.powerbi.com/t5/Community-Blog/Comparing-Data-Across-Date-Ranges/ba-p/823601

Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de que tiene un calendario de fechas y se ha marcado como la fecha en la vista de modelo. Además, únase a él con la columna de fecha de su hecho/s. Consulte:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/

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.