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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Anonymous
Not applicable

SUMX - Conversión de moneda

Hola

Tenemos un requisito para calcular la conversión de moneda y el DAX que se está utilizando es simple -

Importe de ventas: SUMX (Ventas, Ventas[SalesAmt]*CALCULATE ( SUM ( ExchangeRate[ExchRate] ), USERELATIONSHIP ( Sales[Currency], ExchangeRate[Currency] ) ))

Esto funciona bien cuando se usa en conjuntos de datos pequeños, pero cuando tiene que recorrer millones de registros, lo que da un error de memoria, ya que tiene que contener un gran volumen de datos en la memoria.

Transacciones de ventas -

CompanyCodeDocumentNoMonedaSalesAmount
1001001Eur100
1001002Eur200
1001003Cad100
1001004Cad400

Tipo de Cambio -

Moneda-->Tasa USD
Eur1.2
Cad.77

En el ejemplo anterior, hay 4 transacciones y bucle thorugh todos esos registros está afectando el rendimiento.

Si podemos aplicar el procesamiento como se indica a continuación, creo que podemos abevitar SUMX por completo.

  1. Utilice SUM o alguna otra función y resuma los datos en el nivel de código de divisa/granularidad - 2 registros ( 2 monedas - CAD y EUR ).
  2. Aplique la tarifa para esos 2 registros.

Paso 1-

CompanyCodeMonedaSalesAmount
100Eur300
100Cad500

Paso 2-

CompanyCodeMonedaSalesAmountTasaCantidad
100Eur3001.2360
100Cad500.77385

Resultado -

CompanyCodeCantidad
100745

Por favor, aconseje al DAX que lo atraviese. ¡Gracias de antemano!

1 ACCEPTED SOLUTION
v-gizhi-msft
Community Support
Community Support

Hola

Pleaase intenta crear esta tabla calculada:

Table = 
ADDCOLUMNS (
    SUMMARIZE (
        'Sales Transactions',
        'Sales Transactions'[CompanyCode],
        'Sales Transactions'[Currency],
        "Sales", SUM ( 'Sales Transactions'[SalesAmount] )
    ),
    "Rate", CALCULATE (
        SUM ( 'Exchange Rate'[ -->USD Rate] ),
        USERELATIONSHIP ( 'Sales Transactions'[Currency], 'Exchange Rate'[Currency] )
    )
)

20.PNG

A continuación, pruebe esta medida:

Amount = SUMX(DISTINCT('Table'[Currency]),CALCULATE(MAX('Table'[Sales])*MAX('Table'[Rate])))

El resultado muestra:

21.PNG

Aquí está mi archivo pbix de prueba:

pbix

Espero que esto ayude.

Saludos

Giotto Zhi

View solution in original post

2 REPLIES 2
v-gizhi-msft
Community Support
Community Support

Hola

Pleaase intenta crear esta tabla calculada:

Table = 
ADDCOLUMNS (
    SUMMARIZE (
        'Sales Transactions',
        'Sales Transactions'[CompanyCode],
        'Sales Transactions'[Currency],
        "Sales", SUM ( 'Sales Transactions'[SalesAmount] )
    ),
    "Rate", CALCULATE (
        SUM ( 'Exchange Rate'[ -->USD Rate] ),
        USERELATIONSHIP ( 'Sales Transactions'[Currency], 'Exchange Rate'[Currency] )
    )
)

20.PNG

A continuación, pruebe esta medida:

Amount = SUMX(DISTINCT('Table'[Currency]),CALCULATE(MAX('Table'[Sales])*MAX('Table'[Rate])))

El resultado muestra:

21.PNG

Aquí está mi archivo pbix de prueba:

pbix

Espero que esto ayude.

Saludos

Giotto Zhi

Anonymous
Not applicable

Bumping up...

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.

Power BI Carousel June 2024

Power BI Monthly Update - June 2024

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

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

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

Top Solution Authors