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
akul
Helper I
Helper I

SumProduct entre la combinación de filas seleccionadas de tablas importadas y de consulta directa

Hola a todos
Tengo 2 tablas A y B. El modo de almacenamiento para A es 'Importar' mientras que para B es 'DirectQuery'. Necesito calcular X (Sumar producto de valor y volumen) / (Suma de volumen) para cada categoría. La siguiente es la estructura para las 2 tablas:
Tabla A: (Modo de almacenamiento: Importación)

CategoríaIdValorVolumen
A10.111
A20.75
B30.87
B40.79
B50.26

Para esta tabla A:
X a 0,287 para la Categoría A ((0,1*11)+(0,7*5))/(11+5)
X a 0,595 para la Categoría B ((0,8*7)+(0,7+9)+(0,2*6))/(7+9+6)

Tabla B: (Modo de almacenamiento: Consulta directa)

IdValor
10.9
40.4

Sin embargo, el resultado que quiero es utilizar todos los valores de la tabla A si el valor de ese identificador no está presente en la tabla B. De lo contrario, utilice los valores de la tabla B. Por lo tanto, en este caso, 'Valor' para el id 1 y 4 en la tabla A debe tomarse de la Tabla B.
De esta manera el resultado sería:
X a 0,837 para la Categoría A ((0,10,9*11)+(0,7*5))/(11+5)
X a 0,472 para la Categoría B ((0,8*7)+(0,70,4*9)+(0,2*6))/(7+9+6)


¡Gracias por tu tiempo!

2 ACCEPTED SOLUTIONS
DataInsights
Super User
Super User

@akul,

Prueba esta solución.

1. Cree una columna calculada en TableA:

Value to Use =
VAR vTableBValue =
    LOOKUPVALUE ( TableB[Value], TableB[Id], TableA[Id] )
VAR vResult =
    IF ( ISBLANK ( vTableBValue ), TableA[Value], vTableBValue )
RETURN
    vResult

2. Crear medida:

Sum Product = 
VAR vNumerator =
    SUMX ( TableA, TableA[Value to Use] * TableA[Volume] )
VAR vDenominator =
    SUM ( TableA[Volume] )
VAR vResult = 
    DIVIDE ( vNumerator, vDenominator )
RETURN
    vResult

DataInsights_0-1603929748636.png





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




View solution in original post

Icey
Community Support
Community Support

Hola @akul ,

laexpresión DAX de @DataInsights funciona bien. Si no tiene otras preguntas, por favor acepte su respuesta como una solución para que las personas que pueden tener la misma pregunta puedan obtener la solución directamente.

Además, solo puede crear una medida de esta manera:

Measure = 
VAR t =
    ADDCOLUMNS (
        TableA,
        "Value_to_use",
            VAR vTableBValue =
                LOOKUPVALUE ( TableB[Value], TableB[Id], TableA[Id] )
            VAR vResult =
                IF ( ISBLANK ( vTableBValue ), TableA[Value], vTableBValue )
            RETURN
                vResult
    )
RETURN
    VAR vNumerator =
        SUMX ( T, [Value_to_use] * [Volume] )
    VAR vDenominator =
        SUMX ( t, [Volume] )
    VAR vResult =
        DIVIDE ( vNumerator, vDenominator )
    RETURN
        vResult

Saludos

Icey

Si este post Ayuda, entonces por favor considere Acédárlo como solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

2 REPLIES 2
Icey
Community Support
Community Support

Hola @akul ,

laexpresión DAX de @DataInsights funciona bien. Si no tiene otras preguntas, por favor acepte su respuesta como una solución para que las personas que pueden tener la misma pregunta puedan obtener la solución directamente.

Además, solo puede crear una medida de esta manera:

Measure = 
VAR t =
    ADDCOLUMNS (
        TableA,
        "Value_to_use",
            VAR vTableBValue =
                LOOKUPVALUE ( TableB[Value], TableB[Id], TableA[Id] )
            VAR vResult =
                IF ( ISBLANK ( vTableBValue ), TableA[Value], vTableBValue )
            RETURN
                vResult
    )
RETURN
    VAR vNumerator =
        SUMX ( T, [Value_to_use] * [Volume] )
    VAR vDenominator =
        SUMX ( t, [Volume] )
    VAR vResult =
        DIVIDE ( vNumerator, vDenominator )
    RETURN
        vResult

Saludos

Icey

Si este post Ayuda, entonces por favor considere Acédárlo como solución para ayudar a los otros miembros a encontrarlo más rápidamente.

DataInsights
Super User
Super User

@akul,

Prueba esta solución.

1. Cree una columna calculada en TableA:

Value to Use =
VAR vTableBValue =
    LOOKUPVALUE ( TableB[Value], TableB[Id], TableA[Id] )
VAR vResult =
    IF ( ISBLANK ( vTableBValue ), TableA[Value], vTableBValue )
RETURN
    vResult

2. Crear medida:

Sum Product = 
VAR vNumerator =
    SUMX ( TableA, TableA[Value to Use] * TableA[Volume] )
VAR vDenominator =
    SUM ( TableA[Volume] )
VAR vResult = 
    DIVIDE ( vNumerator, vDenominator )
RETURN
    vResult

DataInsights_0-1603929748636.png





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




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.